OSDN Git Service

Change screen transition for iPhone.
[tombo/Tombo.git] / iOS / Tombo / Tombo / DetailViewController.m
index 6884fb4..5b0690d 100644 (file)
 #import "DetailViewController.h"
+#import "EditViewController.h"
+#import "MasterViewController.h"
+#import "Storage.h"
 
 @interface DetailViewController ()
-@property (strong, nonatomic) UIPopoverController *masterPopoverController;
-- (void)configureView;
+
 @end
 
 @implementation DetailViewController
+@synthesize text = _text;
+@synthesize item = _item;
+@synthesize master = _master;
 
-@synthesize detailItem = _detailItem;
-@synthesize storage;
-@synthesize detailText = _detailText;
-@synthesize masterPopoverController = _masterPopoverController;
-
-#pragma mark - Managing the detail item
-
-- (void)setDetailItem:(id)newDetailItem
+- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
 {
-    if (_detailItem != newDetailItem) {
-        _detailItem = newDetailItem;
-        
-        // Update the view.
-        [self configureView];
+    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
+    if (self) {
+        // Custom initialization
     }
-
-    if (self.masterPopoverController != nil) {
-        [self.masterPopoverController dismissPopoverAnimated:YES];
-    }        
-}
-
-- (void)configureView
-{
-    NSString *noteData;
-    if (self.detailItem && self.detailItem.path) {
-        NSError *error;
-        noteData = [NSString stringWithContentsOfFile:self.detailItem.path 
-                                             encoding:NSUTF8StringEncoding
-                                                error:&error];
-        if (error) return;
-    } else {
-        noteData = @"";
-    }
-    self.detailText.text = noteData;
+    return self;
 }
 
 - (void)viewDidLoad
 {
     [super viewDidLoad];
-       // Do any additional setup after loading the view, typically from a nib.
-    NSNotificationCenter *notify = [NSNotificationCenter defaultCenter];
-    [notify addObserver:self 
-               selector:@selector(keyboardDidShow:) 
-                   name:UIKeyboardDidShowNotification 
-                 object:nil];
-    
-    [notify addObserver:self
-               selector:@selector(keyboardDidHide:)
-                   name:UIKeyboardDidHideNotification
-                 object:nil];
     
-    [self configureView];
+    NSString *note = [Storage load:self.item.path];
+    if (note == nil) {
+        self.text.text = @"";
+    } else {
+        self.text.text = note;
+    }
 }
 
 - (void)viewDidUnload
 {
-    [self setDetailText:nil];
+    [self setText:nil];
+    [self setText:nil];
     [super viewDidUnload];
     // Release any retained subviews of the main view.
 }
 
-- (void)viewWillDisappear:(BOOL)animated {
-    // Leaving detail view
-    NSString *note = self.detailText.text;
-    [storage save:note item: self.detailItem];
-    
-    [super viewWillDisappear: animated];
-}
-
 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
 {
-    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
-        return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
-    } else {
-        return YES;
-    }
-}
-
-#pragma mark - Notification handler
-
-- (void)keyboardDidShow:(NSNotification*)notification {
-    NSDictionary *info = [notification userInfo];
-    
-    CGRect rect = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue];
-    CGRect frame = self.detailText.frame;
-    frame.size.height -= rect.size.height;
-    self.detailText.frame = frame;
+       return YES;
 }
 
-- (void)keyboardDidHide:(NSNotification*)notification {
-    NSDictionary *info = [notification userInfo];
-    
-    CGRect rect = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
-    CGRect frame = self.detailText.frame;
-    frame.size.height += rect.size.height;
-    self.detailText.frame = frame;
-}
+- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
+    if ([[segue identifier] isEqualToString:@"editNote"]) {
+        EditViewController *edit = (EditViewController*)[[[segue destinationViewController] viewControllers] objectAtIndex:0];
+        edit.detailItem = self.item;
+        edit.delegate = self.master;
 
-#pragma mark - Split view
-
-- (void)splitViewController:(UISplitViewController *)splitController willHideViewController:(UIViewController *)viewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popoverController
-{
-    barButtonItem.title = NSLocalizedString(@"Master", @"Master");
-    [self.navigationItem setLeftBarButtonItem:barButtonItem animated:YES];
-    self.masterPopoverController = popoverController;
+    }
 }
 
-- (void)splitViewController:(UISplitViewController *)splitController willShowViewController:(UIViewController *)viewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
-{
-    // Called when the view is shown again in the split view, invalidating the button and popover controller.
-    [self.navigationItem setLeftBarButtonItem:nil animated:YES];
-    self.masterPopoverController = nil;
+- (void)setItem:(FileItem *)item {
+    if (self.item == item) return;
+    if (item.isNewItem) {
+        self.text.text = @"";
+    } else {
+        // On iPhone and call by segue, self.text is nil because view is not loaded yet.
+        if (self.text) {
+            NSString *note = [Storage load:item.path];
+            if (note == nil) {
+                self.text.text = @"";
+            } else {
+                self.text.text = note;
+            }
+        }
+    }
+    _item = item;
 }
-
 @end