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\"/**",
|
"\"/Users/micahgomez/Downloads/iOS-Runtime-Headers-master/PrivateFrameworks\"/**",
|
||||||
);
|
);
|
||||||
INFOPLIST_FILE = FlashBack/Info.plist;
|
INFOPLIST_FILE = FlashBack/Info.plist;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 3.6.1;
|
MARKETING_VERSION = 4;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.mpg13.FlashBack;
|
PRODUCT_BUNDLE_IDENTIFIER = com.mpg13.FlashBack;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
|
@ -486,12 +486,12 @@
|
||||||
"\"/Users/micahgomez/Downloads/iOS-Runtime-Headers-master/PrivateFrameworks\"/**",
|
"\"/Users/micahgomez/Downloads/iOS-Runtime-Headers-master/PrivateFrameworks\"/**",
|
||||||
);
|
);
|
||||||
INFOPLIST_FILE = FlashBack/Info.plist;
|
INFOPLIST_FILE = FlashBack/Info.plist;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 3.6.1;
|
MARKETING_VERSION = 4;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.mpg13.FlashBack;
|
PRODUCT_BUNDLE_IDENTIFIER = com.mpg13.FlashBack;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
|
|
Binary file not shown.
|
@ -1,9 +1,9 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?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"/>
|
<device id="retina6_5" orientation="portrait" appearance="light"/>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment version="2304" identifier="iOS"/>
|
<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="Safe area layout guides" minToolsVersion="9.0"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
@ -11,21 +11,18 @@
|
||||||
<!--View Controller-->
|
<!--View Controller-->
|
||||||
<scene sceneID="tne-QT-ifu">
|
<scene sceneID="tne-QT-ifu">
|
||||||
<objects>
|
<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">
|
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<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"/>
|
<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"/>
|
<fontDescription key="fontDescription" type="boldSystem" pointSize="30"/>
|
||||||
<nil key="textColor"/>
|
<nil key="textColor"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</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"/>
|
<rect key="frame" x="0.0" y="-47" width="414" height="174.33333333333334"/>
|
||||||
<subviews>
|
<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">
|
<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"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<button opaque="NO" contentMode="scaleToFill" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="FKY-5f-bN9">
|
<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="111" width="35" height="35"/>
|
<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"/>
|
<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"/>
|
<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"/>
|
<color key="tintColor" systemColor="linkColor" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<state key="normal" backgroundImage="create">
|
<state key="normal" backgroundImage="create">
|
||||||
<color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
<color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
|
@ -58,10 +51,13 @@
|
||||||
</subviews>
|
</subviews>
|
||||||
<color key="backgroundColor" white="0.33333333333333331" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
<color key="backgroundColor" white="0.33333333333333331" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="trailing" secondItem="FKY-5f-bN9" secondAttribute="trailing" constant="20" id="Jdk-QQ-yzs"/>
|
<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="P3j-0T-pEU"/>
|
<constraint firstAttribute="bottom" secondItem="84C-7a-WER" secondAttribute="bottom" constant="16" id="Vl5-31-ueG"/>
|
||||||
<constraint firstItem="84C-7a-WER" firstAttribute="leading" secondItem="YRz-XN-znu" secondAttribute="leading" constant="21" id="Xal-aC-rHb"/>
|
<constraint firstItem="84C-7a-WER" firstAttribute="centerY" secondItem="FKY-5f-bN9" secondAttribute="centerY" id="eqG-GR-mW9"/>
|
||||||
<constraint firstAttribute="bottom" secondItem="FKY-5f-bN9" secondAttribute="bottom" constant="20" id="wDN-Ue-6NJ"/>
|
<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>
|
</constraints>
|
||||||
<userDefinedRuntimeAttributes>
|
<userDefinedRuntimeAttributes>
|
||||||
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
|
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
|
||||||
|
@ -69,39 +65,8 @@
|
||||||
</userDefinedRuntimeAttribute>
|
</userDefinedRuntimeAttribute>
|
||||||
</userDefinedRuntimeAttributes>
|
</userDefinedRuntimeAttributes>
|
||||||
</view>
|
</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">
|
<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"/>
|
<rect key="frame" x="11.666666666666668" y="812" width="33.333333333333329" height="25"/>
|
||||||
<constraints>
|
|
||||||
<constraint firstAttribute="width" constant="25" id="LXF-kg-B1q"/>
|
|
||||||
<constraint firstAttribute="height" constant="25" id="zYE-fR-39z"/>
|
|
||||||
</constraints>
|
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="25"/>
|
<fontDescription key="fontDescription" type="system" pointSize="25"/>
|
||||||
<state key="normal" backgroundImage="details"/>
|
<state key="normal" backgroundImage="details"/>
|
||||||
<connections>
|
<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">
|
<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"/>
|
<rect key="frame" x="169" y="682" width="75" height="75"/>
|
||||||
<color key="backgroundColor" white="1" alpha="0.25035761439999998" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
<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"/>
|
<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"/>
|
<color key="tintColor" red="0.22507366540000001" green="0.48274582620000001" blue="0.83905923370000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<state key="normal" backgroundImage="package"/>
|
<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">
|
<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"/>
|
<rect key="frame" x="49" y="682" width="75" height="75"/>
|
||||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
<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"/>
|
<color key="tintColor" red="0.92126031090000005" green="0.47989189650000003" blue="0.67328914429999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<state key="normal" backgroundImage="restore">
|
<state key="normal" backgroundImage="restore">
|
||||||
<preferredSymbolConfiguration key="preferredSymbolConfiguration" scale="default"/>
|
<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">
|
<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"/>
|
<rect key="frame" x="290" y="682" width="75" height="75"/>
|
||||||
<color key="backgroundColor" white="1" alpha="0.25035761439999998" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
<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"/>
|
<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"/>
|
<color key="tintColor" red="0.73051530119999997" green="0.57675904040000003" blue="0.8395984769" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<state key="normal" backgroundImage="update"/>
|
<state key="normal" backgroundImage="update"/>
|
||||||
|
@ -166,7 +119,7 @@
|
||||||
<action selector="updateBackup:" destination="BYZ-38-t0r" eventType="touchUpInside" id="Jz6-Fn-uAo"/>
|
<action selector="updateBackup:" destination="BYZ-38-t0r" eventType="touchUpInside" id="Jz6-Fn-uAo"/>
|
||||||
</connections>
|
</connections>
|
||||||
</button>
|
</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"/>
|
<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="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"/>
|
<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">
|
<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"/>
|
<rect key="frame" x="344" y="787" width="50" height="50"/>
|
||||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
<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"/>
|
<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"/>
|
<color key="tintColor" systemColor="systemRedColor" red="1" green="0.23137254900000001" blue="0.18823529410000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<state key="normal" backgroundImage="delete"/>
|
<state key="normal" backgroundImage="delete"/>
|
||||||
|
@ -199,37 +148,80 @@
|
||||||
<action selector="deleteBackup:" destination="BYZ-38-t0r" eventType="touchUpInside" id="IGQ-c1-zGW"/>
|
<action selector="deleteBackup:" destination="BYZ-38-t0r" eventType="touchUpInside" id="IGQ-c1-zGW"/>
|
||||||
</connections>
|
</connections>
|
||||||
</button>
|
</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>
|
</subviews>
|
||||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstItem="lNN-hV-Kcy" firstAttribute="top" secondItem="WN9-tU-bOp" secondAttribute="top" id="1yf-iZ-Z8y"/>
|
<constraint firstItem="lNN-hV-Kcy" firstAttribute="leading" secondItem="XMB-Cv-YLA" secondAttribute="trailing" constant="45" id="1z6-VA-4Jm"/>
|
||||||
<constraint firstItem="lNN-hV-Kcy" firstAttribute="centerX" secondItem="gXr-H3-y6A" secondAttribute="centerX" id="5yI-H4-Prz"/>
|
<constraint firstItem="XMB-Cv-YLA" firstAttribute="bottom" secondItem="lNN-hV-Kcy" secondAttribute="bottom" id="2EK-bf-vB0"/>
|
||||||
<constraint firstItem="lNN-hV-Kcy" firstAttribute="bottom" secondItem="WN9-tU-bOp" secondAttribute="bottom" id="6ZB-Bf-jyH"/>
|
<constraint firstItem="Z44-tn-4Km" firstAttribute="leading" secondItem="X9U-sY-tNs" secondAttribute="trailing" constant="26" id="2Zu-ZC-1Yb"/>
|
||||||
<constraint firstItem="Z44-tn-4Km" firstAttribute="bottom" secondItem="j3D-XF-u37" secondAttribute="bottom" id="808-hO-3rP"/>
|
<constraint firstItem="lNN-hV-Kcy" firstAttribute="bottom" secondItem="WN9-tU-bOp" secondAttribute="bottom" id="5F8-RZ-4c2"/>
|
||||||
<constraint firstItem="6Tk-OE-BBY" firstAttribute="bottom" secondItem="j3D-XF-u37" secondAttribute="bottom" constant="25" id="EuU-26-P4u"/>
|
<constraint firstItem="j3D-XF-u37" firstAttribute="top" secondItem="K95-HC-udT" secondAttribute="top" id="5UC-o7-76C"/>
|
||||||
<constraint firstItem="WN9-tU-bOp" firstAttribute="leading" secondItem="lNN-hV-Kcy" secondAttribute="trailing" constant="21.666666666666686" id="F3Z-99-YEf"/>
|
<constraint firstItem="X4R-sr-2s9" firstAttribute="trailing" secondItem="Z44-tn-4Km" secondAttribute="trailing" id="8Y7-yg-aAw"/>
|
||||||
<constraint firstItem="XMB-Cv-YLA" firstAttribute="top" secondItem="3iZ-tO-enL" secondAttribute="bottom" constant="37.999999999999886" id="Hw7-cJ-f1y"/>
|
<constraint firstItem="XMB-Cv-YLA" firstAttribute="leading" secondItem="6Tk-OE-BBY" secondAttribute="leading" constant="49" id="8ya-0r-GpF"/>
|
||||||
<constraint firstItem="gXr-H3-y6A" firstAttribute="top" secondItem="YRz-XN-znu" secondAttribute="bottom" constant="31" id="NLx-cb-Z0Y"/>
|
<constraint firstItem="j3D-XF-u37" firstAttribute="centerY" secondItem="9kU-JM-ZmY" secondAttribute="centerY" id="9ST-g4-hVd"/>
|
||||||
<constraint firstItem="3iZ-tO-enL" firstAttribute="centerY" secondItem="8bC-Xf-vdC" secondAttribute="centerY" id="QOS-5W-kiD"/>
|
<constraint firstItem="X4R-sr-2s9" firstAttribute="centerX" secondItem="X9U-sY-tNs" secondAttribute="centerX" id="AZS-g4-nFk"/>
|
||||||
<constraint firstItem="gXr-H3-y6A" firstAttribute="trailing" secondItem="8bC-Xf-vdC" secondAttribute="trailingMargin" id="R2H-5X-x8P"/>
|
<constraint firstItem="gXr-H3-y6A" firstAttribute="centerX" secondItem="lNN-hV-Kcy" secondAttribute="centerX" id="B6P-mh-ikw"/>
|
||||||
<constraint firstItem="YRz-XN-znu" firstAttribute="top" secondItem="8bC-Xf-vdC" secondAttribute="topMargin" constant="-97" id="Scc-1v-kuH"/>
|
<constraint firstItem="j3D-XF-u37" firstAttribute="bottom" secondItem="Z44-tn-4Km" secondAttribute="bottom" id="DuK-WW-81x"/>
|
||||||
<constraint firstItem="gXr-H3-y6A" firstAttribute="leading" secondItem="3iZ-tO-enL" secondAttribute="leading" id="T5D-8H-hM2"/>
|
<constraint firstItem="9kU-JM-ZmY" firstAttribute="leading" secondItem="j3D-XF-u37" secondAttribute="trailing" constant="17" id="GdA-fU-Jct"/>
|
||||||
<constraint firstItem="X4R-sr-2s9" firstAttribute="leading" secondItem="3iZ-tO-enL" secondAttribute="trailing" constant="8" id="VRb-uM-jSc"/>
|
<constraint firstItem="K95-HC-udT" firstAttribute="leading" secondItem="9kU-JM-ZmY" secondAttribute="trailing" constant="58" id="HOy-nq-uvm"/>
|
||||||
<constraint firstItem="XMB-Cv-YLA" firstAttribute="bottom" secondItem="lNN-hV-Kcy" secondAttribute="bottom" id="XgH-6s-wOW"/>
|
<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="XiT-po-OdT"/>
|
<constraint firstItem="WN9-tU-bOp" firstAttribute="baseline" secondItem="lNN-hV-Kcy" secondAttribute="baseline" id="KP0-Es-MAO"/>
|
||||||
<constraint firstItem="lNN-hV-Kcy" firstAttribute="firstBaseline" secondItem="WN9-tU-bOp" secondAttribute="firstBaseline" id="XuP-8G-Btq"/>
|
<constraint firstItem="gXr-H3-y6A" firstAttribute="top" secondItem="YRz-XN-znu" secondAttribute="bottom" constant="25" id="Lx3-2W-Yf4"/>
|
||||||
<constraint firstItem="XMB-Cv-YLA" firstAttribute="top" secondItem="lNN-hV-Kcy" secondAttribute="top" id="b62-mP-Zpm"/>
|
<constraint firstItem="gXr-H3-y6A" firstAttribute="trailing" secondItem="X4R-sr-2s9" secondAttribute="trailing" id="MI0-dk-jn6"/>
|
||||||
<constraint firstItem="Z44-tn-4Km" firstAttribute="trailing" secondItem="X4R-sr-2s9" secondAttribute="trailing" id="bTp-1w-V59"/>
|
<constraint firstItem="9kU-JM-ZmY" firstAttribute="top" secondItem="XMB-Cv-YLA" secondAttribute="bottom" constant="52" id="NKe-2R-HJ7"/>
|
||||||
<constraint firstItem="X4R-sr-2s9" firstAttribute="top" secondItem="gXr-H3-y6A" secondAttribute="bottom" constant="8" id="cBr-K5-WBl"/>
|
<constraint firstItem="6Tk-OE-BBY" firstAttribute="trailing" secondItem="WN9-tU-bOp" secondAttribute="trailing" constant="49" id="PnR-uX-lXp"/>
|
||||||
<constraint firstItem="3iZ-tO-enL" firstAttribute="bottom" secondItem="X4R-sr-2s9" secondAttribute="bottom" id="cdA-le-7bt"/>
|
<constraint firstItem="6Tk-OE-BBY" firstAttribute="bottom" secondItem="K95-HC-udT" secondAttribute="bottom" constant="19" id="Qmw-5v-ip3"/>
|
||||||
<constraint firstItem="gXr-H3-y6A" firstAttribute="trailing" secondItem="X4R-sr-2s9" secondAttribute="trailing" id="dVX-31-fqP"/>
|
<constraint firstItem="Z44-tn-4Km" firstAttribute="top" secondItem="WN9-tU-bOp" secondAttribute="bottom" constant="30" id="RJ2-za-cuR"/>
|
||||||
<constraint firstItem="6Tk-OE-BBY" firstAttribute="bottom" secondItem="lNN-hV-Kcy" secondAttribute="bottom" constant="94.333333333333371" id="da6-Cp-iCo"/>
|
<constraint firstItem="K95-HC-udT" firstAttribute="top" secondItem="X9U-sY-tNs" secondAttribute="top" id="ges-Hw-caM"/>
|
||||||
<constraint firstItem="j3D-XF-u37" firstAttribute="leading" secondItem="3iZ-tO-enL" secondAttribute="leading" id="fam-fG-ISn"/>
|
<constraint firstItem="WN9-tU-bOp" firstAttribute="firstBaseline" secondItem="lNN-hV-Kcy" secondAttribute="firstBaseline" id="i5I-co-MwE"/>
|
||||||
<constraint firstItem="lNN-hV-Kcy" firstAttribute="leading" secondItem="XMB-Cv-YLA" secondAttribute="trailing" constant="20" id="ja6-Q7-zRM"/>
|
<constraint firstItem="XMB-Cv-YLA" firstAttribute="top" secondItem="lNN-hV-Kcy" secondAttribute="top" id="i8h-oN-Vfa"/>
|
||||||
<constraint firstItem="3iZ-tO-enL" firstAttribute="top" secondItem="gXr-H3-y6A" secondAttribute="bottom" constant="6" id="kbG-2p-B9N"/>
|
<constraint firstItem="YRz-XN-znu" firstAttribute="leading" secondItem="6Tk-OE-BBY" secondAttribute="leading" id="iNG-1m-uSS"/>
|
||||||
<constraint firstItem="gXr-H3-y6A" firstAttribute="leading" secondItem="8bC-Xf-vdC" secondAttribute="leadingMargin" id="nNY-OL-is3"/>
|
<constraint firstItem="X4R-sr-2s9" firstAttribute="top" secondItem="gXr-H3-y6A" secondAttribute="bottom" constant="8.0000000000000284" id="jzR-DP-s5H"/>
|
||||||
<constraint firstItem="YRz-XN-znu" firstAttribute="centerX" secondItem="gXr-H3-y6A" secondAttribute="centerX" id="v8g-3m-yZ1"/>
|
<constraint firstItem="XMB-Cv-YLA" firstAttribute="centerX" secondItem="9kU-JM-ZmY" secondAttribute="centerX" id="leX-T2-vb7"/>
|
||||||
<constraint firstItem="YRz-XN-znu" firstAttribute="leading" secondItem="6Tk-OE-BBY" secondAttribute="leading" id="yM9-sD-L7K"/>
|
<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>
|
</constraints>
|
||||||
<viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
|
<viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
|
||||||
</view>
|
</view>
|
||||||
|
|
|
@ -32,6 +32,8 @@
|
||||||
<array>
|
<array>
|
||||||
<string>UIInterfaceOrientationPortrait</string>
|
<string>UIInterfaceOrientationPortrait</string>
|
||||||
</array>
|
</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>
|
<key>UISupportedInterfaceOrientations~ipad</key>
|
||||||
<array>
|
<array>
|
||||||
<string>UIInterfaceOrientationPortrait</string>
|
<string>UIInterfaceOrientationPortrait</string>
|
||||||
|
|
|
@ -12,65 +12,112 @@
|
||||||
#include "NSTask.h"
|
#include "NSTask.h"
|
||||||
#import "InternalSetWallpaper.h"
|
#import "InternalSetWallpaper.h"
|
||||||
#import "UIImage+Private.h"
|
#import "UIImage+Private.h"
|
||||||
|
#import <Photos/Photos.h>
|
||||||
|
|
||||||
@interface ViewController ()
|
@interface ViewController () <UINavigationControllerDelegate, UIImagePickerControllerDelegate>
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
BOOL trial;
|
BOOL trial;
|
||||||
|
BOOL tweaksEnabled = YES;
|
||||||
|
NSString *stringTweaksEnabled = @"YES";
|
||||||
|
BOOL iconsEnabled = YES;
|
||||||
|
NSString *stringIconsEnabled = @"YES";
|
||||||
|
BOOL wallpaperEnabled = YES;
|
||||||
|
NSString *stringWallpaperEnabled = @"YES";
|
||||||
|
|
||||||
NSArray *_backupFolderArray;
|
NSArray *_backupFolderArray;
|
||||||
NSString *_backupDirectory;
|
NSString *_backupDirectory;
|
||||||
NSMutableString *sysCopyPrefsPath;
|
NSMutableString *sysCopyPrefsPath;
|
||||||
|
NSMutableString *sysCopySBPath;
|
||||||
NSMutableString *newBackupPrefsPath;
|
NSMutableString *newBackupPrefsPath;
|
||||||
NSArray *_springBoardFolderItemsRaw;
|
NSMutableString *newBackupSBPath;
|
||||||
NSArray *_filteredSpringBoardFolderItems;
|
NSMutableString *newBackupWPPath;
|
||||||
|
NSArray *_prefsFolderItemsRaw;
|
||||||
|
NSArray *_sbFolderItemsRaw;
|
||||||
|
NSArray *_filteredPrefsFolderItems;
|
||||||
|
NSArray *_filteredSBFolderItems;
|
||||||
NSMutableString *selectedBackupImageURL;
|
NSMutableString *selectedBackupImageURL;
|
||||||
NSMutableString *selectedBackupURL;
|
NSMutableString *selectedBackupURL;
|
||||||
NSString *backupNameSelected;
|
NSString *backupNameSelected;
|
||||||
|
|
||||||
|
int selectedWallpaperStyle;
|
||||||
|
|
||||||
|
NSMutableString *lightHomeWPPath;
|
||||||
|
NSMutableString *darkHomeWPPath;
|
||||||
|
NSMutableString *lightLockWPPath;
|
||||||
|
NSMutableString *darkLockWPPath;
|
||||||
|
|
||||||
UIImage *lightHome;
|
UIImage *lightHome;
|
||||||
UIImage *darkHome;
|
UIImage *darkHome;
|
||||||
|
UIImage *lightLock;
|
||||||
|
UIImage *darkLock;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@implementation ViewController
|
@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 {
|
- (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];
|
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];
|
|
||||||
|
|
||||||
if([[[createBackupAlert textFields][0] text] isEqual:@""]){
|
[createBackupAlert addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
|
||||||
NSLog(@"empty backup name!");
|
textField.placeholder = @"Backup Name";
|
||||||
}
|
textField.secureTextEntry = NO;
|
||||||
else{
|
}];
|
||||||
NSLog(@"Creating Backup");
|
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];
|
//MARK: Backup preferences
|
||||||
|
if(tweaksEnabled == YES){
|
||||||
NSLog(@"_SpringBoardFolderItemsRaw:%@", _springBoardFolderItemsRaw);
|
_prefsFolderItemsRaw = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:@"/var/mobile/Library/Preferences/" error:nil];
|
||||||
|
|
||||||
|
NSLog(@"_prefsFolderItemsRaw:%@", _prefsFolderItemsRaw);
|
||||||
|
|
||||||
NSPredicate *notApplePlistPredicate = [NSPredicate predicateWithFormat:@"NOT(SELF contains[c] 'apple')"];
|
NSPredicate *notApplePlistPredicate = [NSPredicate predicateWithFormat:@"NOT(SELF contains[c] 'apple')"];
|
||||||
//NSPredicate *isPlistPredicate = [NSPredicate predicateWithFormat:@"SELF endswith[c] '.plist'"];
|
//NSPredicate *isPlistPredicate = [NSPredicate predicateWithFormat:@"SELF endswith[c] '.plist'"];
|
||||||
NSPredicate *isPrefsPredicate = [NSPredicate predicateWithFormat:@"SELF LIKE[c] '*.*.*.plist'"];
|
NSPredicate *isPrefsPredicate = [NSPredicate predicateWithFormat:@"SELF LIKE[c] '*.*.*.plist'"];
|
||||||
|
|
||||||
NSArray *_filteredSpringBoardFolderItems = [_springBoardFolderItemsRaw filteredArrayUsingPredicate:notApplePlistPredicate];
|
NSArray *_filteredPrefsFolderItems = [_prefsFolderItemsRaw filteredArrayUsingPredicate:notApplePlistPredicate];
|
||||||
//_filteredSpringBoardFolderItems = [_filteredSpringBoardFolderItems filteredArrayUsingPredicate:isPlistPredicate];
|
//_filteredPrefsFolderItems = [_filteredPrefsFolderItems filteredArrayUsingPredicate:isPlistPredicate];
|
||||||
_filteredSpringBoardFolderItems = [_filteredSpringBoardFolderItems filteredArrayUsingPredicate:isPrefsPredicate];
|
_filteredPrefsFolderItems = [_filteredPrefsFolderItems filteredArrayUsingPredicate:isPrefsPredicate];
|
||||||
|
|
||||||
NSLog(@"_SpringBoardFolderItems:%@", _filteredSpringBoardFolderItems);
|
NSLog(@"_prefsFolderItems:%@", _filteredPrefsFolderItems);
|
||||||
|
|
||||||
|
|
||||||
|
for (id file in _filteredPrefsFolderItems){
|
||||||
for (id file in _filteredSpringBoardFolderItems){
|
|
||||||
|
|
||||||
sysCopyPrefsPath = [NSMutableString stringWithString: @"/private/var/mobile/Library/Preferences/"];
|
sysCopyPrefsPath = [NSMutableString stringWithString: @"/private/var/mobile/Library/Preferences/"];
|
||||||
[sysCopyPrefsPath appendString: file];
|
[sysCopyPrefsPath appendString: file];
|
||||||
|
@ -92,63 +139,301 @@ UIImage *darkHome;
|
||||||
|
|
||||||
//if ( ([[NSFileManager defaultManager] isReadableFileAtPath:sysCopyPrefsPath]) && ([[NSFileManager defaultManager] isWritableFileAtPath:newBackupPrefsPath]) ){
|
//if ( ([[NSFileManager defaultManager] isReadableFileAtPath:sysCopyPrefsPath]) && ([[NSFileManager defaultManager] isWritableFileAtPath:newBackupPrefsPath]) ){
|
||||||
|
|
||||||
NSLog(@"Copying:%@", file);
|
NSLog(@"Copying:%@", file);
|
||||||
if ([[NSFileManager defaultManager] copyItemAtURL:sysCopyPrefsPathURL toURL:newBackupPrefsPathURL error:nil] == YES) {
|
if ([[NSFileManager defaultManager] copyItemAtURL:sysCopyPrefsPathURL toURL:newBackupPrefsPathURL error:nil] == YES) {
|
||||||
NSLog (@"Copy successful - %@", file);
|
NSLog (@"Copy successful - %@", file);
|
||||||
} else {
|
} else {
|
||||||
NSLog (@"Copy failed - %@", file);
|
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);
|
||||||
|
|
||||||
|
|
||||||
}];
|
for (id file in _filteredSBFolderItems){
|
||||||
[createBackupAlert addAction:confirmAction];
|
|
||||||
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
|
sysCopySBPath = [NSMutableString stringWithString: @"/private/var/mobile/Library/SpringBoard/"];
|
||||||
NSLog(@"Canelled");
|
[sysCopySBPath appendString: file];
|
||||||
}];
|
|
||||||
[createBackupAlert addAction:cancelAction];
|
NSLog(@"File_Old_Location:%@", sysCopySBPath);
|
||||||
[self presentViewController:createBackupAlert animated:YES completion:nil];
|
|
||||||
|
//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 {
|
- (IBAction)restoreBackup:(id)sender {
|
||||||
|
|
||||||
lightHome = [UIImage imageWithContentsOfFile:@"/Library/FlashBack/Backups/3/SBFolder/LockBackgroundThumbnail.jpg"];
|
lightHome = [UIImage imageWithContentsOfFile:@"/Library/FlashBack/Backups/3/SBFolder/LockBackgroundThumbnail.jpg"];
|
||||||
|
@ -158,68 +443,68 @@ UIImage *darkHome;
|
||||||
|
|
||||||
/*if (backupNameSelected == nil){
|
/*if (backupNameSelected == nil){
|
||||||
|
|
||||||
UIAlertController * selectBackupAlert= [UIAlertController
|
UIAlertController * selectBackupAlert= [UIAlertController
|
||||||
alertControllerWithTitle:@"Select a Backup!"
|
alertControllerWithTitle:@"Select a Backup!"
|
||||||
message:@"Scroll through the list then let it settle on an item to select the backup."
|
message:@"Scroll through the list then let it settle on an item to select the backup."
|
||||||
preferredStyle:UIAlertControllerStyleAlert];
|
preferredStyle:UIAlertControllerStyleAlert];
|
||||||
|
|
||||||
UIAlertAction* ok = [UIAlertAction
|
UIAlertAction* ok = [UIAlertAction
|
||||||
actionWithTitle:@"ok"
|
actionWithTitle:@"ok"
|
||||||
style:UIAlertActionStyleDefault
|
style:UIAlertActionStyleDefault
|
||||||
handler:^(UIAlertAction * action)
|
handler:^(UIAlertAction * action)
|
||||||
{
|
{
|
||||||
[selectBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
[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
|
UIAlertController * restoreBackupAlert= [UIAlertController
|
||||||
alertControllerWithTitle:@"Restore Backup"
|
alertControllerWithTitle:@"Restore Backup"
|
||||||
message:@"Your device will revert to the selected backup! Please wait for your device to respring."
|
message:@"Your device will revert to the selected backup! Please wait for your device to respring."
|
||||||
preferredStyle:UIAlertControllerStyleAlert];
|
preferredStyle:UIAlertControllerStyleAlert];
|
||||||
|
|
||||||
UIAlertAction* ok = [UIAlertAction
|
UIAlertAction* ok = [UIAlertAction
|
||||||
actionWithTitle:@"OK"
|
actionWithTitle:@"OK"
|
||||||
style:UIAlertActionStyleDefault
|
style:UIAlertActionStyleDefault
|
||||||
handler:^(UIAlertAction * action)
|
handler:^(UIAlertAction * action)
|
||||||
{
|
{
|
||||||
|
|
||||||
//RUN RESTORE SCRIPT
|
//RUN RESTORE SCRIPT
|
||||||
|
|
||||||
NSTask *restoreTask = [[NSTask alloc] init];
|
NSTask *restoreTask = [[NSTask alloc] init];
|
||||||
[restoreTask setLaunchPath:@"/bin/bash"];
|
[restoreTask setLaunchPath:@"/bin/bash"];
|
||||||
[restoreTask setArguments:@[ @"FBRestore", backupNameSelected]];
|
[restoreTask setArguments:@[ @"FBRestore", backupNameSelected]];
|
||||||
[restoreTask launch];
|
[restoreTask launch];
|
||||||
|
|
||||||
UIAlertController * finishedRestoreAlert= [UIAlertController
|
UIAlertController * finishedRestoreAlert= [UIAlertController
|
||||||
alertControllerWithTitle:@"Restoring from backup"
|
alertControllerWithTitle:@"Restoring from backup"
|
||||||
message:@"Your device will respring when the process is completed."
|
message:@"Your device will respring when the process is completed."
|
||||||
preferredStyle:UIAlertControllerStyleAlert];
|
preferredStyle:UIAlertControllerStyleAlert];
|
||||||
[self presentViewController:finishedRestoreAlert animated:YES completion:nil];
|
[self presentViewController:finishedRestoreAlert animated:YES completion:nil];
|
||||||
|
|
||||||
[restoreBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
[restoreBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||||
|
|
||||||
}];
|
}];
|
||||||
UIAlertAction* cancel = [UIAlertAction
|
UIAlertAction* cancel = [UIAlertAction
|
||||||
actionWithTitle:@"Cancel"
|
actionWithTitle:@"Cancel"
|
||||||
style:UIAlertActionStyleDefault
|
style:UIAlertActionStyleDefault
|
||||||
handler:^(UIAlertAction * action)
|
handler:^(UIAlertAction * action)
|
||||||
{
|
{
|
||||||
[restoreBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
[restoreBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||||
|
|
||||||
}];
|
}];
|
||||||
|
|
||||||
[restoreBackupAlert addAction:cancel];
|
[restoreBackupAlert addAction:cancel];
|
||||||
[restoreBackupAlert addAction:ok];
|
[restoreBackupAlert addAction:ok];
|
||||||
|
|
||||||
[self presentViewController:restoreBackupAlert animated:YES completion:nil];
|
[self presentViewController:restoreBackupAlert animated:YES completion:nil];
|
||||||
}*/
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
- (IBAction)updateBackup:(id)sender {
|
- (IBAction)updateBackup:(id)sender {
|
||||||
|
@ -236,9 +521,9 @@ UIImage *darkHome;
|
||||||
style:UIAlertActionStyleDefault
|
style:UIAlertActionStyleDefault
|
||||||
handler:^(UIAlertAction * action)
|
handler:^(UIAlertAction * action)
|
||||||
{
|
{
|
||||||
[updateBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
[updateBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||||
|
|
||||||
}];
|
}];
|
||||||
|
|
||||||
[updateBackupAlert addAction:ok];
|
[updateBackupAlert addAction:ok];
|
||||||
|
|
||||||
|
@ -259,51 +544,51 @@ UIImage *darkHome;
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
[updateBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
[updateBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||||
|
|
||||||
NSTask *deleteTask = [[NSTask alloc] init];
|
NSTask *deleteTask = [[NSTask alloc] init];
|
||||||
[deleteTask setLaunchPath:@"/bin/bash"];
|
[deleteTask setLaunchPath:@"/bin/bash"];
|
||||||
[deleteTask setArguments:@[ @"FBDelete", backupNameSelected]];
|
[deleteTask setArguments:@[ @"FBDelete", backupNameSelected]];
|
||||||
[deleteTask launch];
|
[deleteTask launch];
|
||||||
[deleteTask waitUntilExit];
|
[deleteTask waitUntilExit];
|
||||||
|
|
||||||
NSTask *createTask = [[NSTask alloc] init];
|
NSTask *createTask = [[NSTask alloc] init];
|
||||||
[createTask setLaunchPath:@"/bin/bash"];
|
[createTask setLaunchPath:@"/bin/bash"];
|
||||||
[createTask setArguments:@[ @"FBCreate", backupNameSelected]];
|
[createTask setArguments:@[ @"FBCreate", backupNameSelected]];
|
||||||
[createTask launch];
|
[createTask launch];
|
||||||
[createTask waitUntilExit];
|
[createTask waitUntilExit];
|
||||||
|
|
||||||
UIAlertController * finishedUpdateAlert= [UIAlertController
|
UIAlertController * finishedUpdateAlert= [UIAlertController
|
||||||
alertControllerWithTitle:@"Backup Update Completed"
|
alertControllerWithTitle:@"Backup Update Completed"
|
||||||
message:@"The backup has been successfully updated"
|
message:@"The backup has been successfully updated"
|
||||||
preferredStyle:UIAlertControllerStyleAlert];
|
preferredStyle:UIAlertControllerStyleAlert];
|
||||||
|
|
||||||
UIAlertAction* ok = [UIAlertAction
|
UIAlertAction* ok = [UIAlertAction
|
||||||
actionWithTitle:@"OK"
|
actionWithTitle:@"OK"
|
||||||
style:UIAlertActionStyleDefault
|
style:UIAlertActionStyleDefault
|
||||||
handler:^(UIAlertAction * action)
|
handler:^(UIAlertAction * action)
|
||||||
{
|
{
|
||||||
|
|
||||||
_backupFolderArray = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:@"/Library/FlashBack/Backups/" error:nil];
|
_backupFolderArray = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:@"/Library/FlashBack/Backups/" error:nil];
|
||||||
[self->selectedBackupPickerView reloadAllComponents];
|
[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
|
UIAlertAction* cancel = [UIAlertAction
|
||||||
actionWithTitle:@"Cancel"
|
actionWithTitle:@"Cancel"
|
||||||
style:UIAlertActionStyleDefault
|
style:UIAlertActionStyleDefault
|
||||||
handler:^(UIAlertAction * action)
|
handler:^(UIAlertAction * action)
|
||||||
{
|
{
|
||||||
[updateBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
[updateBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||||
|
|
||||||
}];
|
}];
|
||||||
|
|
||||||
[updateBackupAlert addAction:cancel];
|
[updateBackupAlert addAction:cancel];
|
||||||
[updateBackupAlert addAction:ok];
|
[updateBackupAlert addAction:ok];
|
||||||
|
@ -328,9 +613,9 @@ UIImage *darkHome;
|
||||||
style:UIAlertActionStyleDefault
|
style:UIAlertActionStyleDefault
|
||||||
handler:^(UIAlertAction * action)
|
handler:^(UIAlertAction * action)
|
||||||
{
|
{
|
||||||
[selectBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
[selectBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||||
|
|
||||||
}];
|
}];
|
||||||
|
|
||||||
[selectBackupAlert addAction:ok];
|
[selectBackupAlert addAction:ok];
|
||||||
|
|
||||||
|
@ -350,34 +635,34 @@ UIImage *darkHome;
|
||||||
handler:^(UIAlertAction * action)
|
handler:^(UIAlertAction * action)
|
||||||
{
|
{
|
||||||
|
|
||||||
UIAlertController * packageBackupWait= [UIAlertController
|
UIAlertController * packageBackupWait= [UIAlertController
|
||||||
alertControllerWithTitle:@"Backup DEB"
|
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]"
|
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];
|
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];
|
NSTask *packageTask = [[NSTask alloc] init];
|
||||||
[packageTask setLaunchPath:@"/bin/bash"];
|
[packageTask setLaunchPath:@"/bin/bash"];
|
||||||
[packageTask setArguments:@[ @"FBPackage", backupNameSelected]];
|
[packageTask setArguments:@[ @"FBPackage", backupNameSelected]];
|
||||||
[packageTask launch];
|
[packageTask launch];
|
||||||
[packageTask waitUntilExit];
|
[packageTask waitUntilExit];
|
||||||
|
|
||||||
|
|
||||||
[packageBackupWait dismissViewControllerAnimated:YES completion:nil];
|
[packageBackupWait dismissViewControllerAnimated:YES completion:nil];
|
||||||
|
|
||||||
}];
|
}];
|
||||||
UIAlertAction* cancel = [UIAlertAction
|
UIAlertAction* cancel = [UIAlertAction
|
||||||
actionWithTitle:@"Cancel"
|
actionWithTitle:@"Cancel"
|
||||||
style:UIAlertActionStyleDefault
|
style:UIAlertActionStyleDefault
|
||||||
handler:^(UIAlertAction * action)
|
handler:^(UIAlertAction * action)
|
||||||
{
|
{
|
||||||
[packageBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
[packageBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||||
|
|
||||||
}];
|
}];
|
||||||
|
|
||||||
[packageBackupAlert addAction:cancel];
|
[packageBackupAlert addAction:cancel];
|
||||||
[packageBackupAlert addAction:ok];
|
[packageBackupAlert addAction:ok];
|
||||||
|
@ -389,18 +674,18 @@ UIImage *darkHome;
|
||||||
else{
|
else{
|
||||||
|
|
||||||
UIAlertController * noBackupDEBAlert = [UIAlertController
|
UIAlertController * noBackupDEBAlert = [UIAlertController
|
||||||
alertControllerWithTitle:@"Creating DEBs is only available in the full version"
|
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!"
|
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];
|
preferredStyle:UIAlertControllerStyleAlert];
|
||||||
|
|
||||||
UIAlertAction* ok = [UIAlertAction
|
UIAlertAction* ok = [UIAlertAction
|
||||||
actionWithTitle:@"ok"
|
actionWithTitle:@"ok"
|
||||||
style:UIAlertActionStyleDefault
|
style:UIAlertActionStyleDefault
|
||||||
handler:^(UIAlertAction * action)
|
handler:^(UIAlertAction * action)
|
||||||
{
|
{
|
||||||
[noBackupDEBAlert dismissViewControllerAnimated:YES completion:nil];
|
[noBackupDEBAlert dismissViewControllerAnimated:YES completion:nil];
|
||||||
|
|
||||||
}];
|
}];
|
||||||
|
|
||||||
[noBackupDEBAlert addAction:ok];
|
[noBackupDEBAlert addAction:ok];
|
||||||
|
|
||||||
|
@ -421,51 +706,51 @@ UIImage *darkHome;
|
||||||
style:UIAlertActionStyleDefault
|
style:UIAlertActionStyleDefault
|
||||||
handler:^(UIAlertAction * action)
|
handler:^(UIAlertAction * action)
|
||||||
{
|
{
|
||||||
[tutorialAlert dismissViewControllerAnimated:YES completion:nil];
|
[tutorialAlert dismissViewControllerAnimated:YES completion:nil];
|
||||||
|
|
||||||
|
|
||||||
UIAlertController * infoAlert= [UIAlertController
|
UIAlertController * infoAlert= [UIAlertController
|
||||||
alertControllerWithTitle:@"Known issues"
|
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"
|
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];
|
preferredStyle:UIAlertControllerStyleAlert];
|
||||||
|
|
||||||
UIAlertAction* okay = [UIAlertAction
|
UIAlertAction* okay = [UIAlertAction
|
||||||
actionWithTitle:@"ok"
|
actionWithTitle:@"ok"
|
||||||
style:UIAlertActionStyleDefault
|
style:UIAlertActionStyleDefault
|
||||||
handler:^(UIAlertAction * action)
|
handler:^(UIAlertAction * action)
|
||||||
{
|
{
|
||||||
[infoAlert dismissViewControllerAnimated:YES completion:nil];
|
[infoAlert dismissViewControllerAnimated:YES completion:nil];
|
||||||
|
|
||||||
|
|
||||||
UIAlertController * contactAlert= [UIAlertController
|
UIAlertController * contactAlert= [UIAlertController
|
||||||
alertControllerWithTitle:@"Contact Me"
|
alertControllerWithTitle:@"Contact Me"
|
||||||
message:@"\nYou can contact my via Twitter or Email\n\n@micahpgomez\n\nmpg13@micahpgomez.dev\n\nhttps://www.micahpgomez.dev"
|
message:@"\nYou can contact my via Twitter or Email\n\n@micahpgomez\n\nmpg13@micahpgomez.dev\n\nhttps://www.micahpgomez.dev"
|
||||||
preferredStyle:UIAlertControllerStyleAlert];
|
preferredStyle:UIAlertControllerStyleAlert];
|
||||||
|
|
||||||
UIAlertAction* okey = [UIAlertAction
|
UIAlertAction* okey = [UIAlertAction
|
||||||
actionWithTitle:@"ok"
|
actionWithTitle:@"ok"
|
||||||
style:UIAlertActionStyleDefault
|
style:UIAlertActionStyleDefault
|
||||||
handler:^(UIAlertAction * action)
|
handler:^(UIAlertAction * action)
|
||||||
{
|
{
|
||||||
[contactAlert dismissViewControllerAnimated:YES completion:nil];
|
[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];
|
[tutorialAlert addAction:ok];
|
||||||
|
|
||||||
|
@ -487,9 +772,9 @@ UIImage *darkHome;
|
||||||
style:UIAlertActionStyleDefault
|
style:UIAlertActionStyleDefault
|
||||||
handler:^(UIAlertAction * action)
|
handler:^(UIAlertAction * action)
|
||||||
{
|
{
|
||||||
[selectBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
[selectBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||||
|
|
||||||
}];
|
}];
|
||||||
|
|
||||||
[selectBackupAlert addAction:ok];
|
[selectBackupAlert addAction:ok];
|
||||||
|
|
||||||
|
@ -508,47 +793,47 @@ UIImage *darkHome;
|
||||||
handler:^(UIAlertAction * action)
|
handler:^(UIAlertAction * action)
|
||||||
{
|
{
|
||||||
|
|
||||||
NSTask *deleteTask = [[NSTask alloc] init];
|
NSTask *deleteTask = [[NSTask alloc] init];
|
||||||
[deleteTask setLaunchPath:@"/bin/bash"];
|
[deleteTask setLaunchPath:@"/bin/bash"];
|
||||||
[deleteTask setArguments:@[ @"FBDelete", backupNameSelected]];
|
[deleteTask setArguments:@[ @"FBDelete", backupNameSelected]];
|
||||||
[deleteTask launch];
|
[deleteTask launch];
|
||||||
[deleteTask waitUntilExit];
|
[deleteTask waitUntilExit];
|
||||||
|
|
||||||
UIAlertController * deleteFinishedAlert= [UIAlertController
|
UIAlertController * deleteFinishedAlert= [UIAlertController
|
||||||
alertControllerWithTitle:@"Backup Deleted"
|
alertControllerWithTitle:@"Backup Deleted"
|
||||||
message:@"The backup has been deleted successfully"
|
message:@"The backup has been deleted successfully"
|
||||||
preferredStyle:UIAlertControllerStyleAlert];
|
preferredStyle:UIAlertControllerStyleAlert];
|
||||||
|
|
||||||
UIAlertAction* okey = [UIAlertAction
|
UIAlertAction* okey = [UIAlertAction
|
||||||
actionWithTitle:@"ok"
|
actionWithTitle:@"ok"
|
||||||
style:UIAlertActionStyleDefault
|
style:UIAlertActionStyleDefault
|
||||||
handler:^(UIAlertAction * action)
|
handler:^(UIAlertAction * action)
|
||||||
{
|
{
|
||||||
|
|
||||||
_backupFolderArray = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:@"/Library/FlashBack/Backups/" error:nil];
|
_backupFolderArray = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:@"/Library/FlashBack/Backups/" error:nil];
|
||||||
[self->selectedBackupPickerView reloadAllComponents];
|
[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
|
UIAlertAction* cancel = [UIAlertAction
|
||||||
actionWithTitle:@"Cancel"
|
actionWithTitle:@"Cancel"
|
||||||
style:UIAlertActionStyleDefault
|
style:UIAlertActionStyleDefault
|
||||||
handler:^(UIAlertAction * action)
|
handler:^(UIAlertAction * action)
|
||||||
{
|
{
|
||||||
|
|
||||||
[deleteBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
[deleteBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||||
|
|
||||||
}];
|
}];
|
||||||
|
|
||||||
[deleteBackupAlert addAction:cancel];
|
[deleteBackupAlert addAction:cancel];
|
||||||
[deleteBackupAlert addAction:ok];
|
[deleteBackupAlert addAction:ok];
|
||||||
|
@ -585,9 +870,9 @@ UIImage *darkHome;
|
||||||
style:UIAlertActionStyleDefault
|
style:UIAlertActionStyleDefault
|
||||||
handler:^(UIAlertAction * action)
|
handler:^(UIAlertAction * action)
|
||||||
{
|
{
|
||||||
[failedDRMAlert dismissViewControllerAnimated:YES completion:nil];
|
[failedDRMAlert dismissViewControllerAnimated:YES completion:nil];
|
||||||
//exit(0);
|
//exit(0);
|
||||||
}];
|
}];
|
||||||
|
|
||||||
UIAlertController * trialNoticeAlert= [UIAlertController
|
UIAlertController * trialNoticeAlert= [UIAlertController
|
||||||
alertControllerWithTitle:@"Trial Notice"
|
alertControllerWithTitle:@"Trial Notice"
|
||||||
|
@ -599,8 +884,8 @@ UIImage *darkHome;
|
||||||
style:UIAlertActionStyleDefault
|
style:UIAlertActionStyleDefault
|
||||||
handler:^(UIAlertAction * action)
|
handler:^(UIAlertAction * action)
|
||||||
{
|
{
|
||||||
[trialNoticeAlert dismissViewControllerAnimated:YES completion:nil];
|
[trialNoticeAlert dismissViewControllerAnimated:YES completion:nil];
|
||||||
}];
|
}];
|
||||||
|
|
||||||
[failedDRMAlert addAction:failedDRMOk];
|
[failedDRMAlert addAction:failedDRMOk];
|
||||||
[trialNoticeAlert addAction:trialOk];
|
[trialNoticeAlert addAction:trialOk];
|
||||||
|
@ -625,7 +910,7 @@ UIImage *darkHome;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
trial = NO;
|
trial = NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -643,9 +928,9 @@ UIImage *darkHome;
|
||||||
style:UIAlertActionStyleDefault
|
style:UIAlertActionStyleDefault
|
||||||
handler:^(UIAlertAction * action)
|
handler:^(UIAlertAction * action)
|
||||||
{
|
{
|
||||||
[emptyArrayAlert dismissViewControllerAnimated:YES completion:nil];
|
[emptyArrayAlert dismissViewControllerAnimated:YES completion:nil];
|
||||||
|
|
||||||
}];
|
}];
|
||||||
|
|
||||||
[emptyArrayAlert addAction:ok];
|
[emptyArrayAlert addAction:ok];
|
||||||
|
|
||||||
|
@ -661,7 +946,7 @@ UIImage *darkHome;
|
||||||
|
|
||||||
selectedBackupImageURL=selectedBackupURL;
|
selectedBackupImageURL=selectedBackupURL;
|
||||||
|
|
||||||
[selectedBackupImageURL appendString: @"/SBFolder/LockBackgroundThumbnail.jpg"];
|
[selectedBackupImageURL appendString: @"/Wallpaper/lightHomeWP.png"];
|
||||||
NSLog(@"%@", selectedBackupImageURL);
|
NSLog(@"%@", selectedBackupImageURL);
|
||||||
NSURL *url = [NSURL fileURLWithPath:selectedBackupImageURL];
|
NSURL *url = [NSURL fileURLWithPath:selectedBackupImageURL];
|
||||||
NSData *data = [NSData dataWithContentsOfURL:url];
|
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>
|
<dict>
|
||||||
<key>files</key>
|
<key>files</key>
|
||||||
<dict>
|
<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>
|
<key>AppIcon60x60@2x.png</key>
|
||||||
<data>
|
<data>
|
||||||
Myhbo34Mzba1Vd2A/DUUSJxnVD4=
|
Myhbo34Mzba1Vd2A/DUUSJxnVD4=
|
||||||
</data>
|
</data>
|
||||||
<key>AppIcon60x60@3x.png</key>
|
|
||||||
<data>
|
|
||||||
U9lg64M0cAXEeI13sPfcfemfBFo=
|
|
||||||
</data>
|
|
||||||
<key>AppIcon76x76@2x~ipad.png</key>
|
<key>AppIcon76x76@2x~ipad.png</key>
|
||||||
<data>
|
<data>
|
||||||
tPVGmcsOfSKzncF+8Kb2FIP2knA=
|
tPVGmcsOfSKzncF+8Kb2FIP2knA=
|
||||||
</data>
|
</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>
|
<key>Assets.car</key>
|
||||||
<data>
|
<data>
|
||||||
ImJz/XEPmoSJqCwQYG00Cgi7RyQ=
|
Krc89ZxgZU4NnvVLhXhIHWvtpmU=
|
||||||
</data>
|
</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>
|
<data>
|
||||||
l5XjqZtyHimuVoTcGZuvcFx9OyU=
|
R+d6CDBkcAwx9QItyDTH6sIe5rA=
|
||||||
</data>
|
|
||||||
<key>Base.lproj/LaunchScreen.storyboardc/01J-lp-oVM-view-Ze5-6b-2t3.nib/runtime.nib</key>
|
|
||||||
<data>
|
|
||||||
ofw6Idv2M3pc2XcI12eQrHw2t6E=
|
|
||||||
</data>
|
</data>
|
||||||
<key>Base.lproj/LaunchScreen.storyboardc/Info.plist</key>
|
<key>Base.lproj/LaunchScreen.storyboardc/Info.plist</key>
|
||||||
<data>
|
<data>
|
||||||
n2t8gsDpfE6XkhG31p7IQJRxTxU=
|
n2t8gsDpfE6XkhG31p7IQJRxTxU=
|
||||||
</data>
|
</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>
|
<data>
|
||||||
ULVU2MW4JFPQVEOj7KgAwhm5GF0=
|
DVNg6tcs0TATd+CQeWtYldBxZI8=
|
||||||
</data>
|
|
||||||
<key>Base.lproj/LaunchScreen.storyboardc/UIViewController-01J-lp-oVM.nib/runtime.nib</key>
|
|
||||||
<data>
|
|
||||||
N+Wz6OfI9Momo3bcwX8GEJTscEE=
|
|
||||||
</data>
|
</data>
|
||||||
<key>Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib/objects-11.0+.nib</key>
|
<key>Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib/objects-11.0+.nib</key>
|
||||||
<data>
|
<data>
|
||||||
N3PA1wcMe+fxiblw3gCX8nz8gYo=
|
5Np+q5sNW2goFvT3xa95+eHbXCw=
|
||||||
</data>
|
</data>
|
||||||
<key>Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib/objects-13.0+.nib</key>
|
<key>Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib/objects-13.0+.nib</key>
|
||||||
<data>
|
<data>
|
||||||
KP/3A5NqslHLb/kvTIwJvoZyw00=
|
qpqVLdSwc7qNeFXzZYMiVYlzysk=
|
||||||
</data>
|
</data>
|
||||||
<key>Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib/runtime.nib</key>
|
<key>Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib/runtime.nib</key>
|
||||||
<data>
|
<data>
|
||||||
t20YxFQRSLb3x5dJdwAg4vAzVyE=
|
WdpzqeJ4TLtQAOzDqGYZG9GR6tg=
|
||||||
</data>
|
</data>
|
||||||
<key>Base.lproj/Main.storyboardc/Info.plist</key>
|
<key>Base.lproj/Main.storyboardc/Info.plist</key>
|
||||||
<data>
|
<data>
|
||||||
|
@ -114,19 +46,19 @@
|
||||||
</data>
|
</data>
|
||||||
<key>Base.lproj/Main.storyboardc/UIViewController-BYZ-38-t0r.nib/objects-11.0+.nib</key>
|
<key>Base.lproj/Main.storyboardc/UIViewController-BYZ-38-t0r.nib/objects-11.0+.nib</key>
|
||||||
<data>
|
<data>
|
||||||
Y9a1GaKTRUosUcKwf6iBfugEkm0=
|
9F7MwXutxU82RUxMcMVtEbBOURg=
|
||||||
</data>
|
</data>
|
||||||
<key>Base.lproj/Main.storyboardc/UIViewController-BYZ-38-t0r.nib/objects-13.0+.nib</key>
|
<key>Base.lproj/Main.storyboardc/UIViewController-BYZ-38-t0r.nib/objects-13.0+.nib</key>
|
||||||
<data>
|
<data>
|
||||||
0L3wrkkozWdsDpWNMIK4OprQO7Q=
|
uJG7uDPeiE6Er32Rxhzd4e3RnHg=
|
||||||
</data>
|
</data>
|
||||||
<key>Base.lproj/Main.storyboardc/UIViewController-BYZ-38-t0r.nib/runtime.nib</key>
|
<key>Base.lproj/Main.storyboardc/UIViewController-BYZ-38-t0r.nib/runtime.nib</key>
|
||||||
<data>
|
<data>
|
||||||
5khYZGe3mcP3nwnsnW9Msh0A0MQ=
|
fLNipL3cf8WoCzDpBFCyywN4nQM=
|
||||||
</data>
|
</data>
|
||||||
<key>Info.plist</key>
|
<key>Info.plist</key>
|
||||||
<data>
|
<data>
|
||||||
6As4G7OLF5RTkoWFULstuFmVTB0=
|
WzSIzvBQ/qTrPeZHwBahA6CjmCk=
|
||||||
</data>
|
</data>
|
||||||
<key>PkgInfo</key>
|
<key>PkgInfo</key>
|
||||||
<data>
|
<data>
|
||||||
|
@ -134,303 +66,76 @@
|
||||||
</data>
|
</data>
|
||||||
<key>embedded.mobileprovision</key>
|
<key>embedded.mobileprovision</key>
|
||||||
<data>
|
<data>
|
||||||
85kRWtTHuvaEu8gHQR7nCwEVWic=
|
Oix9XPIMVhOC2qZ7UlTFwp2/xy0=
|
||||||
</data>
|
</data>
|
||||||
</dict>
|
</dict>
|
||||||
<key>files2</key>
|
<key>files2</key>
|
||||||
<dict>
|
<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>
|
<key>AppIcon60x60@2x.png</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>hash</key>
|
|
||||||
<data>
|
|
||||||
Myhbo34Mzba1Vd2A/DUUSJxnVD4=
|
|
||||||
</data>
|
|
||||||
<key>hash2</key>
|
<key>hash2</key>
|
||||||
<data>
|
<data>
|
||||||
hMxJFn2Q8X2CHF5SnOE8+l9CeQaATCxnDstbs3mN4Rs=
|
hMxJFn2Q8X2CHF5SnOE8+l9CeQaATCxnDstbs3mN4Rs=
|
||||||
</data>
|
</data>
|
||||||
</dict>
|
</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>
|
<key>AppIcon76x76@2x~ipad.png</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>hash</key>
|
|
||||||
<data>
|
|
||||||
tPVGmcsOfSKzncF+8Kb2FIP2knA=
|
|
||||||
</data>
|
|
||||||
<key>hash2</key>
|
<key>hash2</key>
|
||||||
<data>
|
<data>
|
||||||
nx4xIL57Q8apHQidIHkz+NQKHjXYqt4f2sO7xzhjVTc=
|
nx4xIL57Q8apHQidIHkz+NQKHjXYqt4f2sO7xzhjVTc=
|
||||||
</data>
|
</data>
|
||||||
</dict>
|
</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>
|
<key>Assets.car</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>hash</key>
|
|
||||||
<data>
|
|
||||||
ImJz/XEPmoSJqCwQYG00Cgi7RyQ=
|
|
||||||
</data>
|
|
||||||
<key>hash2</key>
|
<key>hash2</key>
|
||||||
<data>
|
<data>
|
||||||
p/KVm31KNhUF7x635aYTprnw1qun88j+JPs/ZaUKFEE=
|
aIRNdnGpEQCWoyK0E8fojsSifgSwMYUFMUPSuAL6dC0=
|
||||||
</data>
|
</data>
|
||||||
</dict>
|
</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>
|
<dict>
|
||||||
<key>hash</key>
|
|
||||||
<data>
|
|
||||||
l5XjqZtyHimuVoTcGZuvcFx9OyU=
|
|
||||||
</data>
|
|
||||||
<key>hash2</key>
|
<key>hash2</key>
|
||||||
<data>
|
<data>
|
||||||
PZntXE6D9ByUyb+9+lyyEe7/9vfdgwHXsQvTO8NbpJc=
|
SSu1d2sRc7dQstKpTVve6hJL204Omjs76i1jfTxKDog=
|
||||||
</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=
|
|
||||||
</data>
|
</data>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Base.lproj/LaunchScreen.storyboardc/Info.plist</key>
|
<key>Base.lproj/LaunchScreen.storyboardc/Info.plist</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>hash</key>
|
|
||||||
<data>
|
|
||||||
n2t8gsDpfE6XkhG31p7IQJRxTxU=
|
|
||||||
</data>
|
|
||||||
<key>hash2</key>
|
<key>hash2</key>
|
||||||
<data>
|
<data>
|
||||||
HyVdXMU7Ux4/KalAao30mpWOK/lEPT4gvYN09wf31cg=
|
HyVdXMU7Ux4/KalAao30mpWOK/lEPT4gvYN09wf31cg=
|
||||||
</data>
|
</data>
|
||||||
</dict>
|
</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>
|
<dict>
|
||||||
<key>hash</key>
|
|
||||||
<data>
|
|
||||||
ULVU2MW4JFPQVEOj7KgAwhm5GF0=
|
|
||||||
</data>
|
|
||||||
<key>hash2</key>
|
<key>hash2</key>
|
||||||
<data>
|
<data>
|
||||||
t7bdRwS8hJi3Q95LNa0yrIFUCuenmoKfHqyVndUjHy8=
|
20NUGaajIa4VaBW27xP1Crh+2gB5ylcfT9P2vFS/vJE=
|
||||||
</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=
|
|
||||||
</data>
|
</data>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib/objects-11.0+.nib</key>
|
<key>Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib/objects-11.0+.nib</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>hash</key>
|
|
||||||
<data>
|
|
||||||
N3PA1wcMe+fxiblw3gCX8nz8gYo=
|
|
||||||
</data>
|
|
||||||
<key>hash2</key>
|
<key>hash2</key>
|
||||||
<data>
|
<data>
|
||||||
Keb76x/ruvqSluBD5Ul2oSJbC+GRKL6HrUN6ON7ZP4c=
|
LyAD4F9fQRt4C7s8FBHQgM1OA2j33Hr7hLcZ7DnxIDM=
|
||||||
</data>
|
</data>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib/objects-13.0+.nib</key>
|
<key>Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib/objects-13.0+.nib</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>hash</key>
|
|
||||||
<data>
|
|
||||||
KP/3A5NqslHLb/kvTIwJvoZyw00=
|
|
||||||
</data>
|
|
||||||
<key>hash2</key>
|
<key>hash2</key>
|
||||||
<data>
|
<data>
|
||||||
s7r7x1bGOlanCORTsbKY+po4r1ZVKv9MioedKcgDncc=
|
vb3yaEYsEFOsYjJTcnxxZIb9TZoyq0z41ofQQK8aOVE=
|
||||||
</data>
|
</data>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib/runtime.nib</key>
|
<key>Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib/runtime.nib</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>hash</key>
|
|
||||||
<data>
|
|
||||||
t20YxFQRSLb3x5dJdwAg4vAzVyE=
|
|
||||||
</data>
|
|
||||||
<key>hash2</key>
|
<key>hash2</key>
|
||||||
<data>
|
<data>
|
||||||
BVAa/3t3IAFY9Vhm54HGXepMimoOe/kcfadHQ05dYwA=
|
2PYJcQvOSP90Blq3CaxrNYY/6vaN9tKtKV0H6kaX8TM=
|
||||||
</data>
|
</data>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Base.lproj/Main.storyboardc/Info.plist</key>
|
<key>Base.lproj/Main.storyboardc/Info.plist</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>hash</key>
|
|
||||||
<data>
|
|
||||||
MDrKFvFWroTb0+KEbQShBcoBvo4=
|
|
||||||
</data>
|
|
||||||
<key>hash2</key>
|
<key>hash2</key>
|
||||||
<data>
|
<data>
|
||||||
PpvapAjR62rl6Ym4E6hkTgpKmBICxTaQXeUqcpHmmqQ=
|
PpvapAjR62rl6Ym4E6hkTgpKmBICxTaQXeUqcpHmmqQ=
|
||||||
|
@ -438,46 +143,30 @@
|
||||||
</dict>
|
</dict>
|
||||||
<key>Base.lproj/Main.storyboardc/UIViewController-BYZ-38-t0r.nib/objects-11.0+.nib</key>
|
<key>Base.lproj/Main.storyboardc/UIViewController-BYZ-38-t0r.nib/objects-11.0+.nib</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>hash</key>
|
|
||||||
<data>
|
|
||||||
Y9a1GaKTRUosUcKwf6iBfugEkm0=
|
|
||||||
</data>
|
|
||||||
<key>hash2</key>
|
<key>hash2</key>
|
||||||
<data>
|
<data>
|
||||||
ZdvAd3vXemAOOAlZpZd15K/LzRUe04eapCHF0NVjpvk=
|
Gexc3n/2YAaeLASw0/Tu4ezNpN6/rVWKFFVonlLgYPo=
|
||||||
</data>
|
</data>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Base.lproj/Main.storyboardc/UIViewController-BYZ-38-t0r.nib/objects-13.0+.nib</key>
|
<key>Base.lproj/Main.storyboardc/UIViewController-BYZ-38-t0r.nib/objects-13.0+.nib</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>hash</key>
|
|
||||||
<data>
|
|
||||||
0L3wrkkozWdsDpWNMIK4OprQO7Q=
|
|
||||||
</data>
|
|
||||||
<key>hash2</key>
|
<key>hash2</key>
|
||||||
<data>
|
<data>
|
||||||
WN0LMXI6Sfky30DnTJ2PHe0y7a5SsvJycJ69GuYCGaw=
|
zOyATQsmHIWfzd9ruDP0OBfIX1x84uKw1QsBRFUWJe4=
|
||||||
</data>
|
</data>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Base.lproj/Main.storyboardc/UIViewController-BYZ-38-t0r.nib/runtime.nib</key>
|
<key>Base.lproj/Main.storyboardc/UIViewController-BYZ-38-t0r.nib/runtime.nib</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>hash</key>
|
|
||||||
<data>
|
|
||||||
5khYZGe3mcP3nwnsnW9Msh0A0MQ=
|
|
||||||
</data>
|
|
||||||
<key>hash2</key>
|
<key>hash2</key>
|
||||||
<data>
|
<data>
|
||||||
Scz4gjaPWlm4v6xxcJYMCXSkMCNBw+cFEygmKL1kKTc=
|
py0cxo8inTLUS8pH1XVDJqaDKHCHkK2f0zEP5lTvslY=
|
||||||
</data>
|
</data>
|
||||||
</dict>
|
</dict>
|
||||||
<key>embedded.mobileprovision</key>
|
<key>embedded.mobileprovision</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>hash</key>
|
|
||||||
<data>
|
|
||||||
85kRWtTHuvaEu8gHQR7nCwEVWic=
|
|
||||||
</data>
|
|
||||||
<key>hash2</key>
|
<key>hash2</key>
|
||||||
<data>
|
<data>
|
||||||
q9IhoQdXPz9WKGlGu0EoYTSM6gDTHD/bfMK7M1TmOPc=
|
wkTlWxFKtxR/vpeVXoyweij5JJs5ll4nyAhFhPBGV+s=
|
||||||
</data>
|
</data>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
|
|
Binary file not shown.
Reference in a new issue