Beta 1 finished. Added implementation of checking if backup is selected, added several functions. All buttons work as tested
This commit is contained in:
parent
d343e2b8ad
commit
7190d2aa3d
5 changed files with 454 additions and 76 deletions
|
@ -2,7 +2,7 @@
|
||||||
"images" : [
|
"images" : [
|
||||||
{
|
{
|
||||||
"idiom" : "universal",
|
"idiom" : "universal",
|
||||||
"filename" : "bgimage.jpg",
|
"filename" : "bgimage.png",
|
||||||
"scale" : "1x"
|
"scale" : "1x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 78 KiB |
BIN
FlashBack/Assets.xcassets/bgimage.imageset/bgimage.png
vendored
Normal file
BIN
FlashBack/Assets.xcassets/bgimage.imageset/bgimage.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.4 MiB |
|
@ -18,12 +18,12 @@
|
||||||
<rect key="frame" x="0.0" y="0.0" width="375" height="812"/>
|
<rect key="frame" x="0.0" y="0.0" width="375" height="812"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" alpha="0.5" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" image="bgimage" translatesAutoresizingMaskIntoConstraints="NO" id="Xdq-a9-Vkk">
|
<imageView clipsSubviews="YES" userInteractionEnabled="NO" alpha="0.84999999999999998" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" image="bgimage" translatesAutoresizingMaskIntoConstraints="NO" id="Xdq-a9-Vkk">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="375" height="812"/>
|
<rect key="frame" x="0.0" y="0.0" width="375" height="812"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
</imageView>
|
</imageView>
|
||||||
<pickerView contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="X4R-sr-2s9">
|
<pickerView contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="X4R-sr-2s9">
|
||||||
<rect key="frame" x="16" y="309" width="343" height="194"/>
|
<rect key="frame" x="16" y="221" width="343" height="287"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
||||||
<color key="backgroundColor" white="1" alpha="0.25035761443661969" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
<color key="backgroundColor" white="1" alpha="0.25035761443661969" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
<connections>
|
<connections>
|
||||||
|
@ -32,7 +32,7 @@
|
||||||
</connections>
|
</connections>
|
||||||
</pickerView>
|
</pickerView>
|
||||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="XMB-Cv-YLA">
|
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="XMB-Cv-YLA">
|
||||||
<rect key="frame" x="16" y="670" width="167" height="50"/>
|
<rect key="frame" x="16" y="574" width="167" height="50"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
<color key="backgroundColor" white="1" alpha="0.25035761439999998" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
<color key="backgroundColor" white="1" alpha="0.25035761439999998" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="31"/>
|
<fontDescription key="fontDescription" type="system" pointSize="31"/>
|
||||||
|
@ -42,7 +42,7 @@
|
||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="WN9-tU-bOp">
|
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="WN9-tU-bOp">
|
||||||
<rect key="frame" x="192" y="670" width="167" height="50"/>
|
<rect key="frame" x="192" y="574" width="167" height="50"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
<color key="backgroundColor" white="1" alpha="0.25035761439999998" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
<color key="backgroundColor" white="1" alpha="0.25035761439999998" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="31"/>
|
<fontDescription key="fontDescription" type="system" pointSize="31"/>
|
||||||
|
@ -52,9 +52,9 @@
|
||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Z44-tn-4Km">
|
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Z44-tn-4Km">
|
||||||
<rect key="frame" x="16" y="728" width="343" height="50"/>
|
<rect key="frame" x="16" y="690" width="343" height="50"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
<color key="backgroundColor" white="1" alpha="0.25035761439999998" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
<color key="backgroundColor" red="1" green="0.51075712174615018" blue="0.48122861101819614" alpha="0.25035761439999998" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="31"/>
|
<fontDescription key="fontDescription" type="system" pointSize="31"/>
|
||||||
<state key="normal" title="Delete">
|
<state key="normal" title="Delete">
|
||||||
<color key="titleColor" red="1" green="0.084393614217168067" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="titleColor" red="1" green="0.084393614217168067" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
|
@ -64,7 +64,7 @@
|
||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="FKY-5f-bN9">
|
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="FKY-5f-bN9">
|
||||||
<rect key="frame" x="16" y="612" width="343" height="50"/>
|
<rect key="frame" x="16" y="516" width="343" height="50"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
<color key="backgroundColor" white="1" alpha="0.25035761439999998" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
<color key="backgroundColor" white="1" alpha="0.25035761439999998" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="31"/>
|
<fontDescription key="fontDescription" type="system" pointSize="31"/>
|
||||||
|
@ -73,26 +73,55 @@
|
||||||
<action selector="createBackup:" destination="BYZ-38-t0r" eventType="touchUpInside" id="HAA-of-GPp"/>
|
<action selector="createBackup:" destination="BYZ-38-t0r" eventType="touchUpInside" id="HAA-of-GPp"/>
|
||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
|
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="lNN-hV-Kcy">
|
||||||
|
<rect key="frame" x="16" y="632" width="167" height="50"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<color key="backgroundColor" white="1" alpha="0.25035761439999998" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
|
<fontDescription key="fontDescription" type="system" pointSize="31"/>
|
||||||
|
<state key="normal" title="Package"/>
|
||||||
|
<connections>
|
||||||
|
<action selector="packageBackup:" destination="BYZ-38-t0r" eventType="touchUpInside" id="BGU-Dg-Yyu"/>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Selected Backup:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="z1J-Te-u2O">
|
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Selected Backup:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="z1J-Te-u2O">
|
||||||
<rect key="frame" x="109" y="183" width="157" height="30"/>
|
<rect key="frame" x="108" y="145" width="157" height="30"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="20"/>
|
<fontDescription key="fontDescription" type="system" pointSize="20"/>
|
||||||
<nil key="textColor"/>
|
<nil key="textColor"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="gXr-H3-y6A">
|
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Scroll to Select a Backup" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="gXr-H3-y6A">
|
||||||
<rect key="frame" x="16" y="221" width="343" height="30"/>
|
<rect key="frame" x="16" y="183" width="343" height="30"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="15"/>
|
<fontDescription key="fontDescription" type="system" pointSize="13"/>
|
||||||
<nil key="textColor"/>
|
<nil key="textColor"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="FlashBack" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="84C-7a-WER">
|
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="FlashBack" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="84C-7a-WER">
|
||||||
<rect key="frame" x="16" y="82" width="343" height="93"/>
|
<rect key="frame" x="16" y="44" width="343" height="93"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
<fontDescription key="fontDescription" name="Courier" family="Courier" pointSize="50"/>
|
<fontDescription key="fontDescription" name="Courier" family="Courier" pointSize="60"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
|
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="BHq-ds-6bc">
|
||||||
|
<rect key="frame" x="192" y="631" width="167" height="50"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<color key="backgroundColor" white="1" alpha="0.25035761439999998" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
|
<fontDescription key="fontDescription" type="system" pointSize="31"/>
|
||||||
|
<state key="normal" title="Unpack"/>
|
||||||
|
<connections>
|
||||||
|
<action selector="unpackageBackup:" destination="BYZ-38-t0r" eventType="touchUpInside" id="ZaH-zv-Vd5"/>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="j3D-XF-u37">
|
||||||
|
<rect key="frame" x="103" y="748" width="167" height="42"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<fontDescription key="fontDescription" type="system" pointSize="25"/>
|
||||||
|
<state key="normal" title="Help"/>
|
||||||
|
<connections>
|
||||||
|
<action selector="helpMenu:" destination="BYZ-38-t0r" eventType="touchUpInside" id="Cqa-me-9od"/>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
</subviews>
|
</subviews>
|
||||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
<viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
|
<viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
|
||||||
|
@ -109,6 +138,6 @@
|
||||||
</scene>
|
</scene>
|
||||||
</scenes>
|
</scenes>
|
||||||
<resources>
|
<resources>
|
||||||
<image name="bgimage" width="1125" height="2436"/>
|
<image name="bgimage" width="1440" height="2960"/>
|
||||||
</resources>
|
</resources>
|
||||||
</document>
|
</document>
|
||||||
|
|
|
@ -19,6 +19,8 @@
|
||||||
NSArray *_backupFolderArray;
|
NSArray *_backupFolderArray;
|
||||||
NSString *_backupDirectory;
|
NSString *_backupDirectory;
|
||||||
NSMutableString *selectedBackupImageURL;
|
NSMutableString *selectedBackupImageURL;
|
||||||
|
NSMutableString *selectedBackupURL;
|
||||||
|
NSString *backupNameSelected;
|
||||||
|
|
||||||
|
|
||||||
@implementation ViewController
|
@implementation ViewController
|
||||||
|
@ -26,63 +28,105 @@ NSMutableString *selectedBackupImageURL;
|
||||||
|
|
||||||
- (IBAction)createBackup:(id)sender {
|
- (IBAction)createBackup:(id)sender {
|
||||||
|
|
||||||
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Enter the Backup Name" message:@"" 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];
|
||||||
[alertController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
|
[createBackupAlert addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
|
||||||
textField.placeholder = @"Backup Name";
|
textField.placeholder = @"Backup Name";
|
||||||
textField.secureTextEntry = NO;
|
textField.secureTextEntry = NO;
|
||||||
}];
|
}];
|
||||||
UIAlertAction *confirmAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
|
UIAlertAction *confirmAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
|
||||||
NSLog(@"Backup name is :%@", [[alertController textFields][0] text]);
|
NSLog(@"Backup name is :%@", [[createBackupAlert textFields][0] text]);
|
||||||
NSString *newBackupName=[[alertController textFields][0] text];
|
NSString *newBackupName=[[createBackupAlert textFields][0] text];
|
||||||
|
|
||||||
if([[[alertController textFields][0] text] isEqual:@""]){
|
if([[[createBackupAlert textFields][0] text] isEqual:@""]){
|
||||||
NSLog(@"empty backup name!");
|
NSLog(@"empty backup name!");
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
NSLog(@"Backup name is good!");
|
NSLog(@"Backup name is good!");
|
||||||
|
|
||||||
/*NSString *content = @"Put this in a file please.";
|
/*NSString *content = @"Put this in a file please.";
|
||||||
NSData *fileContents = [content dataUsingEncoding:NSUTF8StringEncoding];
|
NSData *fileContents = [content dataUsingEncoding:NSUTF8StringEncoding];
|
||||||
[[NSFileManager defaultManager] createFileAtPath:@"/Applications/test.txt"
|
[[NSFileManager defaultManager] createFileAtPath:@"/Applications/test.txt"
|
||||||
contents:fileContents
|
contents:fileContents
|
||||||
attributes:nil];*/
|
attributes:nil];*/
|
||||||
|
|
||||||
NSLog(@"Running NSTask");
|
NSLog(@"Running NSTask");
|
||||||
|
|
||||||
NSTask *task = [[NSTask alloc] init];
|
NSTask *createTask = [[NSTask alloc] init];
|
||||||
[task setLaunchPath:@"/usr/bin/bash"];
|
[createTask setLaunchPath:@"/usr/bin/bash"];
|
||||||
[task setArguments:@[ @"_FBCreate", newBackupName]];
|
[createTask setArguments:@[ @"FBCreate", newBackupName]];
|
||||||
[task launch];
|
[createTask launch];
|
||||||
|
[createTask waitUntilExit];
|
||||||
|
|
||||||
NSLog(@"Running NSTask failed, running posix_spawn");
|
UIAlertController * finishedCreateAlert= [UIAlertController
|
||||||
|
alertControllerWithTitle:@"Backup Creation Completed"
|
||||||
|
message:@"The backup will appear once you repoen the app."
|
||||||
|
preferredStyle:UIAlertControllerStyleAlert];
|
||||||
|
|
||||||
|
UIAlertAction* ok = [UIAlertAction
|
||||||
|
actionWithTitle:@"OK"
|
||||||
|
style:UIAlertActionStyleDefault
|
||||||
|
handler:^(UIAlertAction * action)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[finishedCreateAlert dismissViewControllerAnimated:YES completion:nil];
|
||||||
|
|
||||||
|
}];
|
||||||
|
[finishedCreateAlert addAction:ok];
|
||||||
|
|
||||||
|
[self presentViewController:finishedCreateAlert animated:YES completion:nil];
|
||||||
|
|
||||||
/*pid_t pid;
|
/*pid_t pid;
|
||||||
int status;
|
int status;
|
||||||
const char* args[] = {"killall", "backboardd", NULL, NULL};
|
const char* args[] = {"killall", "backboardd", NULL, NULL};
|
||||||
posix_spawn(&pid, "/bin/bash", NULL, NULL, (char* const*)args, NULL);
|
posix_spawn(&pid, "/bin/bash", NULL, NULL, (char* const*)args, NULL);
|
||||||
waitpid(pid, &status, WEXITED);*/
|
waitpid(pid, &status, WEXITED);*/
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}];
|
}];
|
||||||
[alertController addAction:confirmAction];
|
[createBackupAlert addAction:confirmAction];
|
||||||
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
|
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
|
||||||
NSLog(@"Canelled");
|
NSLog(@"Canelled");
|
||||||
}];
|
}];
|
||||||
[alertController addAction:cancelAction];
|
[createBackupAlert addAction:cancelAction];
|
||||||
[self presentViewController:alertController animated:YES completion:nil];
|
[self presentViewController:createBackupAlert animated:YES completion:nil];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
- (IBAction)restoreBackup:(id)sender {
|
- (IBAction)restoreBackup:(id)sender {
|
||||||
|
|
||||||
UIAlertController * alert= [UIAlertController
|
if (backupNameSelected == nil){
|
||||||
alertControllerWithTitle:@"Restore Backup"
|
|
||||||
message:@"Your device will revert to the selected backup!"
|
UIAlertController * selectBackupAlert= [UIAlertController
|
||||||
preferredStyle:UIAlertControllerStyleAlert];
|
alertControllerWithTitle:@"Select a Backup!"
|
||||||
|
message:@"Scroll through the list then let it settle on an item to select the backup."
|
||||||
|
preferredStyle:UIAlertControllerStyleAlert];
|
||||||
|
|
||||||
|
UIAlertAction* ok = [UIAlertAction
|
||||||
|
actionWithTitle:@"ok"
|
||||||
|
style:UIAlertActionStyleDefault
|
||||||
|
handler:^(UIAlertAction * action)
|
||||||
|
{
|
||||||
|
[selectBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||||
|
|
||||||
|
}];
|
||||||
|
|
||||||
|
[selectBackupAlert addAction:ok];
|
||||||
|
|
||||||
|
[self presentViewController:selectBackupAlert animated:YES completion:nil];
|
||||||
|
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
|
||||||
|
UIAlertController * restoreBackupAlert= [UIAlertController
|
||||||
|
alertControllerWithTitle:@"Restore Backup"
|
||||||
|
message:@"Your device will revert to the selected backup! Please wait for your device to respring."
|
||||||
|
preferredStyle:UIAlertControllerStyleAlert];
|
||||||
|
|
||||||
UIAlertAction* ok = [UIAlertAction
|
UIAlertAction* ok = [UIAlertAction
|
||||||
actionWithTitle:@"OK"
|
actionWithTitle:@"OK"
|
||||||
|
@ -90,9 +134,20 @@ NSMutableString *selectedBackupImageURL;
|
||||||
handler:^(UIAlertAction * action)
|
handler:^(UIAlertAction * action)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
//RUN RESTORE SCRIPT
|
||||||
|
|
||||||
|
NSTask *restoreTask = [[NSTask alloc] init];
|
||||||
|
[restoreTask setLaunchPath:@"/usr/bin/bash"];
|
||||||
|
[restoreTask setArguments:@[ @"FBRestore", backupNameSelected]];
|
||||||
|
[restoreTask launch];
|
||||||
|
|
||||||
[alert dismissViewControllerAnimated:YES completion:nil];
|
UIAlertController * finishedRestoreAlert= [UIAlertController
|
||||||
|
alertControllerWithTitle:@"Restoring from backup"
|
||||||
|
message:@"Your device will respring when the process is completed."
|
||||||
|
preferredStyle:UIAlertControllerStyleAlert];
|
||||||
|
[self presentViewController:finishedRestoreAlert animated:YES completion:nil];
|
||||||
|
|
||||||
|
[restoreBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||||
|
|
||||||
}];
|
}];
|
||||||
UIAlertAction* cancel = [UIAlertAction
|
UIAlertAction* cancel = [UIAlertAction
|
||||||
|
@ -100,23 +155,46 @@ NSMutableString *selectedBackupImageURL;
|
||||||
style:UIAlertActionStyleDefault
|
style:UIAlertActionStyleDefault
|
||||||
handler:^(UIAlertAction * action)
|
handler:^(UIAlertAction * action)
|
||||||
{
|
{
|
||||||
[alert dismissViewControllerAnimated:YES completion:nil];
|
[restoreBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||||
|
|
||||||
}];
|
}];
|
||||||
|
|
||||||
[alert addAction:cancel];
|
[restoreBackupAlert addAction:cancel];
|
||||||
[alert addAction:ok];
|
[restoreBackupAlert addAction:ok];
|
||||||
|
|
||||||
[self presentViewController:alert animated:YES completion:nil];
|
[self presentViewController:restoreBackupAlert animated:YES completion:nil];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- (IBAction)updateBackup:(id)sender {
|
- (IBAction)updateBackup:(id)sender {
|
||||||
|
|
||||||
UIAlertController * alert= [UIAlertController
|
if (backupNameSelected == nil){
|
||||||
alertControllerWithTitle:@"Update Backup"
|
|
||||||
message:@"The selected backup will be overwritten!"
|
UIAlertController * selectBackupAlert= [UIAlertController
|
||||||
preferredStyle:UIAlertControllerStyleAlert];
|
alertControllerWithTitle:@"Select a Backup!"
|
||||||
|
message:@"Scroll through the list then let it settle on an item to select the backup."
|
||||||
|
preferredStyle:UIAlertControllerStyleAlert];
|
||||||
|
|
||||||
|
UIAlertAction* ok = [UIAlertAction
|
||||||
|
actionWithTitle:@"ok"
|
||||||
|
style:UIAlertActionStyleDefault
|
||||||
|
handler:^(UIAlertAction * action)
|
||||||
|
{
|
||||||
|
[selectBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||||
|
|
||||||
|
}];
|
||||||
|
|
||||||
|
[selectBackupAlert addAction:ok];
|
||||||
|
|
||||||
|
[self presentViewController:selectBackupAlert animated:YES completion:nil];
|
||||||
|
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
|
||||||
|
UIAlertController * updateBackupAlert= [UIAlertController
|
||||||
|
alertControllerWithTitle:@"Update Backup"
|
||||||
|
message:@"The selected backup will be overwritten! Please wait until the completion pop-up appears"
|
||||||
|
preferredStyle:UIAlertControllerStyleAlert];
|
||||||
|
|
||||||
UIAlertAction* ok = [UIAlertAction
|
UIAlertAction* ok = [UIAlertAction
|
||||||
actionWithTitle:@"OK"
|
actionWithTitle:@"OK"
|
||||||
|
@ -125,8 +203,20 @@ NSMutableString *selectedBackupImageURL;
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
|
[updateBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||||
|
|
||||||
|
NSTask *deleteTask = [[NSTask alloc] init];
|
||||||
|
[deleteTask setLaunchPath:@"/usr/bin/bash"];
|
||||||
|
[deleteTask setArguments:@[ @"FBDelete", backupNameSelected]];
|
||||||
|
[deleteTask launch];
|
||||||
|
[deleteTask waitUntilExit];
|
||||||
|
|
||||||
|
NSTask *createTask = [[NSTask alloc] init];
|
||||||
|
[createTask setLaunchPath:@"/usr/bin/bash"];
|
||||||
|
[createTask setArguments:@[ @"FBCreate", backupNameSelected]];
|
||||||
|
[createTask launch];
|
||||||
|
[createTask waitUntilExit];
|
||||||
|
|
||||||
[alert dismissViewControllerAnimated:YES completion:nil];
|
|
||||||
|
|
||||||
}];
|
}];
|
||||||
UIAlertAction* cancel = [UIAlertAction
|
UIAlertAction* cancel = [UIAlertAction
|
||||||
|
@ -134,24 +224,276 @@ NSMutableString *selectedBackupImageURL;
|
||||||
style:UIAlertActionStyleDefault
|
style:UIAlertActionStyleDefault
|
||||||
handler:^(UIAlertAction * action)
|
handler:^(UIAlertAction * action)
|
||||||
{
|
{
|
||||||
[alert dismissViewControllerAnimated:YES completion:nil];
|
[updateBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||||
|
|
||||||
}];
|
}];
|
||||||
|
|
||||||
[alert addAction:cancel];
|
[updateBackupAlert addAction:cancel];
|
||||||
[alert addAction:ok];
|
[updateBackupAlert addAction:ok];
|
||||||
|
|
||||||
[self presentViewController:alert animated:YES completion:nil];
|
[self presentViewController:updateBackupAlert animated:YES completion:nil];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
- (IBAction)packageBackup:(id)sender {
|
||||||
|
|
||||||
|
if (backupNameSelected == nil){
|
||||||
|
|
||||||
|
UIAlertController * selectBackupAlert= [UIAlertController
|
||||||
|
alertControllerWithTitle:@"Select a Backup!"
|
||||||
|
message:@"Scroll through the list then let it settle on an item to select the backup."
|
||||||
|
preferredStyle:UIAlertControllerStyleAlert];
|
||||||
|
|
||||||
|
UIAlertAction* ok = [UIAlertAction
|
||||||
|
actionWithTitle:@"ok"
|
||||||
|
style:UIAlertActionStyleDefault
|
||||||
|
handler:^(UIAlertAction * action)
|
||||||
|
{
|
||||||
|
[selectBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||||
|
|
||||||
|
}];
|
||||||
|
|
||||||
|
[selectBackupAlert addAction:ok];
|
||||||
|
|
||||||
|
[self presentViewController:selectBackupAlert animated:YES completion:nil];
|
||||||
|
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
|
||||||
|
UIAlertController * packageBackupAlert= [UIAlertController
|
||||||
|
alertControllerWithTitle:@"Package Backup"
|
||||||
|
message:@"This will package the selected backup."
|
||||||
|
preferredStyle:UIAlertControllerStyleAlert];
|
||||||
|
|
||||||
|
UIAlertAction* ok = [UIAlertAction
|
||||||
|
actionWithTitle:@"OK"
|
||||||
|
style:UIAlertActionStyleDefault
|
||||||
|
handler:^(UIAlertAction * action)
|
||||||
|
{
|
||||||
|
|
||||||
|
//RUN RESTORE SCRIPT
|
||||||
|
|
||||||
|
[packageBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||||
|
|
||||||
|
NSTask *packageTask = [[NSTask alloc] init];
|
||||||
|
[packageTask setLaunchPath:@"/usr/bin/bash"];
|
||||||
|
[packageTask setArguments:@[ @"FBPackage", backupNameSelected]];
|
||||||
|
[packageTask launch];
|
||||||
|
[packageTask waitUntilExit];
|
||||||
|
|
||||||
|
UIAlertController * finishedPackageAlert= [UIAlertController
|
||||||
|
alertControllerWithTitle:@"Packaging Complete"
|
||||||
|
message:@"The package can be found in [/User/Documents/FlashBack/GeneratedPackages/]."
|
||||||
|
preferredStyle:UIAlertControllerStyleAlert];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
UIAlertAction* ok = [UIAlertAction
|
||||||
|
actionWithTitle:@"ok"
|
||||||
|
style:UIAlertActionStyleDefault
|
||||||
|
handler:^(UIAlertAction * action)
|
||||||
|
{
|
||||||
|
[finishedPackageAlert dismissViewControllerAnimated:YES completion:nil];
|
||||||
|
|
||||||
|
}];
|
||||||
|
|
||||||
|
[finishedPackageAlert addAction:ok];
|
||||||
|
|
||||||
|
[self presentViewController:finishedPackageAlert animated:YES completion:nil];
|
||||||
|
|
||||||
|
}];
|
||||||
|
UIAlertAction* cancel = [UIAlertAction
|
||||||
|
actionWithTitle:@"Cancel"
|
||||||
|
style:UIAlertActionStyleDefault
|
||||||
|
handler:^(UIAlertAction * action)
|
||||||
|
{
|
||||||
|
[packageBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||||
|
|
||||||
|
}];
|
||||||
|
|
||||||
|
[packageBackupAlert addAction:cancel];
|
||||||
|
[packageBackupAlert addAction:ok];
|
||||||
|
|
||||||
|
[self presentViewController:packageBackupAlert animated:YES completion:nil];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
- (IBAction)unpackageBackup:(id)sender {
|
||||||
|
|
||||||
|
if (backupNameSelected == nil){
|
||||||
|
|
||||||
|
UIAlertController * selectBackupAlert= [UIAlertController
|
||||||
|
alertControllerWithTitle:@"Select a Backup!"
|
||||||
|
message:@"Scroll through the list then let it settle on an item to select the backup."
|
||||||
|
preferredStyle:UIAlertControllerStyleAlert];
|
||||||
|
|
||||||
|
UIAlertAction* ok = [UIAlertAction
|
||||||
|
actionWithTitle:@"ok"
|
||||||
|
style:UIAlertActionStyleDefault
|
||||||
|
handler:^(UIAlertAction * action)
|
||||||
|
{
|
||||||
|
[selectBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||||
|
|
||||||
|
}];
|
||||||
|
|
||||||
|
[selectBackupAlert addAction:ok];
|
||||||
|
|
||||||
|
[self presentViewController:selectBackupAlert animated:YES completion:nil];
|
||||||
|
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
|
||||||
|
UIAlertController * unpackageBackupAlert= [UIAlertController
|
||||||
|
alertControllerWithTitle:@"Unpackage Imported Backups"
|
||||||
|
message:@"This will importall backups in [/User/Documents/FlashBack/Unpackage/]."
|
||||||
|
preferredStyle:UIAlertControllerStyleAlert];
|
||||||
|
|
||||||
|
UIAlertAction* ok = [UIAlertAction
|
||||||
|
actionWithTitle:@"OK"
|
||||||
|
style:UIAlertActionStyleDefault
|
||||||
|
handler:^(UIAlertAction * action)
|
||||||
|
{
|
||||||
|
|
||||||
|
//RUN RESTORE SCRIPT
|
||||||
|
|
||||||
|
NSTask *packageTask = [[NSTask alloc] init];
|
||||||
|
[packageTask setLaunchPath:@"/usr/bin/bash"];
|
||||||
|
[packageTask setArguments:@[ @"FBUnpackage"]];
|
||||||
|
[packageTask launch];
|
||||||
|
[packageTask waitUntilExit];
|
||||||
|
|
||||||
|
UIAlertController * finishedUnpackageAlert= [UIAlertController
|
||||||
|
alertControllerWithTitle:@"Import Complete"
|
||||||
|
message:@"Repoen the app to view imported backups."
|
||||||
|
preferredStyle:UIAlertControllerStyleAlert];
|
||||||
|
|
||||||
|
UIAlertAction* ok = [UIAlertAction
|
||||||
|
actionWithTitle:@"ok"
|
||||||
|
style:UIAlertActionStyleDefault
|
||||||
|
handler:^(UIAlertAction * action)
|
||||||
|
{
|
||||||
|
[finishedUnpackageAlert dismissViewControllerAnimated:YES completion:nil];
|
||||||
|
|
||||||
|
}];
|
||||||
|
|
||||||
|
[finishedUnpackageAlert addAction:ok];
|
||||||
|
|
||||||
|
[self presentViewController:finishedUnpackageAlert animated:YES completion:nil];
|
||||||
|
|
||||||
|
}];
|
||||||
|
UIAlertAction* cancel = [UIAlertAction
|
||||||
|
actionWithTitle:@"Cancel"
|
||||||
|
style:UIAlertActionStyleDefault
|
||||||
|
handler:^(UIAlertAction * action)
|
||||||
|
{
|
||||||
|
[unpackageBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||||
|
|
||||||
|
}];
|
||||||
|
|
||||||
|
[unpackageBackupAlert addAction:cancel];
|
||||||
|
[unpackageBackupAlert addAction:ok];
|
||||||
|
|
||||||
|
[self presentViewController:unpackageBackupAlert animated:YES completion:nil];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
- (IBAction)helpMenu:(id)sender {
|
||||||
|
|
||||||
|
UIAlertController * tutorialAlert= [UIAlertController
|
||||||
|
alertControllerWithTitle:@"Help"
|
||||||
|
message:@"Create Backup: This will prompt you to enter a name for the backup which will be displayed in the box above.\n\nRestore: This will revert your settings, wallpaper, and Icon Layout to the selected setup.\n\nUpdate: This will overwrite the selected backup to cleanly update it.\n\nPackage:This will generate a package in ZIP format for you to share or back up for later.\n\nUnpackage: This will install the aforementioned ZIP packages to be used by FlashBack.\n\nDelete: This will delete the selected backup. These backups cannot be recovered!"
|
||||||
|
preferredStyle:UIAlertControllerStyleAlert];
|
||||||
|
|
||||||
|
UIAlertAction* ok = [UIAlertAction
|
||||||
|
actionWithTitle:@"ok"
|
||||||
|
style:UIAlertActionStyleDefault
|
||||||
|
handler:^(UIAlertAction * action)
|
||||||
|
{
|
||||||
|
[tutorialAlert dismissViewControllerAnimated:YES completion:nil];
|
||||||
|
|
||||||
|
|
||||||
|
UIAlertController * infoAlert= [UIAlertController
|
||||||
|
alertControllerWithTitle:@"Known issues"
|
||||||
|
message:@"Scrolling through the picker view with no backups will crash the app.\n\nChanges to the list of backups are not reflected until the app is relaunched.\n\nIf a backup is not properly selected, and a button is pressed, it may cause the app to crash."
|
||||||
|
preferredStyle:UIAlertControllerStyleAlert];
|
||||||
|
|
||||||
|
UIAlertAction* okay = [UIAlertAction
|
||||||
|
actionWithTitle:@"ok"
|
||||||
|
style:UIAlertActionStyleDefault
|
||||||
|
handler:^(UIAlertAction * action)
|
||||||
|
{
|
||||||
|
[infoAlert dismissViewControllerAnimated:YES completion:nil];
|
||||||
|
|
||||||
|
|
||||||
|
UIAlertController * contactAlert= [UIAlertController
|
||||||
|
alertControllerWithTitle:@"Contact Me"
|
||||||
|
message:@"You can contact my via Twitter or Email\n\n@micahpgomez\n\nmpg13@micahpgomez.dev\n\nhttps://www.micahpgomez.dev"
|
||||||
|
preferredStyle:UIAlertControllerStyleAlert];
|
||||||
|
|
||||||
|
UIAlertAction* okey = [UIAlertAction
|
||||||
|
actionWithTitle:@"ok"
|
||||||
|
style:UIAlertActionStyleDefault
|
||||||
|
handler:^(UIAlertAction * action)
|
||||||
|
{
|
||||||
|
[contactAlert dismissViewControllerAnimated:YES completion:nil];
|
||||||
|
|
||||||
|
}];
|
||||||
|
|
||||||
|
[contactAlert addAction:okey];
|
||||||
|
|
||||||
|
[self presentViewController:contactAlert animated:YES completion:nil];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}];
|
||||||
|
|
||||||
|
[infoAlert addAction:okay];
|
||||||
|
|
||||||
|
[self presentViewController:infoAlert animated:YES completion:nil];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}];
|
||||||
|
|
||||||
|
[tutorialAlert addAction:ok];
|
||||||
|
|
||||||
|
[self presentViewController:tutorialAlert animated:YES completion:nil];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
- (IBAction)deleteBackup:(id)sender {
|
|
||||||
|
|
||||||
UIAlertController * alert= [UIAlertController
|
- (IBAction)deleteBackup:(id)sender {
|
||||||
alertControllerWithTitle:@"Delete BAckup"
|
|
||||||
message:@"The selected backup will be deleted!"
|
if (backupNameSelected == nil){
|
||||||
preferredStyle:UIAlertControllerStyleAlert];
|
|
||||||
|
UIAlertController * selectBackupAlert= [UIAlertController
|
||||||
|
alertControllerWithTitle:@"Select a Backup!"
|
||||||
|
message:@"Scroll through the list then let it settle on an item to select the backup."
|
||||||
|
preferredStyle:UIAlertControllerStyleAlert];
|
||||||
|
|
||||||
|
UIAlertAction* ok = [UIAlertAction
|
||||||
|
actionWithTitle:@"ok"
|
||||||
|
style:UIAlertActionStyleDefault
|
||||||
|
handler:^(UIAlertAction * action)
|
||||||
|
{
|
||||||
|
[selectBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||||
|
|
||||||
|
}];
|
||||||
|
|
||||||
|
[selectBackupAlert addAction:ok];
|
||||||
|
|
||||||
|
[self presentViewController:selectBackupAlert animated:YES completion:nil];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
UIAlertController * deleteBackupAlert= [UIAlertController
|
||||||
|
alertControllerWithTitle:@"Delete Backup"
|
||||||
|
message:@"The selected backup will be deleted!"
|
||||||
|
preferredStyle:UIAlertControllerStyleAlert];
|
||||||
|
|
||||||
UIAlertAction* ok = [UIAlertAction
|
UIAlertAction* ok = [UIAlertAction
|
||||||
actionWithTitle:@"OK"
|
actionWithTitle:@"OK"
|
||||||
|
@ -159,24 +501,30 @@ NSMutableString *selectedBackupImageURL;
|
||||||
handler:^(UIAlertAction * action)
|
handler:^(UIAlertAction * action)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
NSTask *deleteTask = [[NSTask alloc] init];
|
||||||
|
[deleteTask setLaunchPath:@"/usr/bin/bash"];
|
||||||
|
[deleteTask setArguments:@[ @"FBDelete", backupNameSelected]];
|
||||||
|
[deleteTask launch];
|
||||||
|
[deleteTask waitUntilExit];
|
||||||
|
|
||||||
[alert 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)
|
||||||
{
|
{
|
||||||
[alert dismissViewControllerAnimated:YES completion:nil];
|
|
||||||
|
[deleteBackupAlert dismissViewControllerAnimated:YES completion:nil];
|
||||||
|
|
||||||
}];
|
}];
|
||||||
|
|
||||||
[alert addAction:cancel];
|
[deleteBackupAlert addAction:cancel];
|
||||||
[alert addAction:ok];
|
[deleteBackupAlert addAction:ok];
|
||||||
|
|
||||||
|
[self presentViewController:deleteBackupAlert animated:YES completion:nil];
|
||||||
|
|
||||||
[self presentViewController:alert animated:YES completion:nil];
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -185,9 +533,6 @@ NSMutableString *selectedBackupImageURL;
|
||||||
[super viewDidLoad];
|
[super viewDidLoad];
|
||||||
// Do any additional setup after loading the view.
|
// Do any additional setup after loading the view.
|
||||||
|
|
||||||
selectedBackupText.text=@"Select a Backup";
|
|
||||||
//selectedBackupImage.backgroundColor=[UIColor grayColor];
|
|
||||||
|
|
||||||
selectedBackupPickerView.delegate=self;
|
selectedBackupPickerView.delegate=self;
|
||||||
selectedBackupPickerView.dataSource=self;
|
selectedBackupPickerView.dataSource=self;
|
||||||
|
|
||||||
|
@ -197,15 +542,20 @@ NSMutableString *selectedBackupImageURL;
|
||||||
|
|
||||||
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
|
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
|
||||||
|
|
||||||
NSString *backupNameSelected = [_backupFolderArray objectAtIndex:row];
|
backupNameSelected = [_backupFolderArray objectAtIndex:row];
|
||||||
selectedBackupText.text=backupNameSelected;
|
selectedBackupText.text=backupNameSelected;
|
||||||
|
|
||||||
selectedBackupImageURL = [NSMutableString stringWithString: @"/Library/FlashBack/Backups/"];
|
selectedBackupURL = [NSMutableString stringWithString: @"/Library/FlashBack/Backups/"];
|
||||||
[selectedBackupImageURL appendString: backupNameSelected];
|
[selectedBackupURL appendString: backupNameSelected];
|
||||||
[selectedBackupImageURL appendString: @"/bgimage.png"];
|
|
||||||
|
selectedBackupImageURL=selectedBackupURL;
|
||||||
|
|
||||||
|
[selectedBackupImageURL appendString: @"/SBFolder/LockBackgroundThumbnail.jpg"];
|
||||||
NSLog(@"%@", selectedBackupImageURL);
|
NSLog(@"%@", selectedBackupImageURL);
|
||||||
|
|
||||||
selectedBackupImage.image=[UIImage imageNamed:selectedBackupImageURL];
|
NSURL *url = [NSURL fileURLWithPath:selectedBackupImageURL];
|
||||||
|
NSData *data = [NSData dataWithContentsOfURL:url];
|
||||||
|
selectedBackupImage.image = [UIImage imageWithData:data];
|
||||||
|
|
||||||
NSLog(@"%@", backupNameSelected);
|
NSLog(@"%@", backupNameSelected);
|
||||||
|
|
||||||
|
@ -226,6 +576,5 @@ NSMutableString *selectedBackupImageURL;
|
||||||
return _backupFolderArray[row];
|
return _backupFolderArray[row];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
|
Reference in a new issue