• R/O
  • HTTP
  • SSH
  • HTTPS

Tombo: Commit

TOMBO source code


Commit MetaInfo

Revision7ab3ad25415d914b7320885c0ae817b069e48a4e (tree)
Time2012-04-15 09:49:06
AuthorHirami <tomohisa.hirami@nift...>
CommiterHirami

Log Message

Add move file

Change Summary

Incremental Difference

--- a/iOS/Tombo/Tombo.xcodeproj/project.pbxproj
+++ b/iOS/Tombo/Tombo.xcodeproj/project.pbxproj
@@ -18,6 +18,7 @@
1818 9243C826153487640092B506 /* key-48.png in Resources */ = {isa = PBXBuildFile; fileRef = 9243C824153487640092B506 /* key-48.png */; };
1919 9243C83115352EB20092B506 /* SinglePasswordDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 9243C83015352EB20092B506 /* SinglePasswordDialog.m */; };
2020 9244E4D115397C300028FD10 /* FileItemTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 9244E4D015397C300028FD10 /* FileItemTest.m */; };
21+ 9244E4DD1539B3250028FD10 /* MoveViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9244E4DC1539B3250028FD10 /* MoveViewController.m */; };
2122 92DE332D151E277D00AD06EC /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92DE332C151E277D00AD06EC /* UIKit.framework */; };
2223 92DE332F151E277D00AD06EC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92DE332E151E277D00AD06EC /* Foundation.framework */; };
2324 92DE3331151E277D00AD06EC /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92DE3330151E277D00AD06EC /* CoreGraphics.framework */; };
@@ -72,6 +73,8 @@
7273 9243C83015352EB20092B506 /* SinglePasswordDialog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SinglePasswordDialog.m; sourceTree = "<group>"; };
7374 9244E4CF15397C300028FD10 /* FileItemTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FileItemTest.h; sourceTree = "<group>"; };
7475 9244E4D015397C300028FD10 /* FileItemTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FileItemTest.m; sourceTree = "<group>"; };
76+ 9244E4DB1539B3250028FD10 /* MoveViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MoveViewController.h; sourceTree = "<group>"; };
77+ 9244E4DC1539B3250028FD10 /* MoveViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MoveViewController.m; sourceTree = "<group>"; };
7578 92DE3328151E277D00AD06EC /* Tombo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Tombo.app; sourceTree = BUILT_PRODUCTS_DIR; };
7679 92DE332C151E277D00AD06EC /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
7780 92DE332E151E277D00AD06EC /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
@@ -184,6 +187,8 @@
184187 9243C7B41529D8610092B506 /* DetailViewController.m */,
185188 922F592815295FAA009B1E32 /* EditViewController.h */,
186189 922F592915295FAA009B1E32 /* EditViewController.m */,
190+ 9244E4DB1539B3250028FD10 /* MoveViewController.h */,
191+ 9244E4DC1539B3250028FD10 /* MoveViewController.m */,
187192 92DE3333151E277D00AD06EC /* Supporting Files */,
188193 92DE33841522998700AD06EC /* Storage.h */,
189194 92DE33851522998700AD06EC /* Storage.m */,
@@ -371,6 +376,7 @@
371376 9243C7ED1531ADA80092B506 /* CryptCore.m in Sources */,
372377 9243C820153443B90092B506 /* PasswordManager.m in Sources */,
373378 9243C83115352EB20092B506 /* SinglePasswordDialog.m in Sources */,
379+ 9244E4DD1539B3250028FD10 /* MoveViewController.m in Sources */,
374380 );
375381 runOnlyForDeploymentPostprocessing = 0;
376382 };
--- a/iOS/Tombo/Tombo/DetailViewController.h
+++ b/iOS/Tombo/Tombo/DetailViewController.h
@@ -1,5 +1,6 @@
11 #import <UIKit/UIKit.h>
22 #import "FileItem.h"
3+#import "MoveViewController.h"
34
45 @class MasterViewController;
56 @class Storage;
@@ -12,7 +13,7 @@
1213 * Used on iPad only.
1314 */
1415
15-@interface DetailViewController : UIViewController
16+@interface DetailViewController : UIViewController <MoveViewControllerDelegate>
1617
1718 @property (weak, nonatomic) FileItem *item;
1819 @property (weak, nonatomic) Storage *storage;
@@ -29,4 +30,5 @@
2930 */
3031 @protocol DetailViewControllerDelegate <NSObject>
3132 -(void)detailViewFileItemChanged:(FileItem*)oldItem to:(FileItem *)newItem;
33+-(void)detailViewFileItemRemoved:(FileItem *)item;
3234 @end
\ No newline at end of file
--- a/iOS/Tombo/Tombo/DetailViewController.m
+++ b/iOS/Tombo/Tombo/DetailViewController.m
@@ -31,23 +31,32 @@
3131 [super viewDidLoad];
3232
3333 [self.navigationController setToolbarHidden:NO];
34- NSString *btnTitle;
3534 if (self.item != nil) {
36- if (self.item.isCrypt) {
37- btnTitle = @"Decrypt";
38- } else {
39- btnTitle = @"Encrypt";
40- }
41- UIBarButtonItem *cryptBtn = [[UIBarButtonItem alloc] initWithTitle:btnTitle
42- style:UIBarButtonItemStyleBordered
43- target:self
44- action:@selector(crypt:)];
45- [self setToolbarItems:[NSArray arrayWithObjects:cryptBtn, nil] animated:YES];
35+ [self setupToolbar];
4636 }
4737
4838 [self loadNote];
4939 }
5040
41+- (void)setupToolbar {
42+ NSString *btnTitle;
43+ if (self.item.isCrypt) {
44+ btnTitle = @"Decrypt";
45+ } else {
46+ btnTitle = @"Encrypt";
47+ }
48+ UIBarButtonItem *cryptBtn = [[UIBarButtonItem alloc] initWithTitle:btnTitle
49+ style:UIBarButtonItemStyleBordered
50+ target:self
51+ action:@selector(crypt:)];
52+ UIBarButtonItem *moveBtn = [[UIBarButtonItem alloc] initWithTitle:@"Move"
53+ style:UIBarButtonItemStyleBordered
54+ target:self
55+ action:@selector(move:)];
56+ [self setToolbarItems:[NSArray arrayWithObjects:cryptBtn, moveBtn, nil] animated:NO];
57+
58+}
59+
5160 - (void)viewDidUnload
5261 {
5362 [self setText:nil];
@@ -68,6 +77,10 @@
6877
6978 edit.detailItem = self.item;
7079 edit.delegate = self.master;
80+ } else if ([[segue identifier] isEqualToString:@"moveNote"]) {
81+ MoveViewController *move = (MoveViewController*)[[[segue destinationViewController] viewControllers] objectAtIndex:0];
82+ move.delegate = self;
83+ move.folders = [self.storage listFolders];
7184 }
7285 }
7386
@@ -109,6 +122,10 @@
109122 }
110123 }
111124
125+- (void)move:(id)sender {
126+ [self performSegueWithIdentifier:@"moveNote" sender:self];
127+}
128+
112129 - (void)loadNote {
113130 if (!self.item) return;
114131
@@ -135,7 +152,22 @@
135152 // On iPhone and call by segue, self.text is nil because view is not loaded yet.
136153 if (self.text) {
137154 [self loadNote];
155+ [self setupToolbar];
138156 }
139157 }
140158 }
159+
160+#pragma mark - MoveViewControllerDelegate
161+
162+- (void)moveViewControllerCancel:(MoveViewController *)view {
163+ [self dismissModalViewControllerAnimated:YES];
164+}
165+
166+- (void)moveViewControllerSelect:(MoveViewController *)view path:(NSString *)path {
167+ NSString *toPath = [self.storage moveFrom:self.item toPath:path];
168+ [self.delegate detailViewFileItemRemoved:self.item];
169+ self.item.path = toPath;
170+ [self dismissModalViewControllerAnimated:YES];
171+}
172+
141173 @end
--- a/iOS/Tombo/Tombo/MasterViewController.m
+++ b/iOS/Tombo/Tombo/MasterViewController.m
@@ -56,6 +56,11 @@
5656 storage = [Storage init];
5757 }
5858
59+ // Init detailview for iPad.
60+ self.detailViewController.storage = storage;
61+ self.detailViewController.passwordManager = passwordManager;
62+ self.detailViewController.delegate = self;
63+
5964 // Load initial items.
6065 [self insertItems];
6166 }
@@ -361,4 +366,8 @@
361366 [self insertItem:newItem];
362367 }
363368
369+-(void)detailViewFileItemRemoved:(FileItem *)item {
370+ [self deleteItem:item];
371+}
372+
364373 @end
--- /dev/null
+++ b/iOS/Tombo/Tombo/MoveViewController.h
@@ -0,0 +1,18 @@
1+#import <UIKit/UIKit.h>
2+
3+@protocol MoveViewControllerDelegate;
4+
5+@interface MoveViewController : UITableViewController
6+
7+@property (weak,nonatomic) id <MoveViewControllerDelegate> delegate;
8+@property (strong, nonatomic) NSArray *folders;
9+
10+- (IBAction)cancel:(id)sender;
11+
12+@end
13+
14+@protocol MoveViewControllerDelegate <NSObject>
15+
16+- (void)moveViewControllerCancel:(MoveViewController *)view;
17+- (void)moveViewControllerSelect:(MoveViewController *)view path:(NSString *)path;
18+@end
--- /dev/null
+++ b/iOS/Tombo/Tombo/MoveViewController.m
@@ -0,0 +1,59 @@
1+#import "MoveViewController.h"
2+
3+@interface MoveViewController ()
4+
5+@end
6+
7+@implementation MoveViewController {
8+ UIImage *imgFolder;
9+}
10+
11+@synthesize delegate = _delegate;
12+@synthesize folders = _folders;
13+
14+- (void)viewDidLoad
15+{
16+ [super viewDidLoad];
17+
18+ imgFolder = [UIImage imageNamed:@"Folder-32"];
19+}
20+
21+- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
22+{
23+ return YES;
24+}
25+
26+- (IBAction)cancel:(id)sender {
27+ if (self.delegate) [self.delegate moveViewControllerCancel:self];
28+}
29+
30+#pragma mark - Table view data source
31+
32+- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
33+ return 1;
34+}
35+
36+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
37+ return [self.folders count];
38+}
39+
40+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
41+{
42+ static NSString *CellIdentifier = @"Cell";
43+ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
44+
45+ NSString *folder = [self.folders objectAtIndex:indexPath.row];
46+ cell.textLabel.text = folder;
47+ cell.imageView.image = imgFolder;
48+ return cell;
49+}
50+
51+#pragma mark - Table view delegate
52+
53+- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
54+{
55+ NSString *path = [self.folders objectAtIndex:indexPath.row];
56+ if (self.delegate) [self.delegate moveViewControllerSelect:self path:path];
57+}
58+
59+@end
--- a/iOS/Tombo/Tombo/Storage.h
+++ b/iOS/Tombo/Tombo/Storage.h
@@ -30,6 +30,11 @@
3030 */
3131 -(BOOL)isTopDir;
3232
33+/*
34+ * Enumerate top directory recursively and return array of NSString.
35+ */
36+- (NSArray *)listFolders;
37+
3338
3439 -(FileItem*)newItem;
3540
@@ -55,4 +60,7 @@
5560 - (FileItem *)encrypt:(NSString *)key item:(FileItem*)item;
5661 - (FileItem *)decrypt:(NSString *)key item:(FileItem*)item;
5762
63+- (void)moveFrom:(FileItem *)from to:(FileItem *)to;
64+- (NSString *)moveFrom:(FileItem *)from toPath:(NSString *)to;
65+
5866 @end
--- a/iOS/Tombo/Tombo/Storage.m
+++ b/iOS/Tombo/Tombo/Storage.m
@@ -50,6 +50,36 @@
5050 return result;
5151 }
5252
53+- (NSArray *)listFolders {
54+ NSMutableArray *result = [NSMutableArray arrayWithCapacity:10];
55+
56+ [result addObject:@"/"];
57+ [self listFoldersRec:result path:@"/"];
58+ NSComparator compr = ^(id a, id b) {
59+ NSString *strA = (NSString *)a;
60+ NSString *strB = (NSString *)b;
61+ return [strA compare:strB];
62+ };
63+ return [result sortedArrayUsingComparator:compr];
64+}
65+
66+- (void)listFoldersRec:(NSMutableArray *)result path:(NSString *)path {
67+ NSError *error = nil;
68+ NSString *partPath = [documentRoot stringByAppendingString:path];
69+ NSArray *files = [fileManager contentsOfDirectoryAtPath:partPath
70+ error:&error];
71+
72+ for (NSString *f in files) {
73+ BOOL bDir = NO;
74+ NSString *p = [partPath stringByAppendingString:f];
75+ [fileManager fileExistsAtPath:p isDirectory:&bDir];
76+ if (!bDir) continue;
77+ NSString *pFolder = [path stringByAppendingString:f];
78+ [result addObject:pFolder];
79+ [self listFoldersRec:result path:[pFolder stringByAppendingString:@"/"]];
80+ }
81+}
82+
5383 -(void)chdir:(NSString *)subdir {
5484 NSString *newCurrent = [currentDirectory stringByAppendingPathComponent:subdir];
5585 self.currentDirectory = [newCurrent stringByAppendingString:@"/"];
@@ -295,7 +325,6 @@
295325 }
296326
297327 - (FileItem *)decrypt:(NSString *)key item:(FileItem*)item {
298- // TODO: implement
299328 NSData *encData = [NSData dataWithContentsOfFile:item.path];
300329 NSError *error = nil;
301330 NSData *plainData = [CryptCore decrypt:key data:encData error:&error];
@@ -313,4 +342,28 @@
313342 return newItem;
314343 }
315344
345+- (void)moveFrom:(FileItem *)from to:(FileItem *)to {
346+ NSString *name = [from.path lastPathComponent];
347+ NSMutableString *toPath = [[NSMutableString alloc]initWithCapacity:200];
348+ [toPath appendString:to.path];
349+ [toPath appendString:@"/"];
350+ [toPath appendString:name];
351+
352+ NSError *error = nil;
353+ [fileManager moveItemAtPath:from.path toPath:toPath error:&error];
354+}
355+
356+- (NSString *)moveFrom:(FileItem *)from toPath:(NSString *)to {
357+ NSString *name = [from.path lastPathComponent];
358+ NSMutableString *toPath = [[NSMutableString alloc]initWithCapacity:200];
359+ [toPath appendString:documentRoot];
360+ [toPath appendString:to];
361+ [toPath appendString:@"/"];
362+ [toPath appendString:name];
363+
364+ NSError *error = nil;
365+ [fileManager moveItemAtPath:from.path toPath:toPath error:&error];
366+ return toPath;
367+}
368+
316369 @end
--- a/iOS/Tombo/Tombo/en.lproj/MainStoryboard_iPad.storyboard
+++ b/iOS/Tombo/Tombo/en.lproj/MainStoryboard_iPad.storyboard
@@ -51,11 +51,49 @@
5151 </navigationItem>
5252 <connections>
5353 <outlet property="text" destination="I5K-hl-l4m" id="efg-OY-fpX"/>
54+ <segue destination="d05-A3-3lh" kind="modal" identifier="moveNote" id="UNl-FX-1ZS"/>
5455 </connections>
5556 </viewController>
5657 </objects>
5758 <point key="canvasLocation" x="1025" y="-1397"/>
5859 </scene>
60+ <!--Move View Controller-->
61+ <scene sceneID="VdD-0z-Oi9">
62+ <objects>
63+ <placeholder placeholderIdentifier="IBFirstResponder" id="Hr1-r9-0Qn" userLabel="First Responder" sceneMemberID="firstResponder"/>
64+ <tableViewController id="kne-7K-i81" customClass="MoveViewController" sceneMemberID="viewController">
65+ <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="GrV-dc-OPL">
66+ <rect key="frame" x="0.0" y="64" width="1024" height="704"/>
67+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
68+ <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
69+ <simulatedOrientationMetrics key="simulatedOrientationMetrics" orientation="landscapeRight"/>
70+ <prototypes>
71+ <tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="Cell" id="xuu-E4-adE">
72+ <rect key="frame" x="0.0" y="22" width="768" height="44"/>
73+ <autoresizingMask key="autoresizingMask"/>
74+ <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
75+ <rect key="frame" x="0.0" y="0.0" width="768" height="43"/>
76+ <autoresizingMask key="autoresizingMask"/>
77+ <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
78+ </view>
79+ </tableViewCell>
80+ </prototypes>
81+ <connections>
82+ <outlet property="dataSource" destination="kne-7K-i81" id="4nM-eP-aRT"/>
83+ <outlet property="delegate" destination="kne-7K-i81" id="Glx-ob-e0s"/>
84+ </connections>
85+ </tableView>
86+ <navigationItem key="navigationItem" id="9gq-dD-RPb">
87+ <barButtonItem key="leftBarButtonItem" systemItem="cancel" id="Ogz-3k-B4z">
88+ <connections>
89+ <action selector="cancel:" destination="kne-7K-i81" id="JxE-Wk-dQR"/>
90+ </connections>
91+ </barButtonItem>
92+ </navigationItem>
93+ </tableViewController>
94+ </objects>
95+ <point key="canvasLocation" x="3287" y="-2199"/>
96+ </scene>
5997 <!--Split View Controller-->
6098 <scene sceneID="18">
6199 <objects>
@@ -192,6 +230,24 @@
192230 </objects>
193231 <point key="canvasLocation" x="2029" y="-494"/>
194232 </scene>
233+ <!--Navigation Controller-->
234+ <scene sceneID="sop-gG-sUy">
235+ <objects>
236+ <placeholder placeholderIdentifier="IBFirstResponder" id="enT-QP-UTy" userLabel="First Responder" sceneMemberID="firstResponder"/>
237+ <navigationController id="d05-A3-3lh" sceneMemberID="viewController">
238+ <toolbarItems/>
239+ <navigationBar key="navigationBar" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" id="Jwz-hL-bP9">
240+ <rect key="frame" x="0.0" y="0.0" width="768" height="44"/>
241+ <autoresizingMask key="autoresizingMask"/>
242+ </navigationBar>
243+ <nil name="viewControllers"/>
244+ <connections>
245+ <segue destination="kne-7K-i81" kind="relationship" relationship="rootViewController" id="Pot-UJ-tdT"/>
246+ </connections>
247+ </navigationController>
248+ </objects>
249+ <point key="canvasLocation" x="2211" y="-2191"/>
250+ </scene>
195251 </scenes>
196252 <classes>
197253 <class className="DetailViewController" superclassName="UIViewController">
@@ -211,6 +267,12 @@
211267 <class className="MasterViewController" superclassName="UITableViewController">
212268 <source key="sourceIdentifier" type="project" relativePath="./Classes/MasterViewController.h"/>
213269 </class>
270+ <class className="MoveViewController" superclassName="UITableViewController">
271+ <source key="sourceIdentifier" type="project" relativePath="./Classes/MoveViewController.h"/>
272+ <relationships>
273+ <relationship kind="action" name="cancel:"/>
274+ </relationships>
275+ </class>
214276 </classes>
215277 <simulatedMetricsContainer key="defaultSimulatedMetrics">
216278 <simulatedStatusBarMetrics key="statusBar" statusBarStyle="blackTranslucent"/>
@@ -218,6 +280,6 @@
218280 <simulatedScreenMetrics key="destination"/>
219281 </simulatedMetricsContainer>
220282 <inferredMetricsTieBreakers>
221- <segue reference="pK5-mO-z6F"/>
283+ <segue reference="Kjf-1o-2Ik"/>
222284 </inferredMetricsTieBreakers>
223285 </document>
\ No newline at end of file
--- a/iOS/Tombo/Tombo/en.lproj/MainStoryboard_iPhone.storyboard
+++ b/iOS/Tombo/Tombo/en.lproj/MainStoryboard_iPhone.storyboard
@@ -57,7 +57,7 @@
5757 <outlet property="delegate" destination="12" id="15"/>
5858 </connections>
5959 </tableView>
60- <navigationItem key="navigationItem" title="Master" id="36">
60+ <navigationItem key="navigationItem" title="List" id="36">
6161 <barButtonItem key="rightBarButtonItem" systemItem="add" id="agb-4g-a59">
6262 <connections>
6363 <segue destination="7bR-lH-lJ9" kind="modal" identifier="newNote" id="HlC-by-ur5"/>
@@ -100,6 +100,7 @@
100100 </navigationItem>
101101 <connections>
102102 <outlet property="text" destination="crV-57-ylY" id="HD7-qX-vzI"/>
103+ <segue destination="DVv-Iu-8Nq" kind="modal" identifier="moveNote" id="6ne-sM-16G"/>
103104 </connections>
104105 </viewController>
105106 </objects>
@@ -143,6 +144,42 @@
143144 </objects>
144145 <point key="canvasLocation" x="2021" y="64"/>
145146 </scene>
147+ <!--Move View Controller - Choose folder-->
148+ <scene sceneID="ysG-MP-3Qv">
149+ <objects>
150+ <placeholder placeholderIdentifier="IBFirstResponder" id="qw3-8U-E3I" userLabel="First Responder" sceneMemberID="firstResponder"/>
151+ <tableViewController id="q5O-eT-KLN" customClass="MoveViewController" sceneMemberID="viewController">
152+ <tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="VmW-Ud-l7o">
153+ <rect key="frame" x="0.0" y="64" width="320" height="416"/>
154+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
155+ <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
156+ <prototypes>
157+ <tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="Cell" id="ppG-Cp-Oqy">
158+ <rect key="frame" x="0.0" y="22" width="320" height="44"/>
159+ <autoresizingMask key="autoresizingMask"/>
160+ <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
161+ <rect key="frame" x="0.0" y="0.0" width="320" height="43"/>
162+ <autoresizingMask key="autoresizingMask"/>
163+ <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
164+ </view>
165+ </tableViewCell>
166+ </prototypes>
167+ <connections>
168+ <outlet property="dataSource" destination="q5O-eT-KLN" id="P2n-gA-Cze"/>
169+ <outlet property="delegate" destination="q5O-eT-KLN" id="aDr-BS-3AP"/>
170+ </connections>
171+ </tableView>
172+ <navigationItem key="navigationItem" title="Choose folder" id="4oC-95-7Hy">
173+ <barButtonItem key="leftBarButtonItem" systemItem="cancel" id="rQF-JB-drS">
174+ <connections>
175+ <action selector="cancel:" destination="q5O-eT-KLN" id="SMm-ve-0ho"/>
176+ </connections>
177+ </barButtonItem>
178+ </navigationItem>
179+ </tableViewController>
180+ </objects>
181+ <point key="canvasLocation" x="2084" y="-535"/>
182+ </scene>
146183 <!--Navigation Controller-->
147184 <scene sceneID="a6N-vh-sA4">
148185 <objects>
@@ -161,6 +198,24 @@
161198 </objects>
162199 <point key="canvasLocation" x="1561" y="64"/>
163200 </scene>
201+ <!--Navigation Controller-->
202+ <scene sceneID="N6v-4j-05b">
203+ <objects>
204+ <placeholder placeholderIdentifier="IBFirstResponder" id="vkq-xN-tWC" userLabel="First Responder" sceneMemberID="firstResponder"/>
205+ <navigationController id="DVv-Iu-8Nq" sceneMemberID="viewController">
206+ <toolbarItems/>
207+ <navigationBar key="navigationBar" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" id="9hi-CP-Uox">
208+ <rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
209+ <autoresizingMask key="autoresizingMask"/>
210+ </navigationBar>
211+ <nil name="viewControllers"/>
212+ <connections>
213+ <segue destination="q5O-eT-KLN" kind="relationship" relationship="rootViewController" id="Evc-s3-ika"/>
214+ </connections>
215+ </navigationController>
216+ </objects>
217+ <point key="canvasLocation" x="1558" y="-535"/>
218+ </scene>
164219 </scenes>
165220 <classes>
166221 <class className="DetailViewController" superclassName="UIViewController">
@@ -180,6 +235,12 @@
180235 <class className="MasterViewController" superclassName="UITableViewController">
181236 <source key="sourceIdentifier" type="project" relativePath="./Classes/MasterViewController.h"/>
182237 </class>
238+ <class className="MoveViewController" superclassName="UITableViewController">
239+ <source key="sourceIdentifier" type="project" relativePath="./Classes/MoveViewController.h"/>
240+ <relationships>
241+ <relationship kind="action" name="cancel:"/>
242+ </relationships>
243+ </class>
183244 </classes>
184245 <simulatedMetricsContainer key="defaultSimulatedMetrics">
185246 <simulatedStatusBarMetrics key="statusBar"/>
Show on old repository browser