TOMBO source code
Revision | 7ab3ad25415d914b7320885c0ae817b069e48a4e (tree) |
---|---|
Time | 2012-04-15 09:49:06 |
Author | Hirami <tomohisa.hirami@nift...> |
Commiter | Hirami |
Add move file
@@ -18,6 +18,7 @@ | ||
18 | 18 | 9243C826153487640092B506 /* key-48.png in Resources */ = {isa = PBXBuildFile; fileRef = 9243C824153487640092B506 /* key-48.png */; }; |
19 | 19 | 9243C83115352EB20092B506 /* SinglePasswordDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 9243C83015352EB20092B506 /* SinglePasswordDialog.m */; }; |
20 | 20 | 9244E4D115397C300028FD10 /* FileItemTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 9244E4D015397C300028FD10 /* FileItemTest.m */; }; |
21 | + 9244E4DD1539B3250028FD10 /* MoveViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9244E4DC1539B3250028FD10 /* MoveViewController.m */; }; | |
21 | 22 | 92DE332D151E277D00AD06EC /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92DE332C151E277D00AD06EC /* UIKit.framework */; }; |
22 | 23 | 92DE332F151E277D00AD06EC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92DE332E151E277D00AD06EC /* Foundation.framework */; }; |
23 | 24 | 92DE3331151E277D00AD06EC /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92DE3330151E277D00AD06EC /* CoreGraphics.framework */; }; |
@@ -72,6 +73,8 @@ | ||
72 | 73 | 9243C83015352EB20092B506 /* SinglePasswordDialog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SinglePasswordDialog.m; sourceTree = "<group>"; }; |
73 | 74 | 9244E4CF15397C300028FD10 /* FileItemTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FileItemTest.h; sourceTree = "<group>"; }; |
74 | 75 | 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>"; }; | |
75 | 78 | 92DE3328151E277D00AD06EC /* Tombo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Tombo.app; sourceTree = BUILT_PRODUCTS_DIR; }; |
76 | 79 | 92DE332C151E277D00AD06EC /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; |
77 | 80 | 92DE332E151E277D00AD06EC /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; |
@@ -184,6 +187,8 @@ | ||
184 | 187 | 9243C7B41529D8610092B506 /* DetailViewController.m */, |
185 | 188 | 922F592815295FAA009B1E32 /* EditViewController.h */, |
186 | 189 | 922F592915295FAA009B1E32 /* EditViewController.m */, |
190 | + 9244E4DB1539B3250028FD10 /* MoveViewController.h */, | |
191 | + 9244E4DC1539B3250028FD10 /* MoveViewController.m */, | |
187 | 192 | 92DE3333151E277D00AD06EC /* Supporting Files */, |
188 | 193 | 92DE33841522998700AD06EC /* Storage.h */, |
189 | 194 | 92DE33851522998700AD06EC /* Storage.m */, |
@@ -371,6 +376,7 @@ | ||
371 | 376 | 9243C7ED1531ADA80092B506 /* CryptCore.m in Sources */, |
372 | 377 | 9243C820153443B90092B506 /* PasswordManager.m in Sources */, |
373 | 378 | 9243C83115352EB20092B506 /* SinglePasswordDialog.m in Sources */, |
379 | + 9244E4DD1539B3250028FD10 /* MoveViewController.m in Sources */, | |
374 | 380 | ); |
375 | 381 | runOnlyForDeploymentPostprocessing = 0; |
376 | 382 | }; |
@@ -1,5 +1,6 @@ | ||
1 | 1 | #import <UIKit/UIKit.h> |
2 | 2 | #import "FileItem.h" |
3 | +#import "MoveViewController.h" | |
3 | 4 | |
4 | 5 | @class MasterViewController; |
5 | 6 | @class Storage; |
@@ -12,7 +13,7 @@ | ||
12 | 13 | * Used on iPad only. |
13 | 14 | */ |
14 | 15 | |
15 | -@interface DetailViewController : UIViewController | |
16 | +@interface DetailViewController : UIViewController <MoveViewControllerDelegate> | |
16 | 17 | |
17 | 18 | @property (weak, nonatomic) FileItem *item; |
18 | 19 | @property (weak, nonatomic) Storage *storage; |
@@ -29,4 +30,5 @@ | ||
29 | 30 | */ |
30 | 31 | @protocol DetailViewControllerDelegate <NSObject> |
31 | 32 | -(void)detailViewFileItemChanged:(FileItem*)oldItem to:(FileItem *)newItem; |
33 | +-(void)detailViewFileItemRemoved:(FileItem *)item; | |
32 | 34 | @end |
\ No newline at end of file |
@@ -31,23 +31,32 @@ | ||
31 | 31 | [super viewDidLoad]; |
32 | 32 | |
33 | 33 | [self.navigationController setToolbarHidden:NO]; |
34 | - NSString *btnTitle; | |
35 | 34 | 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]; | |
46 | 36 | } |
47 | 37 | |
48 | 38 | [self loadNote]; |
49 | 39 | } |
50 | 40 | |
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 | + | |
51 | 60 | - (void)viewDidUnload |
52 | 61 | { |
53 | 62 | [self setText:nil]; |
@@ -68,6 +77,10 @@ | ||
68 | 77 | |
69 | 78 | edit.detailItem = self.item; |
70 | 79 | 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]; | |
71 | 84 | } |
72 | 85 | } |
73 | 86 |
@@ -109,6 +122,10 @@ | ||
109 | 122 | } |
110 | 123 | } |
111 | 124 | |
125 | +- (void)move:(id)sender { | |
126 | + [self performSegueWithIdentifier:@"moveNote" sender:self]; | |
127 | +} | |
128 | + | |
112 | 129 | - (void)loadNote { |
113 | 130 | if (!self.item) return; |
114 | 131 |
@@ -135,7 +152,22 @@ | ||
135 | 152 | // On iPhone and call by segue, self.text is nil because view is not loaded yet. |
136 | 153 | if (self.text) { |
137 | 154 | [self loadNote]; |
155 | + [self setupToolbar]; | |
138 | 156 | } |
139 | 157 | } |
140 | 158 | } |
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 | + | |
141 | 173 | @end |
@@ -56,6 +56,11 @@ | ||
56 | 56 | storage = [Storage init]; |
57 | 57 | } |
58 | 58 | |
59 | + // Init detailview for iPad. | |
60 | + self.detailViewController.storage = storage; | |
61 | + self.detailViewController.passwordManager = passwordManager; | |
62 | + self.detailViewController.delegate = self; | |
63 | + | |
59 | 64 | // Load initial items. |
60 | 65 | [self insertItems]; |
61 | 66 | } |
@@ -361,4 +366,8 @@ | ||
361 | 366 | [self insertItem:newItem]; |
362 | 367 | } |
363 | 368 | |
369 | +-(void)detailViewFileItemRemoved:(FileItem *)item { | |
370 | + [self deleteItem:item]; | |
371 | +} | |
372 | + | |
364 | 373 | @end |
@@ -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 |
@@ -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 |
@@ -30,6 +30,11 @@ | ||
30 | 30 | */ |
31 | 31 | -(BOOL)isTopDir; |
32 | 32 | |
33 | +/* | |
34 | + * Enumerate top directory recursively and return array of NSString. | |
35 | + */ | |
36 | +- (NSArray *)listFolders; | |
37 | + | |
33 | 38 | |
34 | 39 | -(FileItem*)newItem; |
35 | 40 |
@@ -55,4 +60,7 @@ | ||
55 | 60 | - (FileItem *)encrypt:(NSString *)key item:(FileItem*)item; |
56 | 61 | - (FileItem *)decrypt:(NSString *)key item:(FileItem*)item; |
57 | 62 | |
63 | +- (void)moveFrom:(FileItem *)from to:(FileItem *)to; | |
64 | +- (NSString *)moveFrom:(FileItem *)from toPath:(NSString *)to; | |
65 | + | |
58 | 66 | @end |
@@ -50,6 +50,36 @@ | ||
50 | 50 | return result; |
51 | 51 | } |
52 | 52 | |
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 | + | |
53 | 83 | -(void)chdir:(NSString *)subdir { |
54 | 84 | NSString *newCurrent = [currentDirectory stringByAppendingPathComponent:subdir]; |
55 | 85 | self.currentDirectory = [newCurrent stringByAppendingString:@"/"]; |
@@ -295,7 +325,6 @@ | ||
295 | 325 | } |
296 | 326 | |
297 | 327 | - (FileItem *)decrypt:(NSString *)key item:(FileItem*)item { |
298 | - // TODO: implement | |
299 | 328 | NSData *encData = [NSData dataWithContentsOfFile:item.path]; |
300 | 329 | NSError *error = nil; |
301 | 330 | NSData *plainData = [CryptCore decrypt:key data:encData error:&error]; |
@@ -313,4 +342,28 @@ | ||
313 | 342 | return newItem; |
314 | 343 | } |
315 | 344 | |
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 | + | |
316 | 369 | @end |
@@ -51,11 +51,49 @@ | ||
51 | 51 | </navigationItem> |
52 | 52 | <connections> |
53 | 53 | <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"/> | |
54 | 55 | </connections> |
55 | 56 | </viewController> |
56 | 57 | </objects> |
57 | 58 | <point key="canvasLocation" x="1025" y="-1397"/> |
58 | 59 | </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> | |
59 | 97 | <!--Split View Controller--> |
60 | 98 | <scene sceneID="18"> |
61 | 99 | <objects> |
@@ -192,6 +230,24 @@ | ||
192 | 230 | </objects> |
193 | 231 | <point key="canvasLocation" x="2029" y="-494"/> |
194 | 232 | </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> | |
195 | 251 | </scenes> |
196 | 252 | <classes> |
197 | 253 | <class className="DetailViewController" superclassName="UIViewController"> |
@@ -211,6 +267,12 @@ | ||
211 | 267 | <class className="MasterViewController" superclassName="UITableViewController"> |
212 | 268 | <source key="sourceIdentifier" type="project" relativePath="./Classes/MasterViewController.h"/> |
213 | 269 | </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> | |
214 | 276 | </classes> |
215 | 277 | <simulatedMetricsContainer key="defaultSimulatedMetrics"> |
216 | 278 | <simulatedStatusBarMetrics key="statusBar" statusBarStyle="blackTranslucent"/> |
@@ -218,6 +280,6 @@ | ||
218 | 280 | <simulatedScreenMetrics key="destination"/> |
219 | 281 | </simulatedMetricsContainer> |
220 | 282 | <inferredMetricsTieBreakers> |
221 | - <segue reference="pK5-mO-z6F"/> | |
283 | + <segue reference="Kjf-1o-2Ik"/> | |
222 | 284 | </inferredMetricsTieBreakers> |
223 | 285 | </document> |
\ No newline at end of file |
@@ -57,7 +57,7 @@ | ||
57 | 57 | <outlet property="delegate" destination="12" id="15"/> |
58 | 58 | </connections> |
59 | 59 | </tableView> |
60 | - <navigationItem key="navigationItem" title="Master" id="36"> | |
60 | + <navigationItem key="navigationItem" title="List" id="36"> | |
61 | 61 | <barButtonItem key="rightBarButtonItem" systemItem="add" id="agb-4g-a59"> |
62 | 62 | <connections> |
63 | 63 | <segue destination="7bR-lH-lJ9" kind="modal" identifier="newNote" id="HlC-by-ur5"/> |
@@ -100,6 +100,7 @@ | ||
100 | 100 | </navigationItem> |
101 | 101 | <connections> |
102 | 102 | <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"/> | |
103 | 104 | </connections> |
104 | 105 | </viewController> |
105 | 106 | </objects> |
@@ -143,6 +144,42 @@ | ||
143 | 144 | </objects> |
144 | 145 | <point key="canvasLocation" x="2021" y="64"/> |
145 | 146 | </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> | |
146 | 183 | <!--Navigation Controller--> |
147 | 184 | <scene sceneID="a6N-vh-sA4"> |
148 | 185 | <objects> |
@@ -161,6 +198,24 @@ | ||
161 | 198 | </objects> |
162 | 199 | <point key="canvasLocation" x="1561" y="64"/> |
163 | 200 | </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> | |
164 | 219 | </scenes> |
165 | 220 | <classes> |
166 | 221 | <class className="DetailViewController" superclassName="UIViewController"> |
@@ -180,6 +235,12 @@ | ||
180 | 235 | <class className="MasterViewController" superclassName="UITableViewController"> |
181 | 236 | <source key="sourceIdentifier" type="project" relativePath="./Classes/MasterViewController.h"/> |
182 | 237 | </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> | |
183 | 244 | </classes> |
184 | 245 | <simulatedMetricsContainer key="defaultSimulatedMetrics"> |
185 | 246 | <simulatedStatusBarMetrics key="statusBar"/> |