FlashBack Pro is now able to fully backup setups
This commit is contained in:
parent
1a0674c74e
commit
239e898d52
17 changed files with 721 additions and 753 deletions
|
@ -460,12 +460,12 @@
|
|||
"\"/Users/micahgomez/Downloads/iOS-Runtime-Headers-master/PrivateFrameworks\"/**",
|
||||
);
|
||||
INFOPLIST_FILE = FlashBack/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 3.6.1;
|
||||
MARKETING_VERSION = 4;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.mpg13.FlashBack;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
|
@ -486,12 +486,12 @@
|
|||
"\"/Users/micahgomez/Downloads/iOS-Runtime-Headers-master/PrivateFrameworks\"/**",
|
||||
);
|
||||
INFOPLIST_FILE = FlashBack/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 3.6.1;
|
||||
MARKETING_VERSION = 4;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.mpg13.FlashBack;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
|
|
Binary file not shown.
|
@ -1,9 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14868" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15705" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
|
||||
<device id="retina6_5" orientation="portrait" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment version="2304" identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14824"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15706"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
|
@ -11,21 +11,18 @@
|
|||
<!--View Controller-->
|
||||
<scene sceneID="tne-QT-ifu">
|
||||
<objects>
|
||||
<viewController id="BYZ-38-t0r" customClass="ViewController" sceneMemberID="viewController">
|
||||
<viewController modalPresentationStyle="fullScreen" id="BYZ-38-t0r" customClass="ViewController" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Select A Backup" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="gXr-H3-y6A">
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" misplaced="YES" text="Select A Backup" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="gXr-H3-y6A">
|
||||
<rect key="frame" x="20" y="152.33333333333334" width="374" height="83"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="83" id="WEB-gW-7us"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="30"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<view contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="YRz-XN-znu">
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="YRz-XN-znu">
|
||||
<rect key="frame" x="0.0" y="-47" width="414" height="174.33333333333334"/>
|
||||
<subviews>
|
||||
<label opaque="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="FlashBack" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="84C-7a-WER">
|
||||
|
@ -34,14 +31,10 @@
|
|||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<button opaque="NO" contentMode="scaleToFill" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="FKY-5f-bN9">
|
||||
<rect key="frame" x="347" y="111" width="35" height="35"/>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="FKY-5f-bN9">
|
||||
<rect key="frame" x="347" y="110.66666666666664" width="35" height="35.333333333333329"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<rect key="contentStretch" x="0.0" y="0.0" width="0.0" height="0.0"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="35" id="KYC-hC-fim" userLabel="width = 35"/>
|
||||
<constraint firstAttribute="height" constant="35" id="NhC-Tm-u51" userLabel="height = 35"/>
|
||||
</constraints>
|
||||
<color key="tintColor" systemColor="linkColor" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<state key="normal" backgroundImage="create">
|
||||
<color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
|
@ -58,10 +51,13 @@
|
|||
</subviews>
|
||||
<color key="backgroundColor" white="0.33333333333333331" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" secondItem="FKY-5f-bN9" secondAttribute="trailing" constant="20" id="Jdk-QQ-yzs"/>
|
||||
<constraint firstAttribute="bottom" secondItem="84C-7a-WER" secondAttribute="bottom" constant="16" id="P3j-0T-pEU"/>
|
||||
<constraint firstItem="84C-7a-WER" firstAttribute="leading" secondItem="YRz-XN-znu" secondAttribute="leading" constant="21" id="Xal-aC-rHb"/>
|
||||
<constraint firstAttribute="bottom" secondItem="FKY-5f-bN9" secondAttribute="bottom" constant="20" id="wDN-Ue-6NJ"/>
|
||||
<constraint firstAttribute="trailing" secondItem="FKY-5f-bN9" secondAttribute="trailing" constant="32" id="L3B-Ba-R8n"/>
|
||||
<constraint firstAttribute="bottom" secondItem="84C-7a-WER" secondAttribute="bottom" constant="16" id="Vl5-31-ueG"/>
|
||||
<constraint firstItem="84C-7a-WER" firstAttribute="centerY" secondItem="FKY-5f-bN9" secondAttribute="centerY" id="eqG-GR-mW9"/>
|
||||
<constraint firstItem="84C-7a-WER" firstAttribute="top" secondItem="YRz-XN-znu" secondAttribute="top" constant="98.333333333333343" id="fpe-GE-cHE"/>
|
||||
<constraint firstItem="FKY-5f-bN9" firstAttribute="leading" secondItem="84C-7a-WER" secondAttribute="trailing" constant="87.333333333333371" id="hgT-Om-IGD"/>
|
||||
<constraint firstAttribute="bottom" secondItem="FKY-5f-bN9" secondAttribute="bottom" constant="28.333333333333343" id="qtE-Xt-WjB"/>
|
||||
<constraint firstItem="84C-7a-WER" firstAttribute="leading" secondItem="YRz-XN-znu" secondAttribute="leading" constant="21" id="t1o-I6-eka"/>
|
||||
</constraints>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
|
||||
|
@ -69,39 +65,8 @@
|
|||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</view>
|
||||
<visualEffectView opaque="NO" alpha="0.75" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="3iZ-tO-enL">
|
||||
<rect key="frame" x="20" y="241.33333333333334" width="164" height="413.33333333333326"/>
|
||||
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" insetsLayoutMarginsFromSafeArea="NO" id="n8w-C8-2Xw">
|
||||
<rect key="frame" x="0.0" y="0.0" width="164" height="413.33333333333326"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" alpha="0.84999999999999998" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="bgimage" translatesAutoresizingMaskIntoConstraints="NO" id="Xdq-a9-Vkk">
|
||||
<rect key="frame" x="0.0" y="0.0" width="164" height="414"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
|
||||
<integer key="value" value="20"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</imageView>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="Xdq-a9-Vkk" firstAttribute="centerX" secondItem="n8w-C8-2Xw" secondAttribute="centerX" id="JU7-Aa-9Q0"/>
|
||||
<constraint firstItem="Xdq-a9-Vkk" firstAttribute="centerY" secondItem="n8w-C8-2Xw" secondAttribute="centerY" id="SKZ-jL-rWs"/>
|
||||
<constraint firstItem="Xdq-a9-Vkk" firstAttribute="top" secondItem="n8w-C8-2Xw" secondAttribute="top" id="TrS-Cq-b0D"/>
|
||||
<constraint firstItem="Xdq-a9-Vkk" firstAttribute="leading" secondItem="n8w-C8-2Xw" secondAttribute="leading" id="TvJ-YA-p96"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="164" id="deQ-s3-GTb"/>
|
||||
</constraints>
|
||||
<blurEffect style="light"/>
|
||||
</visualEffectView>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="j3D-XF-u37">
|
||||
<rect key="frame" x="20" y="812" width="25" height="25"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="25" id="LXF-kg-B1q"/>
|
||||
<constraint firstAttribute="height" constant="25" id="zYE-fR-39z"/>
|
||||
</constraints>
|
||||
<rect key="frame" x="11.666666666666668" y="812" width="33.333333333333329" height="25"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="25"/>
|
||||
<state key="normal" backgroundImage="details"/>
|
||||
<connections>
|
||||
|
@ -111,10 +76,6 @@
|
|||
<button opaque="NO" contentMode="scaleToFill" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="lNN-hV-Kcy">
|
||||
<rect key="frame" x="169" y="682" width="75" height="75"/>
|
||||
<color key="backgroundColor" white="1" alpha="0.25035761439999998" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="75" id="Rcd-d2-red" userLabel="width = 75"/>
|
||||
<constraint firstAttribute="height" constant="75" id="d3j-Q4-1cW" userLabel="height = 75"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="31"/>
|
||||
<color key="tintColor" red="0.22507366540000001" green="0.48274582620000001" blue="0.83905923370000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<state key="normal" backgroundImage="package"/>
|
||||
|
@ -130,10 +91,6 @@
|
|||
<button opaque="NO" contentMode="scaleToFill" misplaced="YES" contentHorizontalAlignment="fill" contentVerticalAlignment="fill" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="XMB-Cv-YLA">
|
||||
<rect key="frame" x="49" y="682" width="75" height="75"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="75" id="2ju-cX-3np" userLabel="width = 75"/>
|
||||
<constraint firstAttribute="height" constant="75" id="W19-ci-HBM" userLabel="height = 75"/>
|
||||
</constraints>
|
||||
<color key="tintColor" red="0.92126031090000005" green="0.47989189650000003" blue="0.67328914429999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<state key="normal" backgroundImage="restore">
|
||||
<preferredSymbolConfiguration key="preferredSymbolConfiguration" scale="default"/>
|
||||
|
@ -150,10 +107,6 @@
|
|||
<button opaque="NO" contentMode="scaleToFill" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="WN9-tU-bOp">
|
||||
<rect key="frame" x="290" y="682" width="75" height="75"/>
|
||||
<color key="backgroundColor" white="1" alpha="0.25035761439999998" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="75" id="SuA-zx-61M" userLabel="width = 75"/>
|
||||
<constraint firstAttribute="height" constant="101" id="UPq-aB-R1H" userLabel="height = 75"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="31"/>
|
||||
<color key="tintColor" red="0.73051530119999997" green="0.57675904040000003" blue="0.8395984769" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<state key="normal" backgroundImage="update"/>
|
||||
|
@ -166,7 +119,7 @@
|
|||
<action selector="updateBackup:" destination="BYZ-38-t0r" eventType="touchUpInside" id="Jz6-Fn-uAo"/>
|
||||
</connections>
|
||||
</button>
|
||||
<pickerView contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="X4R-sr-2s9">
|
||||
<pickerView contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="X4R-sr-2s9">
|
||||
<rect key="frame" x="192" y="243.33333333333334" width="202" height="411.33333333333326"/>
|
||||
<color key="backgroundColor" red="0.93906646969999996" green="0.57121473550000001" blue="0.4362351894" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color key="tintColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
|
@ -183,10 +136,6 @@
|
|||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Z44-tn-4Km">
|
||||
<rect key="frame" x="344" y="787" width="50" height="50"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="50" id="DD9-vp-1Li"/>
|
||||
<constraint firstAttribute="height" constant="50" id="Yfh-qR-9H9"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="31"/>
|
||||
<color key="tintColor" systemColor="systemRedColor" red="1" green="0.23137254900000001" blue="0.18823529410000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<state key="normal" backgroundImage="delete"/>
|
||||
|
@ -199,37 +148,80 @@
|
|||
<action selector="deleteBackup:" destination="BYZ-38-t0r" eventType="touchUpInside" id="IGQ-c1-zGW"/>
|
||||
</connections>
|
||||
</button>
|
||||
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="9kU-JM-ZmY">
|
||||
<rect key="frame" x="62" y="809" width="51" height="31"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="49" id="s7C-dz-F30"/>
|
||||
</constraints>
|
||||
<connections>
|
||||
<action selector="tweaksSwitch:" destination="BYZ-38-t0r" eventType="valueChanged" id="3aN-1C-vfd"/>
|
||||
</connections>
|
||||
</switch>
|
||||
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="K95-HC-udT">
|
||||
<rect key="frame" x="169" y="812" width="51" height="31"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="49" id="mbl-55-imp"/>
|
||||
</constraints>
|
||||
<connections>
|
||||
<action selector="iconsSwitch:" destination="BYZ-38-t0r" eventType="valueChanged" id="Zjb-7I-kZP"/>
|
||||
</connections>
|
||||
</switch>
|
||||
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="X9U-sY-tNs">
|
||||
<rect key="frame" x="269" y="812" width="51" height="31"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="49" id="7NH-oQ-IJJ"/>
|
||||
</constraints>
|
||||
<connections>
|
||||
<action selector="wallpaperSwitch:" destination="BYZ-38-t0r" eventType="valueChanged" id="tUf-tG-3Gk"/>
|
||||
</connections>
|
||||
</switch>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" alpha="0.84999999999999998" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" image="bgimage" translatesAutoresizingMaskIntoConstraints="NO" id="Xdq-a9-Vkk">
|
||||
<rect key="frame" x="20" y="243" width="165" height="412"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
|
||||
<integer key="value" value="20"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</imageView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstItem="lNN-hV-Kcy" firstAttribute="top" secondItem="WN9-tU-bOp" secondAttribute="top" id="1yf-iZ-Z8y"/>
|
||||
<constraint firstItem="lNN-hV-Kcy" firstAttribute="centerX" secondItem="gXr-H3-y6A" secondAttribute="centerX" id="5yI-H4-Prz"/>
|
||||
<constraint firstItem="lNN-hV-Kcy" firstAttribute="bottom" secondItem="WN9-tU-bOp" secondAttribute="bottom" id="6ZB-Bf-jyH"/>
|
||||
<constraint firstItem="Z44-tn-4Km" firstAttribute="bottom" secondItem="j3D-XF-u37" secondAttribute="bottom" id="808-hO-3rP"/>
|
||||
<constraint firstItem="6Tk-OE-BBY" firstAttribute="bottom" secondItem="j3D-XF-u37" secondAttribute="bottom" constant="25" id="EuU-26-P4u"/>
|
||||
<constraint firstItem="WN9-tU-bOp" firstAttribute="leading" secondItem="lNN-hV-Kcy" secondAttribute="trailing" constant="21.666666666666686" id="F3Z-99-YEf"/>
|
||||
<constraint firstItem="XMB-Cv-YLA" firstAttribute="top" secondItem="3iZ-tO-enL" secondAttribute="bottom" constant="37.999999999999886" id="Hw7-cJ-f1y"/>
|
||||
<constraint firstItem="gXr-H3-y6A" firstAttribute="top" secondItem="YRz-XN-znu" secondAttribute="bottom" constant="31" id="NLx-cb-Z0Y"/>
|
||||
<constraint firstItem="3iZ-tO-enL" firstAttribute="centerY" secondItem="8bC-Xf-vdC" secondAttribute="centerY" id="QOS-5W-kiD"/>
|
||||
<constraint firstItem="gXr-H3-y6A" firstAttribute="trailing" secondItem="8bC-Xf-vdC" secondAttribute="trailingMargin" id="R2H-5X-x8P"/>
|
||||
<constraint firstItem="YRz-XN-znu" firstAttribute="top" secondItem="8bC-Xf-vdC" secondAttribute="topMargin" constant="-97" id="Scc-1v-kuH"/>
|
||||
<constraint firstItem="gXr-H3-y6A" firstAttribute="leading" secondItem="3iZ-tO-enL" secondAttribute="leading" id="T5D-8H-hM2"/>
|
||||
<constraint firstItem="X4R-sr-2s9" firstAttribute="leading" secondItem="3iZ-tO-enL" secondAttribute="trailing" constant="8" id="VRb-uM-jSc"/>
|
||||
<constraint firstItem="XMB-Cv-YLA" firstAttribute="bottom" secondItem="lNN-hV-Kcy" secondAttribute="bottom" id="XgH-6s-wOW"/>
|
||||
<constraint firstItem="WN9-tU-bOp" firstAttribute="baseline" secondItem="lNN-hV-Kcy" secondAttribute="baseline" id="XiT-po-OdT"/>
|
||||
<constraint firstItem="lNN-hV-Kcy" firstAttribute="firstBaseline" secondItem="WN9-tU-bOp" secondAttribute="firstBaseline" id="XuP-8G-Btq"/>
|
||||
<constraint firstItem="XMB-Cv-YLA" firstAttribute="top" secondItem="lNN-hV-Kcy" secondAttribute="top" id="b62-mP-Zpm"/>
|
||||
<constraint firstItem="Z44-tn-4Km" firstAttribute="trailing" secondItem="X4R-sr-2s9" secondAttribute="trailing" id="bTp-1w-V59"/>
|
||||
<constraint firstItem="X4R-sr-2s9" firstAttribute="top" secondItem="gXr-H3-y6A" secondAttribute="bottom" constant="8" id="cBr-K5-WBl"/>
|
||||
<constraint firstItem="3iZ-tO-enL" firstAttribute="bottom" secondItem="X4R-sr-2s9" secondAttribute="bottom" id="cdA-le-7bt"/>
|
||||
<constraint firstItem="gXr-H3-y6A" firstAttribute="trailing" secondItem="X4R-sr-2s9" secondAttribute="trailing" id="dVX-31-fqP"/>
|
||||
<constraint firstItem="6Tk-OE-BBY" firstAttribute="bottom" secondItem="lNN-hV-Kcy" secondAttribute="bottom" constant="94.333333333333371" id="da6-Cp-iCo"/>
|
||||
<constraint firstItem="j3D-XF-u37" firstAttribute="leading" secondItem="3iZ-tO-enL" secondAttribute="leading" id="fam-fG-ISn"/>
|
||||
<constraint firstItem="lNN-hV-Kcy" firstAttribute="leading" secondItem="XMB-Cv-YLA" secondAttribute="trailing" constant="20" id="ja6-Q7-zRM"/>
|
||||
<constraint firstItem="3iZ-tO-enL" firstAttribute="top" secondItem="gXr-H3-y6A" secondAttribute="bottom" constant="6" id="kbG-2p-B9N"/>
|
||||
<constraint firstItem="gXr-H3-y6A" firstAttribute="leading" secondItem="8bC-Xf-vdC" secondAttribute="leadingMargin" id="nNY-OL-is3"/>
|
||||
<constraint firstItem="YRz-XN-znu" firstAttribute="centerX" secondItem="gXr-H3-y6A" secondAttribute="centerX" id="v8g-3m-yZ1"/>
|
||||
<constraint firstItem="YRz-XN-znu" firstAttribute="leading" secondItem="6Tk-OE-BBY" secondAttribute="leading" id="yM9-sD-L7K"/>
|
||||
<constraint firstItem="lNN-hV-Kcy" firstAttribute="leading" secondItem="XMB-Cv-YLA" secondAttribute="trailing" constant="45" id="1z6-VA-4Jm"/>
|
||||
<constraint firstItem="XMB-Cv-YLA" firstAttribute="bottom" secondItem="lNN-hV-Kcy" secondAttribute="bottom" id="2EK-bf-vB0"/>
|
||||
<constraint firstItem="Z44-tn-4Km" firstAttribute="leading" secondItem="X9U-sY-tNs" secondAttribute="trailing" constant="26" id="2Zu-ZC-1Yb"/>
|
||||
<constraint firstItem="lNN-hV-Kcy" firstAttribute="bottom" secondItem="WN9-tU-bOp" secondAttribute="bottom" id="5F8-RZ-4c2"/>
|
||||
<constraint firstItem="j3D-XF-u37" firstAttribute="top" secondItem="K95-HC-udT" secondAttribute="top" id="5UC-o7-76C"/>
|
||||
<constraint firstItem="X4R-sr-2s9" firstAttribute="trailing" secondItem="Z44-tn-4Km" secondAttribute="trailing" id="8Y7-yg-aAw"/>
|
||||
<constraint firstItem="XMB-Cv-YLA" firstAttribute="leading" secondItem="6Tk-OE-BBY" secondAttribute="leading" constant="49" id="8ya-0r-GpF"/>
|
||||
<constraint firstItem="j3D-XF-u37" firstAttribute="centerY" secondItem="9kU-JM-ZmY" secondAttribute="centerY" id="9ST-g4-hVd"/>
|
||||
<constraint firstItem="X4R-sr-2s9" firstAttribute="centerX" secondItem="X9U-sY-tNs" secondAttribute="centerX" id="AZS-g4-nFk"/>
|
||||
<constraint firstItem="gXr-H3-y6A" firstAttribute="centerX" secondItem="lNN-hV-Kcy" secondAttribute="centerX" id="B6P-mh-ikw"/>
|
||||
<constraint firstItem="j3D-XF-u37" firstAttribute="bottom" secondItem="Z44-tn-4Km" secondAttribute="bottom" id="DuK-WW-81x"/>
|
||||
<constraint firstItem="9kU-JM-ZmY" firstAttribute="leading" secondItem="j3D-XF-u37" secondAttribute="trailing" constant="17" id="GdA-fU-Jct"/>
|
||||
<constraint firstItem="K95-HC-udT" firstAttribute="leading" secondItem="9kU-JM-ZmY" secondAttribute="trailing" constant="58" id="HOy-nq-uvm"/>
|
||||
<constraint firstItem="lNN-hV-Kcy" firstAttribute="leading" secondItem="K95-HC-udT" secondAttribute="leading" id="KOj-1k-RSC"/>
|
||||
<constraint firstItem="WN9-tU-bOp" firstAttribute="baseline" secondItem="lNN-hV-Kcy" secondAttribute="baseline" id="KP0-Es-MAO"/>
|
||||
<constraint firstItem="gXr-H3-y6A" firstAttribute="top" secondItem="YRz-XN-znu" secondAttribute="bottom" constant="25" id="Lx3-2W-Yf4"/>
|
||||
<constraint firstItem="gXr-H3-y6A" firstAttribute="trailing" secondItem="X4R-sr-2s9" secondAttribute="trailing" id="MI0-dk-jn6"/>
|
||||
<constraint firstItem="9kU-JM-ZmY" firstAttribute="top" secondItem="XMB-Cv-YLA" secondAttribute="bottom" constant="52" id="NKe-2R-HJ7"/>
|
||||
<constraint firstItem="6Tk-OE-BBY" firstAttribute="trailing" secondItem="WN9-tU-bOp" secondAttribute="trailing" constant="49" id="PnR-uX-lXp"/>
|
||||
<constraint firstItem="6Tk-OE-BBY" firstAttribute="bottom" secondItem="K95-HC-udT" secondAttribute="bottom" constant="19" id="Qmw-5v-ip3"/>
|
||||
<constraint firstItem="Z44-tn-4Km" firstAttribute="top" secondItem="WN9-tU-bOp" secondAttribute="bottom" constant="30" id="RJ2-za-cuR"/>
|
||||
<constraint firstItem="K95-HC-udT" firstAttribute="top" secondItem="X9U-sY-tNs" secondAttribute="top" id="ges-Hw-caM"/>
|
||||
<constraint firstItem="WN9-tU-bOp" firstAttribute="firstBaseline" secondItem="lNN-hV-Kcy" secondAttribute="firstBaseline" id="i5I-co-MwE"/>
|
||||
<constraint firstItem="XMB-Cv-YLA" firstAttribute="top" secondItem="lNN-hV-Kcy" secondAttribute="top" id="i8h-oN-Vfa"/>
|
||||
<constraint firstItem="YRz-XN-znu" firstAttribute="leading" secondItem="6Tk-OE-BBY" secondAttribute="leading" id="iNG-1m-uSS"/>
|
||||
<constraint firstItem="X4R-sr-2s9" firstAttribute="top" secondItem="gXr-H3-y6A" secondAttribute="bottom" constant="8.0000000000000284" id="jzR-DP-s5H"/>
|
||||
<constraint firstItem="XMB-Cv-YLA" firstAttribute="centerX" secondItem="9kU-JM-ZmY" secondAttribute="centerX" id="leX-T2-vb7"/>
|
||||
<constraint firstItem="YRz-XN-znu" firstAttribute="centerX" secondItem="gXr-H3-y6A" secondAttribute="centerX" id="nhQ-sC-qr3"/>
|
||||
<constraint firstItem="lNN-hV-Kcy" firstAttribute="top" secondItem="WN9-tU-bOp" secondAttribute="top" id="pM9-e9-agf"/>
|
||||
<constraint firstItem="gXr-H3-y6A" firstAttribute="leading" secondItem="8bC-Xf-vdC" secondAttribute="leadingMargin" id="sG5-9v-ylP"/>
|
||||
<constraint firstItem="K95-HC-udT" firstAttribute="top" secondItem="lNN-hV-Kcy" secondAttribute="bottom" constant="55" id="sju-aF-t6V"/>
|
||||
<constraint firstItem="X9U-sY-tNs" firstAttribute="leading" secondItem="K95-HC-udT" secondAttribute="trailing" constant="51" id="t3n-RU-S60"/>
|
||||
<constraint firstItem="YRz-XN-znu" firstAttribute="top" secondItem="8bC-Xf-vdC" secondAttribute="topMargin" constant="-91" id="tqR-j7-T3e"/>
|
||||
<constraint firstItem="gXr-H3-y6A" firstAttribute="trailing" secondItem="8bC-Xf-vdC" secondAttribute="trailingMargin" id="uMZ-DY-kLB"/>
|
||||
<constraint firstItem="WN9-tU-bOp" firstAttribute="leading" secondItem="lNN-hV-Kcy" secondAttribute="trailing" constant="46" id="wuP-Ls-71j"/>
|
||||
</constraints>
|
||||
<viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
|
||||
</view>
|
||||
|
|
|
@ -32,6 +32,8 @@
|
|||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
</array>
|
||||
<key>NSPhotoLibraryUsageDescription</key>
|
||||
<string>FlashBack needs access to photos so the user can select the wallpapers to be applied</string>
|
||||
<key>UISupportedInterfaceOrientations~ipad</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
|
|
|
@ -12,65 +12,112 @@
|
|||
#include "NSTask.h"
|
||||
#import "InternalSetWallpaper.h"
|
||||
#import "UIImage+Private.h"
|
||||
#import <Photos/Photos.h>
|
||||
|
||||
@interface ViewController ()
|
||||
|
||||
@interface ViewController () <UINavigationControllerDelegate, UIImagePickerControllerDelegate>
|
||||
@end
|
||||
|
||||
BOOL trial;
|
||||
BOOL tweaksEnabled = YES;
|
||||
NSString *stringTweaksEnabled = @"YES";
|
||||
BOOL iconsEnabled = YES;
|
||||
NSString *stringIconsEnabled = @"YES";
|
||||
BOOL wallpaperEnabled = YES;
|
||||
NSString *stringWallpaperEnabled = @"YES";
|
||||
|
||||
NSArray *_backupFolderArray;
|
||||
NSString *_backupDirectory;
|
||||
NSMutableString *sysCopyPrefsPath;
|
||||
NSMutableString *sysCopySBPath;
|
||||
NSMutableString *newBackupPrefsPath;
|
||||
NSArray *_springBoardFolderItemsRaw;
|
||||
NSArray *_filteredSpringBoardFolderItems;
|
||||
NSMutableString *newBackupSBPath;
|
||||
NSMutableString *newBackupWPPath;
|
||||
NSArray *_prefsFolderItemsRaw;
|
||||
NSArray *_sbFolderItemsRaw;
|
||||
NSArray *_filteredPrefsFolderItems;
|
||||
NSArray *_filteredSBFolderItems;
|
||||
NSMutableString *selectedBackupImageURL;
|
||||
NSMutableString *selectedBackupURL;
|
||||
NSString *backupNameSelected;
|
||||
|
||||
int selectedWallpaperStyle;
|
||||
|
||||
NSMutableString *lightHomeWPPath;
|
||||
NSMutableString *darkHomeWPPath;
|
||||
NSMutableString *lightLockWPPath;
|
||||
NSMutableString *darkLockWPPath;
|
||||
|
||||
UIImage *lightHome;
|
||||
UIImage *darkHome;
|
||||
UIImage *lightLock;
|
||||
UIImage *darkLock;
|
||||
|
||||
|
||||
|
||||
@implementation ViewController
|
||||
|
||||
- (IBAction)tweaksSwitch:(id)sender {
|
||||
|
||||
tweaksEnabled = [sender isOn];
|
||||
stringTweaksEnabled = tweaksEnabled == YES ? @"YES" : @"NO";
|
||||
NSLog(@"%@", stringTweaksEnabled);
|
||||
|
||||
}
|
||||
|
||||
- (IBAction)iconsSwitch:(id)sender {
|
||||
|
||||
iconsEnabled = [sender isOn];
|
||||
stringIconsEnabled = iconsEnabled == YES ? @"YES" : @"NO";
|
||||
NSLog(@"%@", stringIconsEnabled);
|
||||
|
||||
}
|
||||
|
||||
- (IBAction)wallpaperSwitch:(id)sender {
|
||||
|
||||
wallpaperEnabled = [sender isOn];
|
||||
stringWallpaperEnabled = wallpaperEnabled == YES ? @"YES" : @"NO";
|
||||
NSLog(@"%@", stringWallpaperEnabled);
|
||||
|
||||
}
|
||||
|
||||
- (IBAction)createBackup:(id)sender {
|
||||
|
||||
UIAlertController *createBackupAlert = [UIAlertController alertControllerWithTitle:@"Enter the Backup Name" message:@"Please do not use special symbols. Use only letters and numbers, no spaces." preferredStyle:UIAlertControllerStyleAlert];
|
||||
[createBackupAlert addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
|
||||
textField.placeholder = @"Backup Name";
|
||||
textField.secureTextEntry = NO;
|
||||
}];
|
||||
UIAlertAction *confirmAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
|
||||
NSLog(@"Backup name is :%@", [[createBackupAlert textFields][0] text]);
|
||||
NSString *newBackupName=[[createBackupAlert textFields][0] text];
|
||||
UIAlertController *createBackupAlert = [UIAlertController alertControllerWithTitle:@"Enter the Backup Name" message:@"Please do not use special symbols. Use only letters and numbers, no spaces." preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
if([[[createBackupAlert textFields][0] text] isEqual:@""]){
|
||||
NSLog(@"empty backup name!");
|
||||
}
|
||||
else{
|
||||
NSLog(@"Creating Backup");
|
||||
[createBackupAlert addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
|
||||
textField.placeholder = @"Backup Name";
|
||||
textField.secureTextEntry = NO;
|
||||
}];
|
||||
UIAlertAction *confirmAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
|
||||
NSLog(@"Backup name is :%@", [[createBackupAlert textFields][0] text]);
|
||||
NSString *newBackupName=[[createBackupAlert textFields][0] text];
|
||||
|
||||
if([[[createBackupAlert textFields][0] text] isEqual:@""]){
|
||||
NSLog(@"empty backup name!");
|
||||
}
|
||||
else{
|
||||
NSLog(@"Creating Backup");
|
||||
|
||||
//MARK: Create Backup Code
|
||||
//MARK: Create Backup Code
|
||||
|
||||
_springBoardFolderItemsRaw = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:@"/var/mobile/Library/Preferences/" error:nil];
|
||||
|
||||
NSLog(@"_SpringBoardFolderItemsRaw:%@", _springBoardFolderItemsRaw);
|
||||
//MARK: Backup preferences
|
||||
if(tweaksEnabled == YES){
|
||||
_prefsFolderItemsRaw = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:@"/var/mobile/Library/Preferences/" error:nil];
|
||||
|
||||
NSLog(@"_prefsFolderItemsRaw:%@", _prefsFolderItemsRaw);
|
||||
|
||||
NSPredicate *notApplePlistPredicate = [NSPredicate predicateWithFormat:@"NOT(SELF contains[c] 'apple')"];
|
||||
//NSPredicate *isPlistPredicate = [NSPredicate predicateWithFormat:@"SELF endswith[c] '.plist'"];
|
||||
NSPredicate *isPrefsPredicate = [NSPredicate predicateWithFormat:@"SELF LIKE[c] '*.*.*.plist'"];
|
||||
|
||||
NSArray *_filteredSpringBoardFolderItems = [_springBoardFolderItemsRaw filteredArrayUsingPredicate:notApplePlistPredicate];
|
||||
//_filteredSpringBoardFolderItems = [_filteredSpringBoardFolderItems filteredArrayUsingPredicate:isPlistPredicate];
|
||||
_filteredSpringBoardFolderItems = [_filteredSpringBoardFolderItems filteredArrayUsingPredicate:isPrefsPredicate];
|
||||
NSArray *_filteredPrefsFolderItems = [_prefsFolderItemsRaw filteredArrayUsingPredicate:notApplePlistPredicate];
|
||||
//_filteredPrefsFolderItems = [_filteredPrefsFolderItems filteredArrayUsingPredicate:isPlistPredicate];
|
||||
_filteredPrefsFolderItems = [_filteredPrefsFolderItems filteredArrayUsingPredicate:isPrefsPredicate];
|
||||
|
||||
NSLog(@"_SpringBoardFolderItems:%@", _filteredSpringBoardFolderItems);
|
||||
NSLog(@"_prefsFolderItems:%@", _filteredPrefsFolderItems);
|
||||
|
||||
|
||||
|
||||
for (id file in _filteredSpringBoardFolderItems){
|
||||
for (id file in _filteredPrefsFolderItems){
|
||||
|
||||
sysCopyPrefsPath = [NSMutableString stringWithString: @"/private/var/mobile/Library/Preferences/"];
|
||||
[sysCopyPrefsPath appendString: file];
|
||||
|
@ -92,63 +139,301 @@ UIImage *darkHome;
|
|||
|
||||
//if ( ([[NSFileManager defaultManager] isReadableFileAtPath:sysCopyPrefsPath]) && ([[NSFileManager defaultManager] isWritableFileAtPath:newBackupPrefsPath]) ){
|
||||
|
||||
NSLog(@"Copying:%@", file);
|
||||
if ([[NSFileManager defaultManager] copyItemAtURL:sysCopyPrefsPathURL toURL:newBackupPrefsPathURL error:nil] == YES) {
|
||||
NSLog (@"Copy successful - %@", file);
|
||||
} else {
|
||||
NSLog (@"Copy failed - %@", file);
|
||||
}
|
||||
|
||||
//}
|
||||
|
||||
NSLog(@"Copying:%@", file);
|
||||
if ([[NSFileManager defaultManager] copyItemAtURL:sysCopyPrefsPathURL toURL:newBackupPrefsPathURL error:nil] == YES) {
|
||||
NSLog (@"Copy successful - %@", file);
|
||||
} else {
|
||||
NSLog (@"Copy failed - %@", file);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*NSTask *createTask = [[NSTask alloc] init];
|
||||
[createTask setLaunchPath:@"/bin/bash"];
|
||||
[createTask setArguments:@[ @"FBCreate", newBackupName]];
|
||||
[createTask launch];
|
||||
[createTask waitUntilExit];*/
|
||||
|
||||
UIAlertController * finishedCreateAlert= [UIAlertController
|
||||
alertControllerWithTitle:@"Backup Creation Completed"
|
||||
message:@"The backup has been successfully created"
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
UIAlertAction* ok = [UIAlertAction
|
||||
actionWithTitle:@"OK"
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
|
||||
_backupFolderArray = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:@"/Library/FlashBack/Backups/" error:nil];
|
||||
[self->selectedBackupPickerView reloadAllComponents];
|
||||
|
||||
[finishedCreateAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
|
||||
}];
|
||||
[finishedCreateAlert addAction:ok];
|
||||
|
||||
[self presentViewController:finishedCreateAlert animated:YES completion:nil];
|
||||
|
||||
/*pid_t pid;
|
||||
int status;
|
||||
const char* args[] = {"killall", "backboardd", NULL, NULL};
|
||||
posix_spawn(&pid, "/bin/bash", NULL, NULL, (char* const*)args, NULL);
|
||||
waitpid(pid, &status, WEXITED);*/
|
||||
|
||||
}
|
||||
//MARK: End backup preferences
|
||||
//MARK: Backup Springboard
|
||||
if(iconsEnabled == YES){
|
||||
|
||||
_sbFolderItemsRaw = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:@"/var/mobile/Library/SpringBoard/" error:nil];
|
||||
|
||||
NSLog(@"_sbFolderItemsRaw:%@", _sbFolderItemsRaw);
|
||||
|
||||
NSPredicate *isIconPlistPredicate = [NSPredicate predicateWithFormat:@"(SELF contains[c] 'icon')"];
|
||||
//NSPredicate *isPlistPredicate = [NSPredicate predicateWithFormat:@"SELF endswith[c] '.plist'"];
|
||||
//NSPredicate *isPrefsPredicate = [NSPredicate predicateWithFormat:@"SELF LIKE[c] '*.*.*.plist'"];
|
||||
|
||||
NSArray *_filteredSBFolderItems = [_sbFolderItemsRaw filteredArrayUsingPredicate:isIconPlistPredicate];
|
||||
//_filteredPrefsFolderItems = [_filteredPrefsFolderItems filteredArrayUsingPredicate:isPlistPredicate];
|
||||
//_filteredPrefsFolderItems = [_filteredPrefsFolderItems filteredArrayUsingPredicate:isPrefsPredicate];
|
||||
|
||||
NSLog(@"_sbFolderItems:%@", _filteredSBFolderItems);
|
||||
|
||||
|
||||
}];
|
||||
[createBackupAlert addAction:confirmAction];
|
||||
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
|
||||
NSLog(@"Canelled");
|
||||
}];
|
||||
[createBackupAlert addAction:cancelAction];
|
||||
[self presentViewController:createBackupAlert animated:YES completion:nil];
|
||||
for (id file in _filteredSBFolderItems){
|
||||
|
||||
sysCopySBPath = [NSMutableString stringWithString: @"/private/var/mobile/Library/SpringBoard/"];
|
||||
[sysCopySBPath appendString: file];
|
||||
|
||||
NSLog(@"File_Old_Location:%@", sysCopySBPath);
|
||||
|
||||
//newBackupPrefsPath = [NSMutableString stringWithString: @"/private/var/mobile/Documents/FlashBack/Backups/"];
|
||||
newBackupSBPath = [NSMutableString stringWithString: @"/Library/FlashBack/Backups/"];
|
||||
[newBackupSBPath appendString: newBackupName];
|
||||
[newBackupSBPath appendString: @"/SpringBoard/"];
|
||||
[[NSFileManager defaultManager] createDirectoryAtPath:newBackupSBPath withIntermediateDirectories:YES attributes:nil error:NULL];
|
||||
[newBackupSBPath appendString: file];
|
||||
|
||||
NSLog(@"File_New_Location:%@", newBackupSBPath);
|
||||
|
||||
NSURL *sysCopySBPathURL = [NSURL fileURLWithPath:sysCopySBPath];
|
||||
NSURL *newBackupSBPathURL = [NSURL fileURLWithPath:newBackupSBPath];
|
||||
|
||||
|
||||
//if ( ([[NSFileManager defaultManager] isReadableFileAtPath:sysCopyPrefsPath]) && ([[NSFileManager defaultManager] isWritableFileAtPath:newBackupPrefsPath]) ){
|
||||
|
||||
NSLog(@"Copying:%@", file);
|
||||
if ([[NSFileManager defaultManager] copyItemAtURL:sysCopySBPathURL toURL:newBackupSBPathURL error:nil] == YES) {
|
||||
NSLog (@"Copy successful - %@", file);
|
||||
} else {
|
||||
NSLog (@"Copy failed - %@", file);
|
||||
}
|
||||
}
|
||||
}
|
||||
//MARK: End backup Springboard
|
||||
|
||||
/*
|
||||
UIImagePickerController* picker = [[UIImagePickerController alloc] init];
|
||||
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
|
||||
picker.delegate = self;
|
||||
[self presentViewController:picker animated:YES completion:NULL];
|
||||
*/
|
||||
|
||||
//MARK: Backup Wallpapers
|
||||
if(wallpaperEnabled == YES){
|
||||
|
||||
newBackupWPPath = [NSMutableString stringWithString: @"/Library/FlashBack/Backups/"];
|
||||
[newBackupWPPath appendString: newBackupName];
|
||||
[newBackupWPPath appendString: @"/Wallpaper/"];
|
||||
[[NSFileManager defaultManager] createDirectoryAtPath:newBackupWPPath withIntermediateDirectories:YES attributes:nil error:NULL];
|
||||
|
||||
lightHomeWPPath = [NSMutableString stringWithString: newBackupWPPath];
|
||||
[lightHomeWPPath appendString: @"lightHomeWP.png"];
|
||||
NSLog(@"%@", lightHomeWPPath);
|
||||
|
||||
darkHomeWPPath = [NSMutableString stringWithString: newBackupWPPath];
|
||||
[darkHomeWPPath appendString: @"darkHomeWP.png"];
|
||||
NSLog(@"%@", darkHomeWPPath);
|
||||
|
||||
lightLockWPPath = [NSMutableString stringWithString: newBackupWPPath];
|
||||
[lightLockWPPath appendString: @"lightLockWP.png"];
|
||||
NSLog(@"%@", lightLockWPPath);
|
||||
|
||||
darkLockWPPath = [NSMutableString stringWithString: newBackupWPPath];
|
||||
[darkLockWPPath appendString: @"darkLockWP.png"];
|
||||
NSLog(@"%@", darkLockWPPath);
|
||||
|
||||
[self selectWallpaperImageFunc];
|
||||
}
|
||||
//MARK: End backup wallpapers
|
||||
|
||||
UIAlertController * finishedCreateAlert= [UIAlertController
|
||||
alertControllerWithTitle:@"Backup Creation Completed"
|
||||
message:@"The backup has been successfully created"
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
UIAlertAction* ok = [UIAlertAction
|
||||
actionWithTitle:@"OK"
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
|
||||
_backupFolderArray = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:@"/Library/FlashBack/Backups/" error:nil];
|
||||
[self->selectedBackupPickerView reloadAllComponents];
|
||||
|
||||
[finishedCreateAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
|
||||
}];
|
||||
[finishedCreateAlert addAction:ok];
|
||||
|
||||
[self presentViewController:finishedCreateAlert animated:YES completion:nil];
|
||||
|
||||
}
|
||||
|
||||
|
||||
}];
|
||||
[createBackupAlert addAction:confirmAction];
|
||||
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
|
||||
NSLog(@"Canelled");
|
||||
}];
|
||||
[createBackupAlert addAction:cancelAction];
|
||||
[self presentViewController:createBackupAlert animated:YES completion:nil];
|
||||
}
|
||||
|
||||
//MARK: Wallpaper selection code
|
||||
-(void)selectWallpaperImageFunc{
|
||||
UIAlertController *wallpaperSelectionAlert = [UIAlertController alertControllerWithTitle:@"Select Setup Wallpapers" message:@"Choose the wallpapers to apply for both Light and Dark mode on the Home and Lock Screen." preferredStyle:UIAlertControllerStyleActionSheet];
|
||||
UIAlertAction* lightHomeAction = [UIAlertAction actionWithTitle:@"Light Mode Home Screen"
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
selectedWallpaperStyle = 1;
|
||||
|
||||
UIImagePickerController* picker = [[UIImagePickerController alloc] init];
|
||||
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
|
||||
picker.delegate = self;
|
||||
self.modalInPresentation = YES;
|
||||
[self presentViewController:picker animated:YES completion:nil];
|
||||
}];
|
||||
UIAlertAction* darkHomeAction = [UIAlertAction actionWithTitle:@"Dark Mode Home Screen"
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
selectedWallpaperStyle = 2;
|
||||
|
||||
UIImagePickerController* picker = [[UIImagePickerController alloc] init];
|
||||
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
|
||||
picker.delegate = self;
|
||||
self.modalInPresentation = YES;
|
||||
[self presentViewController:picker animated:YES completion:nil];
|
||||
}];
|
||||
UIAlertAction* lightLockAction = [UIAlertAction actionWithTitle:@"Light Mode Lock Screen"
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
selectedWallpaperStyle = 3;
|
||||
|
||||
UIImagePickerController* picker = [[UIImagePickerController alloc] init];
|
||||
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
|
||||
picker.delegate = self;
|
||||
self.modalInPresentation = YES;
|
||||
[self presentViewController:picker animated:YES completion:nil];
|
||||
}];
|
||||
UIAlertAction* darkLockAction = [UIAlertAction actionWithTitle:@"Dark Mode Lock Screen"
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
selectedWallpaperStyle = 4;
|
||||
|
||||
UIImagePickerController* picker = [[UIImagePickerController alloc] init];
|
||||
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
|
||||
picker.delegate = self;
|
||||
self.modalInPresentation = YES;
|
||||
[self presentViewController:picker animated:NO completion:nil];
|
||||
}];
|
||||
UIAlertAction* doneAction = [UIAlertAction actionWithTitle:@"Done"
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
if((lightHome == nil) || (darkHome == nil) || (lightLock == nil) || (darkLock == nil)){
|
||||
UIAlertController * finishedCreateAlert= [UIAlertController
|
||||
alertControllerWithTitle:@"Backup Creation Error"
|
||||
message:@"The wallpapers were unable to be backed up. Please try again and make sure that all wallpapers are set before pressing done."
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
UIAlertAction* ok = [UIAlertAction
|
||||
actionWithTitle:@"OK"
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
_backupFolderArray = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:@"/Library/FlashBack/Backups/" error:nil];
|
||||
[self->selectedBackupPickerView reloadAllComponents];
|
||||
[finishedCreateAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
|
||||
}];
|
||||
[finishedCreateAlert addAction:ok];
|
||||
|
||||
[self presentViewController:finishedCreateAlert animated:YES completion:nil];
|
||||
}
|
||||
else{
|
||||
[UIImagePNGRepresentation(lightHome) writeToFile:lightHomeWPPath atomically:YES];
|
||||
[UIImagePNGRepresentation(darkHome) writeToFile:darkHomeWPPath atomically:YES];
|
||||
[UIImagePNGRepresentation(lightLock) writeToFile:lightLockWPPath atomically:YES];
|
||||
[UIImagePNGRepresentation(darkLock) writeToFile:darkLockWPPath atomically:YES];
|
||||
[wallpaperSelectionAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
|
||||
UIAlertController * finishedCreateAlert= [UIAlertController
|
||||
alertControllerWithTitle:@"Backup Creation Completed"
|
||||
message:@"The backup has been successfully created"
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
UIAlertAction* ok = [UIAlertAction
|
||||
actionWithTitle:@"OK"
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
|
||||
_backupFolderArray = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:@"/Library/FlashBack/Backups/" error:nil];
|
||||
[self->selectedBackupPickerView reloadAllComponents];
|
||||
|
||||
[finishedCreateAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
|
||||
}];
|
||||
[finishedCreateAlert addAction:ok];
|
||||
|
||||
[self presentViewController:finishedCreateAlert animated:YES completion:nil];
|
||||
}
|
||||
}];
|
||||
UIAlertAction* cancel = [UIAlertAction actionWithTitle:@"Cancel"
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:^(UIAlertAction * action) {
|
||||
UIAlertController * finishedCreateAlert= [UIAlertController
|
||||
alertControllerWithTitle:@"Backup Creation Completed"
|
||||
message:@"The backup has been successfully created without any wallpapers"
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
UIAlertAction* ok = [UIAlertAction
|
||||
actionWithTitle:@"OK"
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
|
||||
_backupFolderArray = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:@"/Library/FlashBack/Backups/" error:nil];
|
||||
[self->selectedBackupPickerView reloadAllComponents];
|
||||
|
||||
[finishedCreateAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
|
||||
}];
|
||||
[finishedCreateAlert addAction:ok];
|
||||
|
||||
[self presentViewController:finishedCreateAlert animated:YES completion:nil];
|
||||
}];
|
||||
[wallpaperSelectionAlert addAction:lightHomeAction];
|
||||
[wallpaperSelectionAlert addAction:lightLockAction];
|
||||
[wallpaperSelectionAlert addAction:darkHomeAction];
|
||||
[wallpaperSelectionAlert addAction:darkLockAction];
|
||||
[wallpaperSelectionAlert addAction:doneAction];
|
||||
[wallpaperSelectionAlert addAction:cancel];
|
||||
[self presentViewController:wallpaperSelectionAlert animated:YES completion:nil];
|
||||
}
|
||||
|
||||
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info
|
||||
{
|
||||
|
||||
|
||||
switch (selectedWallpaperStyle) {
|
||||
case 1:
|
||||
lightHome = info[UIImagePickerControllerOriginalImage];
|
||||
break;
|
||||
case 2:
|
||||
darkHome = info[UIImagePickerControllerOriginalImage];
|
||||
break;
|
||||
case 3:
|
||||
lightLock = info[UIImagePickerControllerOriginalImage];
|
||||
break;
|
||||
case 4:
|
||||
darkLock = info[UIImagePickerControllerOriginalImage];
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
[picker dismissViewControllerAnimated:YES completion:nil];
|
||||
[self selectWallpaperImageFunc];
|
||||
}
|
||||
|
||||
-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
|
||||
{
|
||||
NSLog(@"picker cancelled");
|
||||
[picker dismissViewControllerAnimated:YES completion:nil];
|
||||
[self selectWallpaperImageFunc];
|
||||
}
|
||||
|
||||
//MARK: End wallpaper selection code
|
||||
|
||||
- (IBAction)restoreBackup:(id)sender {
|
||||
|
||||
lightHome = [UIImage imageWithContentsOfFile:@"/Library/FlashBack/Backups/3/SBFolder/LockBackgroundThumbnail.jpg"];
|
||||
|
@ -158,68 +443,68 @@ UIImage *darkHome;
|
|||
|
||||
/*if (backupNameSelected == nil){
|
||||
|
||||
UIAlertController * selectBackupAlert= [UIAlertController
|
||||
alertControllerWithTitle:@"Select a Backup!"
|
||||
message:@"Scroll through the list then let it settle on an item to select the backup."
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
UIAlertController * selectBackupAlert= [UIAlertController
|
||||
alertControllerWithTitle:@"Select a Backup!"
|
||||
message:@"Scroll through the list then let it settle on an item to select the backup."
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
UIAlertAction* ok = [UIAlertAction
|
||||
actionWithTitle:@"ok"
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
[selectBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
UIAlertAction* ok = [UIAlertAction
|
||||
actionWithTitle:@"ok"
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
[selectBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
|
||||
}];
|
||||
}];
|
||||
|
||||
[selectBackupAlert addAction:ok];
|
||||
[selectBackupAlert addAction:ok];
|
||||
|
||||
[self presentViewController:selectBackupAlert animated:YES completion:nil];
|
||||
[self presentViewController:selectBackupAlert animated:YES completion:nil];
|
||||
|
||||
}
|
||||
else{
|
||||
}
|
||||
else{
|
||||
|
||||
UIAlertController * restoreBackupAlert= [UIAlertController
|
||||
alertControllerWithTitle:@"Restore Backup"
|
||||
message:@"Your device will revert to the selected backup! Please wait for your device to respring."
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
UIAlertController * restoreBackupAlert= [UIAlertController
|
||||
alertControllerWithTitle:@"Restore Backup"
|
||||
message:@"Your device will revert to the selected backup! Please wait for your device to respring."
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
UIAlertAction* ok = [UIAlertAction
|
||||
actionWithTitle:@"OK"
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
UIAlertAction* ok = [UIAlertAction
|
||||
actionWithTitle:@"OK"
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
|
||||
//RUN RESTORE SCRIPT
|
||||
//RUN RESTORE SCRIPT
|
||||
|
||||
NSTask *restoreTask = [[NSTask alloc] init];
|
||||
[restoreTask setLaunchPath:@"/bin/bash"];
|
||||
[restoreTask setArguments:@[ @"FBRestore", backupNameSelected]];
|
||||
[restoreTask launch];
|
||||
NSTask *restoreTask = [[NSTask alloc] init];
|
||||
[restoreTask setLaunchPath:@"/bin/bash"];
|
||||
[restoreTask setArguments:@[ @"FBRestore", backupNameSelected]];
|
||||
[restoreTask launch];
|
||||
|
||||
UIAlertController * finishedRestoreAlert= [UIAlertController
|
||||
alertControllerWithTitle:@"Restoring from backup"
|
||||
message:@"Your device will respring when the process is completed."
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
[self presentViewController:finishedRestoreAlert animated:YES completion:nil];
|
||||
UIAlertController * finishedRestoreAlert= [UIAlertController
|
||||
alertControllerWithTitle:@"Restoring from backup"
|
||||
message:@"Your device will respring when the process is completed."
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
[self presentViewController:finishedRestoreAlert animated:YES completion:nil];
|
||||
|
||||
[restoreBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
[restoreBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
|
||||
}];
|
||||
UIAlertAction* cancel = [UIAlertAction
|
||||
actionWithTitle:@"Cancel"
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
[restoreBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
}];
|
||||
UIAlertAction* cancel = [UIAlertAction
|
||||
actionWithTitle:@"Cancel"
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
[restoreBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
|
||||
}];
|
||||
}];
|
||||
|
||||
[restoreBackupAlert addAction:cancel];
|
||||
[restoreBackupAlert addAction:ok];
|
||||
[restoreBackupAlert addAction:cancel];
|
||||
[restoreBackupAlert addAction:ok];
|
||||
|
||||
[self presentViewController:restoreBackupAlert animated:YES completion:nil];
|
||||
}*/
|
||||
[self presentViewController:restoreBackupAlert animated:YES completion:nil];
|
||||
}*/
|
||||
}
|
||||
|
||||
- (IBAction)updateBackup:(id)sender {
|
||||
|
@ -236,9 +521,9 @@ UIImage *darkHome;
|
|||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
[updateBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
[updateBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
|
||||
}];
|
||||
}];
|
||||
|
||||
[updateBackupAlert addAction:ok];
|
||||
|
||||
|
@ -259,51 +544,51 @@ UIImage *darkHome;
|
|||
{
|
||||
|
||||
|
||||
[updateBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
[updateBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
|
||||
NSTask *deleteTask = [[NSTask alloc] init];
|
||||
[deleteTask setLaunchPath:@"/bin/bash"];
|
||||
[deleteTask setArguments:@[ @"FBDelete", backupNameSelected]];
|
||||
[deleteTask launch];
|
||||
[deleteTask waitUntilExit];
|
||||
NSTask *deleteTask = [[NSTask alloc] init];
|
||||
[deleteTask setLaunchPath:@"/bin/bash"];
|
||||
[deleteTask setArguments:@[ @"FBDelete", backupNameSelected]];
|
||||
[deleteTask launch];
|
||||
[deleteTask waitUntilExit];
|
||||
|
||||
NSTask *createTask = [[NSTask alloc] init];
|
||||
[createTask setLaunchPath:@"/bin/bash"];
|
||||
[createTask setArguments:@[ @"FBCreate", backupNameSelected]];
|
||||
[createTask launch];
|
||||
[createTask waitUntilExit];
|
||||
NSTask *createTask = [[NSTask alloc] init];
|
||||
[createTask setLaunchPath:@"/bin/bash"];
|
||||
[createTask setArguments:@[ @"FBCreate", backupNameSelected]];
|
||||
[createTask launch];
|
||||
[createTask waitUntilExit];
|
||||
|
||||
UIAlertController * finishedUpdateAlert= [UIAlertController
|
||||
alertControllerWithTitle:@"Backup Update Completed"
|
||||
message:@"The backup has been successfully updated"
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
UIAlertController * finishedUpdateAlert= [UIAlertController
|
||||
alertControllerWithTitle:@"Backup Update Completed"
|
||||
message:@"The backup has been successfully updated"
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
UIAlertAction* ok = [UIAlertAction
|
||||
actionWithTitle:@"OK"
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
UIAlertAction* ok = [UIAlertAction
|
||||
actionWithTitle:@"OK"
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
|
||||
_backupFolderArray = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:@"/Library/FlashBack/Backups/" error:nil];
|
||||
[self->selectedBackupPickerView reloadAllComponents];
|
||||
_backupFolderArray = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:@"/Library/FlashBack/Backups/" error:nil];
|
||||
[self->selectedBackupPickerView reloadAllComponents];
|
||||
|
||||
[finishedUpdateAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
[finishedUpdateAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
|
||||
}];
|
||||
[finishedUpdateAlert addAction:ok];
|
||||
}];
|
||||
[finishedUpdateAlert addAction:ok];
|
||||
|
||||
[self presentViewController:finishedUpdateAlert animated:YES completion:nil];
|
||||
[self presentViewController:finishedUpdateAlert animated:YES completion:nil];
|
||||
|
||||
|
||||
}];
|
||||
}];
|
||||
UIAlertAction* cancel = [UIAlertAction
|
||||
actionWithTitle:@"Cancel"
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
[updateBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
[updateBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
|
||||
}];
|
||||
}];
|
||||
|
||||
[updateBackupAlert addAction:cancel];
|
||||
[updateBackupAlert addAction:ok];
|
||||
|
@ -328,9 +613,9 @@ UIImage *darkHome;
|
|||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
[selectBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
[selectBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
|
||||
}];
|
||||
}];
|
||||
|
||||
[selectBackupAlert addAction:ok];
|
||||
|
||||
|
@ -350,34 +635,34 @@ UIImage *darkHome;
|
|||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
|
||||
UIAlertController * packageBackupWait= [UIAlertController
|
||||
alertControllerWithTitle:@"Backup DEB"
|
||||
message:@"The backup is being created. Please Wait. This dialogue will will be dismissed when finished. The DEB can be found in [/User/Documents/FlashBackDEBs]"
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
UIAlertController * packageBackupWait= [UIAlertController
|
||||
alertControllerWithTitle:@"Backup DEB"
|
||||
message:@"The backup is being created. Please Wait. This dialogue will will be dismissed when finished. The DEB can be found in [/User/Documents/FlashBackDEBs]"
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[packageBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
[packageBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
|
||||
[self presentViewController:packageBackupWait animated:YES completion:nil];
|
||||
[self presentViewController:packageBackupWait animated:YES completion:nil];
|
||||
|
||||
|
||||
NSTask *packageTask = [[NSTask alloc] init];
|
||||
[packageTask setLaunchPath:@"/bin/bash"];
|
||||
[packageTask setArguments:@[ @"FBPackage", backupNameSelected]];
|
||||
[packageTask launch];
|
||||
[packageTask waitUntilExit];
|
||||
NSTask *packageTask = [[NSTask alloc] init];
|
||||
[packageTask setLaunchPath:@"/bin/bash"];
|
||||
[packageTask setArguments:@[ @"FBPackage", backupNameSelected]];
|
||||
[packageTask launch];
|
||||
[packageTask waitUntilExit];
|
||||
|
||||
|
||||
[packageBackupWait dismissViewControllerAnimated:YES completion:nil];
|
||||
[packageBackupWait dismissViewControllerAnimated:YES completion:nil];
|
||||
|
||||
}];
|
||||
}];
|
||||
UIAlertAction* cancel = [UIAlertAction
|
||||
actionWithTitle:@"Cancel"
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
[packageBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
[packageBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
|
||||
}];
|
||||
}];
|
||||
|
||||
[packageBackupAlert addAction:cancel];
|
||||
[packageBackupAlert addAction:ok];
|
||||
|
@ -389,18 +674,18 @@ UIImage *darkHome;
|
|||
else{
|
||||
|
||||
UIAlertController * noBackupDEBAlert = [UIAlertController
|
||||
alertControllerWithTitle:@"Creating DEBs is only available in the full version"
|
||||
message:@"The free trial of FlashBack doesn't allow backing up setups to DEBs. Purchase the full version on PackIX for $1.50 for this!"
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
alertControllerWithTitle:@"Creating DEBs is only available in the full version"
|
||||
message:@"The free trial of FlashBack doesn't allow backing up setups to DEBs. Purchase the full version on PackIX for $1.50 for this!"
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
UIAlertAction* ok = [UIAlertAction
|
||||
actionWithTitle:@"ok"
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
[noBackupDEBAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
[noBackupDEBAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
|
||||
}];
|
||||
}];
|
||||
|
||||
[noBackupDEBAlert addAction:ok];
|
||||
|
||||
|
@ -421,51 +706,51 @@ UIImage *darkHome;
|
|||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
[tutorialAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
[tutorialAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
|
||||
|
||||
UIAlertController * infoAlert= [UIAlertController
|
||||
alertControllerWithTitle:@"Known issues"
|
||||
message:@"\nFor bug reports, please contact me via Twitter or the email available in the next pop-up dialogue.\n\nIf you have issues with the wallpaper, apply your wallpaper with AutoWall from https://jb365.github.io/ and update the backup.\n\nCredit for the DRM goes to @kushdabush on twitter"
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
UIAlertController * infoAlert= [UIAlertController
|
||||
alertControllerWithTitle:@"Known issues"
|
||||
message:@"\nFor bug reports, please contact me via Twitter or the email available in the next pop-up dialogue.\n\nIf you have issues with the wallpaper, apply your wallpaper with AutoWall from https://jb365.github.io/ and update the backup.\n\nCredit for the DRM goes to @kushdabush on twitter"
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
UIAlertAction* okay = [UIAlertAction
|
||||
actionWithTitle:@"ok"
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
[infoAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
UIAlertAction* okay = [UIAlertAction
|
||||
actionWithTitle:@"ok"
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
[infoAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
|
||||
|
||||
UIAlertController * contactAlert= [UIAlertController
|
||||
alertControllerWithTitle:@"Contact Me"
|
||||
message:@"\nYou can contact my via Twitter or Email\n\n@micahpgomez\n\nmpg13@micahpgomez.dev\n\nhttps://www.micahpgomez.dev"
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
UIAlertController * contactAlert= [UIAlertController
|
||||
alertControllerWithTitle:@"Contact Me"
|
||||
message:@"\nYou can contact my via Twitter or Email\n\n@micahpgomez\n\nmpg13@micahpgomez.dev\n\nhttps://www.micahpgomez.dev"
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
UIAlertAction* okey = [UIAlertAction
|
||||
actionWithTitle:@"ok"
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
[contactAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
UIAlertAction* okey = [UIAlertAction
|
||||
actionWithTitle:@"ok"
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
[contactAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
|
||||
}];
|
||||
}];
|
||||
|
||||
[contactAlert addAction:okey];
|
||||
[contactAlert addAction:okey];
|
||||
|
||||
[self presentViewController:contactAlert animated:YES completion:nil];
|
||||
[self presentViewController:contactAlert animated:YES completion:nil];
|
||||
|
||||
|
||||
|
||||
}];
|
||||
}];
|
||||
|
||||
[infoAlert addAction:okay];
|
||||
[infoAlert addAction:okay];
|
||||
|
||||
[self presentViewController:infoAlert animated:YES completion:nil];
|
||||
[self presentViewController:infoAlert animated:YES completion:nil];
|
||||
|
||||
|
||||
|
||||
}];
|
||||
}];
|
||||
|
||||
[tutorialAlert addAction:ok];
|
||||
|
||||
|
@ -487,9 +772,9 @@ UIImage *darkHome;
|
|||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
[selectBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
[selectBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
|
||||
}];
|
||||
}];
|
||||
|
||||
[selectBackupAlert addAction:ok];
|
||||
|
||||
|
@ -508,47 +793,47 @@ UIImage *darkHome;
|
|||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
|
||||
NSTask *deleteTask = [[NSTask alloc] init];
|
||||
[deleteTask setLaunchPath:@"/bin/bash"];
|
||||
[deleteTask setArguments:@[ @"FBDelete", backupNameSelected]];
|
||||
[deleteTask launch];
|
||||
[deleteTask waitUntilExit];
|
||||
NSTask *deleteTask = [[NSTask alloc] init];
|
||||
[deleteTask setLaunchPath:@"/bin/bash"];
|
||||
[deleteTask setArguments:@[ @"FBDelete", backupNameSelected]];
|
||||
[deleteTask launch];
|
||||
[deleteTask waitUntilExit];
|
||||
|
||||
UIAlertController * deleteFinishedAlert= [UIAlertController
|
||||
alertControllerWithTitle:@"Backup Deleted"
|
||||
message:@"The backup has been deleted successfully"
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
UIAlertController * deleteFinishedAlert= [UIAlertController
|
||||
alertControllerWithTitle:@"Backup Deleted"
|
||||
message:@"The backup has been deleted successfully"
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
UIAlertAction* okey = [UIAlertAction
|
||||
actionWithTitle:@"ok"
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
UIAlertAction* okey = [UIAlertAction
|
||||
actionWithTitle:@"ok"
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
|
||||
_backupFolderArray = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:@"/Library/FlashBack/Backups/" error:nil];
|
||||
[self->selectedBackupPickerView reloadAllComponents];
|
||||
_backupFolderArray = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:@"/Library/FlashBack/Backups/" error:nil];
|
||||
[self->selectedBackupPickerView reloadAllComponents];
|
||||
|
||||
[deleteFinishedAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
[deleteFinishedAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
|
||||
}];
|
||||
}];
|
||||
|
||||
[deleteFinishedAlert addAction:okey];
|
||||
[deleteFinishedAlert addAction:okey];
|
||||
|
||||
[self presentViewController:deleteFinishedAlert animated:YES completion:nil];
|
||||
[self presentViewController:deleteFinishedAlert animated:YES completion:nil];
|
||||
|
||||
|
||||
|
||||
[deleteBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
}];
|
||||
[deleteBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
}];
|
||||
UIAlertAction* cancel = [UIAlertAction
|
||||
actionWithTitle:@"Cancel"
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
|
||||
[deleteBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
[deleteBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
|
||||
}];
|
||||
}];
|
||||
|
||||
[deleteBackupAlert addAction:cancel];
|
||||
[deleteBackupAlert addAction:ok];
|
||||
|
@ -585,9 +870,9 @@ UIImage *darkHome;
|
|||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
[failedDRMAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
//exit(0);
|
||||
}];
|
||||
[failedDRMAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
//exit(0);
|
||||
}];
|
||||
|
||||
UIAlertController * trialNoticeAlert= [UIAlertController
|
||||
alertControllerWithTitle:@"Trial Notice"
|
||||
|
@ -599,8 +884,8 @@ UIImage *darkHome;
|
|||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
[trialNoticeAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
}];
|
||||
[trialNoticeAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
}];
|
||||
|
||||
[failedDRMAlert addAction:failedDRMOk];
|
||||
[trialNoticeAlert addAction:trialOk];
|
||||
|
@ -625,7 +910,7 @@ UIImage *darkHome;
|
|||
}
|
||||
}
|
||||
|
||||
trial = NO;
|
||||
trial = NO;
|
||||
}
|
||||
|
||||
|
||||
|
@ -643,9 +928,9 @@ UIImage *darkHome;
|
|||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
[emptyArrayAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
[emptyArrayAlert dismissViewControllerAnimated:YES completion:nil];
|
||||
|
||||
}];
|
||||
}];
|
||||
|
||||
[emptyArrayAlert addAction:ok];
|
||||
|
||||
|
@ -661,7 +946,7 @@ UIImage *darkHome;
|
|||
|
||||
selectedBackupImageURL=selectedBackupURL;
|
||||
|
||||
[selectedBackupImageURL appendString: @"/SBFolder/LockBackgroundThumbnail.jpg"];
|
||||
[selectedBackupImageURL appendString: @"/Wallpaper/lightHomeWP.png"];
|
||||
NSLog(@"%@", selectedBackupImageURL);
|
||||
NSURL *url = [NSURL fileURLWithPath:selectedBackupImageURL];
|
||||
NSData *data = [NSData dataWithContentsOfURL:url];
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -4,109 +4,41 @@
|
|||
<dict>
|
||||
<key>files</key>
|
||||
<dict>
|
||||
<key>AppIcon20x20@2x.png</key>
|
||||
<data>
|
||||
jZyD4lShV7O/wgRPVNSmU67Pv5I=
|
||||
</data>
|
||||
<key>AppIcon20x20@2x~ipad.png</key>
|
||||
<data>
|
||||
jZyD4lShV7O/wgRPVNSmU67Pv5I=
|
||||
</data>
|
||||
<key>AppIcon20x20@3x.png</key>
|
||||
<data>
|
||||
d7vuwp0TbAvzIaypq74eH3jBVkQ=
|
||||
</data>
|
||||
<key>AppIcon20x20~ipad.png</key>
|
||||
<data>
|
||||
sIs7Y4GMQU8IAZtdG1bn6X+y97Y=
|
||||
</data>
|
||||
<key>AppIcon29x29@2x.png</key>
|
||||
<data>
|
||||
8kMzIG/CmN1TRtPk1Vv1/GDApXg=
|
||||
</data>
|
||||
<key>AppIcon29x29@2x~ipad.png</key>
|
||||
<data>
|
||||
8kMzIG/CmN1TRtPk1Vv1/GDApXg=
|
||||
</data>
|
||||
<key>AppIcon29x29@3x.png</key>
|
||||
<data>
|
||||
TrmYvTOSx6p742RA6FMfBNzW9fQ=
|
||||
</data>
|
||||
<key>AppIcon29x29~ipad.png</key>
|
||||
<data>
|
||||
QUrVTwvUNkptNRY+z143TYdxY2A=
|
||||
</data>
|
||||
<key>AppIcon40x40@2x.png</key>
|
||||
<data>
|
||||
r1cTH5Tvd5tZ6ZvoD4uLuCulvNI=
|
||||
</data>
|
||||
<key>AppIcon40x40@2x~ipad.png</key>
|
||||
<data>
|
||||
r1cTH5Tvd5tZ6ZvoD4uLuCulvNI=
|
||||
</data>
|
||||
<key>AppIcon40x40@3x.png</key>
|
||||
<data>
|
||||
Myhbo34Mzba1Vd2A/DUUSJxnVD4=
|
||||
</data>
|
||||
<key>AppIcon40x40~ipad.png</key>
|
||||
<data>
|
||||
jZyD4lShV7O/wgRPVNSmU67Pv5I=
|
||||
</data>
|
||||
<key>AppIcon60x60@2x.png</key>
|
||||
<data>
|
||||
Myhbo34Mzba1Vd2A/DUUSJxnVD4=
|
||||
</data>
|
||||
<key>AppIcon60x60@3x.png</key>
|
||||
<data>
|
||||
U9lg64M0cAXEeI13sPfcfemfBFo=
|
||||
</data>
|
||||
<key>AppIcon76x76@2x~ipad.png</key>
|
||||
<data>
|
||||
tPVGmcsOfSKzncF+8Kb2FIP2knA=
|
||||
</data>
|
||||
<key>AppIcon76x76~ipad.png</key>
|
||||
<data>
|
||||
ybwmktN2/6AjCh8Rr47uCen4M9c=
|
||||
</data>
|
||||
<key>AppIcon83.5x83.5@2x~ipad.png</key>
|
||||
<data>
|
||||
ue/XZU9Z3G/C3A+Zq76KGZlAMck=
|
||||
</data>
|
||||
<key>Assets.car</key>
|
||||
<data>
|
||||
ImJz/XEPmoSJqCwQYG00Cgi7RyQ=
|
||||
Krc89ZxgZU4NnvVLhXhIHWvtpmU=
|
||||
</data>
|
||||
<key>Base.lproj/LaunchScreen.storyboardc/01J-lp-oVM-view-Ze5-6b-2t3.nib/objects-13.0+.nib</key>
|
||||
<key>Base.lproj/LaunchScreen.storyboardc/01J-lp-oVM-view-Ze5-6b-2t3.nib</key>
|
||||
<data>
|
||||
l5XjqZtyHimuVoTcGZuvcFx9OyU=
|
||||
</data>
|
||||
<key>Base.lproj/LaunchScreen.storyboardc/01J-lp-oVM-view-Ze5-6b-2t3.nib/runtime.nib</key>
|
||||
<data>
|
||||
ofw6Idv2M3pc2XcI12eQrHw2t6E=
|
||||
R+d6CDBkcAwx9QItyDTH6sIe5rA=
|
||||
</data>
|
||||
<key>Base.lproj/LaunchScreen.storyboardc/Info.plist</key>
|
||||
<data>
|
||||
n2t8gsDpfE6XkhG31p7IQJRxTxU=
|
||||
</data>
|
||||
<key>Base.lproj/LaunchScreen.storyboardc/UIViewController-01J-lp-oVM.nib/objects-13.0+.nib</key>
|
||||
<key>Base.lproj/LaunchScreen.storyboardc/UIViewController-01J-lp-oVM.nib</key>
|
||||
<data>
|
||||
ULVU2MW4JFPQVEOj7KgAwhm5GF0=
|
||||
</data>
|
||||
<key>Base.lproj/LaunchScreen.storyboardc/UIViewController-01J-lp-oVM.nib/runtime.nib</key>
|
||||
<data>
|
||||
N+Wz6OfI9Momo3bcwX8GEJTscEE=
|
||||
DVNg6tcs0TATd+CQeWtYldBxZI8=
|
||||
</data>
|
||||
<key>Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib/objects-11.0+.nib</key>
|
||||
<data>
|
||||
N3PA1wcMe+fxiblw3gCX8nz8gYo=
|
||||
5Np+q5sNW2goFvT3xa95+eHbXCw=
|
||||
</data>
|
||||
<key>Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib/objects-13.0+.nib</key>
|
||||
<data>
|
||||
KP/3A5NqslHLb/kvTIwJvoZyw00=
|
||||
qpqVLdSwc7qNeFXzZYMiVYlzysk=
|
||||
</data>
|
||||
<key>Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib/runtime.nib</key>
|
||||
<data>
|
||||
t20YxFQRSLb3x5dJdwAg4vAzVyE=
|
||||
WdpzqeJ4TLtQAOzDqGYZG9GR6tg=
|
||||
</data>
|
||||
<key>Base.lproj/Main.storyboardc/Info.plist</key>
|
||||
<data>
|
||||
|
@ -114,19 +46,19 @@
|
|||
</data>
|
||||
<key>Base.lproj/Main.storyboardc/UIViewController-BYZ-38-t0r.nib/objects-11.0+.nib</key>
|
||||
<data>
|
||||
Y9a1GaKTRUosUcKwf6iBfugEkm0=
|
||||
9F7MwXutxU82RUxMcMVtEbBOURg=
|
||||
</data>
|
||||
<key>Base.lproj/Main.storyboardc/UIViewController-BYZ-38-t0r.nib/objects-13.0+.nib</key>
|
||||
<data>
|
||||
0L3wrkkozWdsDpWNMIK4OprQO7Q=
|
||||
uJG7uDPeiE6Er32Rxhzd4e3RnHg=
|
||||
</data>
|
||||
<key>Base.lproj/Main.storyboardc/UIViewController-BYZ-38-t0r.nib/runtime.nib</key>
|
||||
<data>
|
||||
5khYZGe3mcP3nwnsnW9Msh0A0MQ=
|
||||
fLNipL3cf8WoCzDpBFCyywN4nQM=
|
||||
</data>
|
||||
<key>Info.plist</key>
|
||||
<data>
|
||||
6As4G7OLF5RTkoWFULstuFmVTB0=
|
||||
WzSIzvBQ/qTrPeZHwBahA6CjmCk=
|
||||
</data>
|
||||
<key>PkgInfo</key>
|
||||
<data>
|
||||
|
@ -134,303 +66,76 @@
|
|||
</data>
|
||||
<key>embedded.mobileprovision</key>
|
||||
<data>
|
||||
85kRWtTHuvaEu8gHQR7nCwEVWic=
|
||||
Oix9XPIMVhOC2qZ7UlTFwp2/xy0=
|
||||
</data>
|
||||
</dict>
|
||||
<key>files2</key>
|
||||
<dict>
|
||||
<key>AppIcon20x20@2x.png</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
jZyD4lShV7O/wgRPVNSmU67Pv5I=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
wGFS4hvcQiEs1++YFVLEcYdltD2SZZGRebRrQeo+bUQ=
|
||||
</data>
|
||||
</dict>
|
||||
<key>AppIcon20x20@2x~ipad.png</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
jZyD4lShV7O/wgRPVNSmU67Pv5I=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
wGFS4hvcQiEs1++YFVLEcYdltD2SZZGRebRrQeo+bUQ=
|
||||
</data>
|
||||
</dict>
|
||||
<key>AppIcon20x20@3x.png</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
d7vuwp0TbAvzIaypq74eH3jBVkQ=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
UwBUS/1xWyMvr9xJ2LA264u+3jXAiX8CbVTQ9VuW2Vg=
|
||||
</data>
|
||||
</dict>
|
||||
<key>AppIcon20x20~ipad.png</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
sIs7Y4GMQU8IAZtdG1bn6X+y97Y=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
/3TsU0uhTg6EC/ICN9HRfpkkuUrNBHF1qDiufStaSA0=
|
||||
</data>
|
||||
</dict>
|
||||
<key>AppIcon29x29@2x.png</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
8kMzIG/CmN1TRtPk1Vv1/GDApXg=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
719KrHgMg7+fLDT1Fqa1JgEcJzWQWug5M6t1y3uVYRo=
|
||||
</data>
|
||||
</dict>
|
||||
<key>AppIcon29x29@2x~ipad.png</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
8kMzIG/CmN1TRtPk1Vv1/GDApXg=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
719KrHgMg7+fLDT1Fqa1JgEcJzWQWug5M6t1y3uVYRo=
|
||||
</data>
|
||||
</dict>
|
||||
<key>AppIcon29x29@3x.png</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
TrmYvTOSx6p742RA6FMfBNzW9fQ=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
NGFywZs0oJRaE3Yp3vuXbCXRdYnVM2pVyoTneD8fWT8=
|
||||
</data>
|
||||
</dict>
|
||||
<key>AppIcon29x29~ipad.png</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
QUrVTwvUNkptNRY+z143TYdxY2A=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
1uR1l3KxlncA3zh47x3ROCwnfn5lnRN8m64PKN0JtKs=
|
||||
</data>
|
||||
</dict>
|
||||
<key>AppIcon40x40@2x.png</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
r1cTH5Tvd5tZ6ZvoD4uLuCulvNI=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
LpFwCHHOGjFChD79M0ZzHnXA05UwB3twSDPrmAJHwCE=
|
||||
</data>
|
||||
</dict>
|
||||
<key>AppIcon40x40@2x~ipad.png</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
r1cTH5Tvd5tZ6ZvoD4uLuCulvNI=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
LpFwCHHOGjFChD79M0ZzHnXA05UwB3twSDPrmAJHwCE=
|
||||
</data>
|
||||
</dict>
|
||||
<key>AppIcon40x40@3x.png</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
Myhbo34Mzba1Vd2A/DUUSJxnVD4=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
hMxJFn2Q8X2CHF5SnOE8+l9CeQaATCxnDstbs3mN4Rs=
|
||||
</data>
|
||||
</dict>
|
||||
<key>AppIcon40x40~ipad.png</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
jZyD4lShV7O/wgRPVNSmU67Pv5I=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
wGFS4hvcQiEs1++YFVLEcYdltD2SZZGRebRrQeo+bUQ=
|
||||
</data>
|
||||
</dict>
|
||||
<key>AppIcon60x60@2x.png</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
Myhbo34Mzba1Vd2A/DUUSJxnVD4=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
hMxJFn2Q8X2CHF5SnOE8+l9CeQaATCxnDstbs3mN4Rs=
|
||||
</data>
|
||||
</dict>
|
||||
<key>AppIcon60x60@3x.png</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
U9lg64M0cAXEeI13sPfcfemfBFo=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
/JnQ6AOKCOUa7iyX4kSPEdLr+VoMDb7u5gWIWHp29PE=
|
||||
</data>
|
||||
</dict>
|
||||
<key>AppIcon76x76@2x~ipad.png</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
tPVGmcsOfSKzncF+8Kb2FIP2knA=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
nx4xIL57Q8apHQidIHkz+NQKHjXYqt4f2sO7xzhjVTc=
|
||||
</data>
|
||||
</dict>
|
||||
<key>AppIcon76x76~ipad.png</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
ybwmktN2/6AjCh8Rr47uCen4M9c=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
j1As6YrqZGHbXtX8f8RmNNPPQ3CM3PyHg30hWI5ECHc=
|
||||
</data>
|
||||
</dict>
|
||||
<key>AppIcon83.5x83.5@2x~ipad.png</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
ue/XZU9Z3G/C3A+Zq76KGZlAMck=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
vlen812bLd/4TGTY4lLOW6MEV+KAyb/9d1RR0RmBho0=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Assets.car</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
ImJz/XEPmoSJqCwQYG00Cgi7RyQ=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
p/KVm31KNhUF7x635aYTprnw1qun88j+JPs/ZaUKFEE=
|
||||
aIRNdnGpEQCWoyK0E8fojsSifgSwMYUFMUPSuAL6dC0=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Base.lproj/LaunchScreen.storyboardc/01J-lp-oVM-view-Ze5-6b-2t3.nib/objects-13.0+.nib</key>
|
||||
<key>Base.lproj/LaunchScreen.storyboardc/01J-lp-oVM-view-Ze5-6b-2t3.nib</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
l5XjqZtyHimuVoTcGZuvcFx9OyU=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
PZntXE6D9ByUyb+9+lyyEe7/9vfdgwHXsQvTO8NbpJc=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Base.lproj/LaunchScreen.storyboardc/01J-lp-oVM-view-Ze5-6b-2t3.nib/runtime.nib</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
ofw6Idv2M3pc2XcI12eQrHw2t6E=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
poCd7cj94yTMVjgz8JpPvgqttsouq+TDNzIM95H1Mbo=
|
||||
SSu1d2sRc7dQstKpTVve6hJL204Omjs76i1jfTxKDog=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Base.lproj/LaunchScreen.storyboardc/Info.plist</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
n2t8gsDpfE6XkhG31p7IQJRxTxU=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
HyVdXMU7Ux4/KalAao30mpWOK/lEPT4gvYN09wf31cg=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Base.lproj/LaunchScreen.storyboardc/UIViewController-01J-lp-oVM.nib/objects-13.0+.nib</key>
|
||||
<key>Base.lproj/LaunchScreen.storyboardc/UIViewController-01J-lp-oVM.nib</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
ULVU2MW4JFPQVEOj7KgAwhm5GF0=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
t7bdRwS8hJi3Q95LNa0yrIFUCuenmoKfHqyVndUjHy8=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Base.lproj/LaunchScreen.storyboardc/UIViewController-01J-lp-oVM.nib/runtime.nib</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
N+Wz6OfI9Momo3bcwX8GEJTscEE=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
IZYm5ozx9opIsriqpKZxk6vEjNDZbjSEgNVSl6C7Of8=
|
||||
20NUGaajIa4VaBW27xP1Crh+2gB5ylcfT9P2vFS/vJE=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib/objects-11.0+.nib</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
N3PA1wcMe+fxiblw3gCX8nz8gYo=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
Keb76x/ruvqSluBD5Ul2oSJbC+GRKL6HrUN6ON7ZP4c=
|
||||
LyAD4F9fQRt4C7s8FBHQgM1OA2j33Hr7hLcZ7DnxIDM=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib/objects-13.0+.nib</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
KP/3A5NqslHLb/kvTIwJvoZyw00=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
s7r7x1bGOlanCORTsbKY+po4r1ZVKv9MioedKcgDncc=
|
||||
vb3yaEYsEFOsYjJTcnxxZIb9TZoyq0z41ofQQK8aOVE=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib/runtime.nib</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
t20YxFQRSLb3x5dJdwAg4vAzVyE=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
BVAa/3t3IAFY9Vhm54HGXepMimoOe/kcfadHQ05dYwA=
|
||||
2PYJcQvOSP90Blq3CaxrNYY/6vaN9tKtKV0H6kaX8TM=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Base.lproj/Main.storyboardc/Info.plist</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
MDrKFvFWroTb0+KEbQShBcoBvo4=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
PpvapAjR62rl6Ym4E6hkTgpKmBICxTaQXeUqcpHmmqQ=
|
||||
|
@ -438,46 +143,30 @@
|
|||
</dict>
|
||||
<key>Base.lproj/Main.storyboardc/UIViewController-BYZ-38-t0r.nib/objects-11.0+.nib</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
Y9a1GaKTRUosUcKwf6iBfugEkm0=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
ZdvAd3vXemAOOAlZpZd15K/LzRUe04eapCHF0NVjpvk=
|
||||
Gexc3n/2YAaeLASw0/Tu4ezNpN6/rVWKFFVonlLgYPo=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Base.lproj/Main.storyboardc/UIViewController-BYZ-38-t0r.nib/objects-13.0+.nib</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
0L3wrkkozWdsDpWNMIK4OprQO7Q=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
WN0LMXI6Sfky30DnTJ2PHe0y7a5SsvJycJ69GuYCGaw=
|
||||
zOyATQsmHIWfzd9ruDP0OBfIX1x84uKw1QsBRFUWJe4=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Base.lproj/Main.storyboardc/UIViewController-BYZ-38-t0r.nib/runtime.nib</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
5khYZGe3mcP3nwnsnW9Msh0A0MQ=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
Scz4gjaPWlm4v6xxcJYMCXSkMCNBw+cFEygmKL1kKTc=
|
||||
py0cxo8inTLUS8pH1XVDJqaDKHCHkK2f0zEP5lTvslY=
|
||||
</data>
|
||||
</dict>
|
||||
<key>embedded.mobileprovision</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
85kRWtTHuvaEu8gHQR7nCwEVWic=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
q9IhoQdXPz9WKGlGu0EoYTSM6gDTHD/bfMK7M1TmOPc=
|
||||
wkTlWxFKtxR/vpeVXoyweij5JJs5ll4nyAhFhPBGV+s=
|
||||
</data>
|
||||
</dict>
|
||||
</dict>
|
||||
|
|
Binary file not shown.
Reference in a new issue