Skip to content
Browse files

about to clean

  • Loading branch information...
1 parent 9310365 commit 53604a8c78d37e2491137f44daa820ffa09cd733 @oscardelben committed Jan 6, 2011
Showing with 3,485 additions and 895 deletions.
  1. +1 −0 .gitignore
  2. +4 −0 Classes/ApplicationHelper.h
  3. +84 −16 Classes/ApplicationHelper.m
  4. +23 −0 Classes/Classes-1.moved-aside/Idea.h
  5. +54 −0 Classes/Classes-1.moved-aside/Idea.m
  6. +34 −0 Classes/Idea.h
  7. +79 −0 Classes/Idea.m
  8. +5 −3 Classes/IdeaDetailViewController.h
  9. +9 −2 Classes/IdeaDetailViewController.m
  10. +2 −9 Classes/IdeasAppDelegate.m
  11. +28 −0 Classes/MailComposerViewController.h
  12. +144 −0 Classes/MailComposerViewController.m
  13. +8 −2 Classes/RootViewController.h
  14. +105 −24 Classes/RootViewController.m
  15. +18 −0 Classes/SettingsViewController.h
  16. +230 −0 Classes/SettingsViewController.m
  17. +421 −0 Classes/SettingsViewController.xib
  18. +18 −0 Classes/TextFieldCell.h
  19. +40 −0 Classes/TextFieldCell.m
  20. BIN Ideas.xcdatamodeld/Ideas.xcdatamodel/elements
  21. BIN Ideas.xcdatamodeld/Ideas.xcdatamodel/layout
  22. +71 −53 Ideas.xcodeproj/oscardelben.mode1v3
  23. +472 −547 Ideas.xcodeproj/oscardelben.pbxuser
  24. +152 −8 Ideas.xcodeproj/project.pbxproj
  25. +2 −0 README
  26. +378 −0 TextFieldCell.xib
  27. BIN build/Debug-iphoneos/Ideas.app.dSYM/Contents/Resources/DWARF/Ideas
  28. BIN build/Debug-iphoneos/Ideas.app/18-envelope.png
  29. BIN build/Debug-iphoneos/Ideas.app/187-pencil.png
  30. BIN build/Debug-iphoneos/Ideas.app/Ideas
  31. BIN build/Debug-iphoneos/Ideas.app/Ideas.momd/Ideas.mom
  32. BIN build/Debug-iphoneos/Ideas.app/SettingsViewController.nib
  33. +37 −1 build/Debug-iphoneos/Ideas.app/_CodeSignature/CodeResources
  34. BIN build/Debug-iphoneos/Ideas.app/bg-blue.png
  35. BIN build/Debug-iphoneos/Ideas.app/bg-green-dark.png
  36. BIN build/Debug-iphoneos/Ideas.app/bg-green-light.png
  37. BIN build/Debug-iphoneos/Ideas.app/bg-green-middle.png
  38. BIN build/Debug-iphoneos/Ideas.app/bg-white.png
  39. BIN build/Debug-iphoneos/Ideas.app/bg-yellow.png
  40. BIN build/Debug-iphonesimulator/Ideas.app.dSYM/Contents/Resources/DWARF/Ideas
  41. BIN build/Debug-iphonesimulator/Ideas.app/18-envelope.png
  42. BIN build/Debug-iphonesimulator/Ideas.app/187-pencil.png
  43. BIN build/Debug-iphonesimulator/Ideas.app/19-gear.png
  44. BIN build/Debug-iphonesimulator/Ideas.app/Ideas
  45. BIN build/Debug-iphonesimulator/Ideas.app/Ideas.momd/Ideas.mom
  46. BIN build/Debug-iphonesimulator/Ideas.app/SettingsViewController.nib
  47. BIN build/Debug-iphonesimulator/Ideas.app/TextFieldCell.nib
  48. BIN build/Debug-iphonesimulator/Ideas.app/bg-blue.png
  49. BIN build/Ideas.build/Debug-iphoneos/Ideas.build/Ideas-project-headers.hmap
  50. +33 −18 build/Ideas.build/Debug-iphoneos/Ideas.build/Ideas.dep
  51. BIN build/Ideas.build/Debug-iphoneos/Ideas.build/Ideas.hmap
  52. BIN build/Ideas.build/Debug-iphoneos/Ideas.build/Objects-normal/armv6/ApplicationHelper.o
  53. BIN build/Ideas.build/Debug-iphoneos/Ideas.build/Objects-normal/armv6/Idea.o
  54. BIN build/Ideas.build/Debug-iphoneos/Ideas.build/Objects-normal/armv6/IdeaDetailViewController.o
  55. BIN build/Ideas.build/Debug-iphoneos/Ideas.build/Objects-normal/armv6/Ideas
  56. +3 −0 build/Ideas.build/Debug-iphoneos/Ideas.build/Objects-normal/armv6/Ideas.LinkFileList
  57. BIN build/Ideas.build/Debug-iphoneos/Ideas.build/Objects-normal/armv6/IdeasAppDelegate.o
  58. BIN build/Ideas.build/Debug-iphoneos/Ideas.build/Objects-normal/armv6/MailComposerViewController.o
  59. +16 −0 build/Ideas.build/Debug-iphoneos/Ideas.build/Objects-normal/armv6/MailComposerViewController.o~>
  60. BIN build/Ideas.build/Debug-iphoneos/Ideas.build/Objects-normal/armv6/MailComposerViewController.o~?
  61. BIN build/Ideas.build/Debug-iphoneos/Ideas.build/Objects-normal/armv6/RootViewController.o
  62. BIN build/Ideas.build/Debug-iphoneos/Ideas.build/Objects-normal/armv6/SettingsViewController.o
  63. BIN build/Ideas.build/Debug-iphoneos/Ideas.build/Objects-normal/armv7/ApplicationHelper.o
  64. BIN build/Ideas.build/Debug-iphoneos/Ideas.build/Objects-normal/armv7/Idea.o
  65. BIN build/Ideas.build/Debug-iphoneos/Ideas.build/Objects-normal/armv7/IdeaDetailViewController.o
  66. BIN build/Ideas.build/Debug-iphoneos/Ideas.build/Objects-normal/armv7/Ideas
  67. +3 −0 build/Ideas.build/Debug-iphoneos/Ideas.build/Objects-normal/armv7/Ideas.LinkFileList
  68. BIN build/Ideas.build/Debug-iphoneos/Ideas.build/Objects-normal/armv7/IdeasAppDelegate.o
  69. BIN build/Ideas.build/Debug-iphoneos/Ideas.build/Objects-normal/armv7/MailComposerViewController.o
  70. BIN build/Ideas.build/Debug-iphoneos/Ideas.build/Objects-normal/armv7/RootViewController.o
  71. BIN build/Ideas.build/Debug-iphoneos/Ideas.build/Objects-normal/armv7/SettingsViewController.o
  72. +454 −116 build/Ideas.build/Debug-iphoneos/Ideas.build/build-state.dat
  73. BIN build/Ideas.build/Debug-iphonesimulator/Ideas.build/Ideas-project-headers.hmap
  74. +19 −8 build/Ideas.build/Debug-iphonesimulator/Ideas.build/Ideas.dep
  75. BIN build/Ideas.build/Debug-iphonesimulator/Ideas.build/Ideas.hmap
  76. BIN build/Ideas.build/Debug-iphonesimulator/Ideas.build/Objects-normal/i386/ApplicationHelper.o
  77. BIN build/Ideas.build/Debug-iphonesimulator/Ideas.build/Objects-normal/i386/Idea.o
  78. BIN build/Ideas.build/Debug-iphonesimulator/Ideas.build/Objects-normal/i386/IdeaDetailViewController.o
  79. BIN build/Ideas.build/Debug-iphonesimulator/Ideas.build/Objects-normal/i386/IdeaDetailViewController.o~$
  80. 0 build/Ideas.build/Debug-iphonesimulator/Ideas.build/Objects-normal/i386/IdeaDetailViewController.o~>
  81. +4 −0 build/Ideas.build/Debug-iphonesimulator/Ideas.build/Objects-normal/i386/Ideas.LinkFileList
  82. BIN build/Ideas.build/Debug-iphonesimulator/Ideas.build/Objects-normal/i386/IdeasAppDelegate.o
  83. BIN build/Ideas.build/Debug-iphonesimulator/Ideas.build/Objects-normal/i386/MailComposerViewController.o
  84. BIN build/Ideas.build/Debug-iphonesimulator/Ideas.build/Objects-normal/i386/RootViewController.o
  85. BIN build/Ideas.build/Debug-iphonesimulator/Ideas.build/Objects-normal/i386/SettingsViewController.o
  86. +182 −0 build/Ideas.build/Debug-iphonesimulator/Ideas.build/Objects-normal/i386/SettingsViewController.o~>
  87. BIN build/Ideas.build/Debug-iphonesimulator/Ideas.build/Objects-normal/i386/SettingsViewController.o~?
  88. BIN build/Ideas.build/Debug-iphonesimulator/Ideas.build/Objects-normal/i386/TextFieldCell.o
  89. BIN build/Ideas.build/Debug-iphonesimulator/Ideas.build/Objects-normal/i386/TextFieldCell.o~$
  90. +2 −0 build/Ideas.build/Debug-iphonesimulator/Ideas.build/Objects-normal/i386/TextFieldCell.o~>
  91. +350 −88 build/Ideas.build/Debug-iphonesimulator/Ideas.build/build-state.dat
  92. BIN build/Ideas.build/Ideas.pbxindex/categories.pbxbtree
  93. BIN build/Ideas.build/Ideas.pbxindex/cdecls.pbxbtree
  94. BIN build/Ideas.build/Ideas.pbxindex/decls.pbxbtree
  95. BIN build/Ideas.build/Ideas.pbxindex/files.pbxbtree
  96. BIN build/Ideas.build/Ideas.pbxindex/imports.pbxbtree
  97. BIN build/Ideas.build/Ideas.pbxindex/pbxindex.header
  98. BIN build/Ideas.build/Ideas.pbxindex/protocols.pbxbtree
  99. BIN build/Ideas.build/Ideas.pbxindex/refs.pbxbtree
  100. BIN build/Ideas.build/Ideas.pbxindex/strings.pbxstrings/control
  101. BIN build/Ideas.build/Ideas.pbxindex/strings.pbxstrings/strings
  102. BIN build/Ideas.build/Ideas.pbxindex/subclasses.pbxbtree
  103. BIN build/Ideas.build/Ideas.pbxindex/symbols0.pbxsymbols
  104. BIN images/18-envelope.png
  105. BIN images/187-pencil.png
  106. BIN images/bg-blue.png
View
1 .gitignore
@@ -0,0 +1 @@
+Classes/Sensible TableView
View
4 Classes/ApplicationHelper.h
@@ -16,5 +16,9 @@
+ (void)showApplicationError;
+ (NSDictionary *)themes;
++ (NSDictionary *)theme;
++ (void)saveTheme:(NSString *)themeID;
+
++ (NSString *)recipient;
@end
View
100 Classes/ApplicationHelper.m
@@ -25,33 +25,101 @@ + (void)showApplicationError
+ (NSDictionary *)themes
{
- NSArray *keys = [NSArray arrayWithObjects:@"red", @"green", @"blue", @"background", @"foreground", @"selected", nil];
+ NSArray *keys = [NSArray arrayWithObjects:@"name", @"red", @"green", @"blue", @"background", @"foreground", @"selected", nil];
+
NSDictionary *theme1 = [NSDictionary
dictionaryWithObjects:
[NSArray arrayWithObjects:
- [NSNumber numberWithInt:53],
- [NSNumber numberWithInt:161],
- [NSNumber numberWithInt:95],
- @"bg-green-dark.png",
- @"bg-green-light.png",
- @"bg-green-middle.png",
- nil]
+ @"Ocean",
+ [NSNumber numberWithInt:19],
+ [NSNumber numberWithInt:60],
+ [NSNumber numberWithInt:101],
+ @"bg-white.png",
+ @"bg-yellow.png",
+ @"bg-yellow.png",
+ nil]
+ forKeys: keys];
+
+ NSDictionary *theme2 = [NSDictionary
+ dictionaryWithObjects:
+ [NSArray arrayWithObjects:
+ @"Vibrant",
+ [NSNumber numberWithInt:101],
+ [NSNumber numberWithInt:94],
+ [NSNumber numberWithInt:57],
+ @"bg-blue.png",
+ @"bg-yellow.png",
+ @"bg-yellow.png",
+ nil]
+ forKeys: keys];
+
+ NSDictionary *theme3 = [NSDictionary
+ dictionaryWithObjects:
+ [NSArray arrayWithObjects:
+ @"Fashion",
+ [NSNumber numberWithInt:208],
+ [NSNumber numberWithInt:31],
+ [NSNumber numberWithInt:60],
+ @"bg-white.png",
+ @"bg-yellow.png",
+ @"bg-yellow.png",
+ nil]
forKeys: keys];
NSDictionary *theme4 = [NSDictionary
dictionaryWithObjects:
- [NSArray arrayWithObjects:
- [NSNumber numberWithInt:19],
- [NSNumber numberWithInt:60],
- [NSNumber numberWithInt:101],
- @"bg-white.png",
- @"bg-yellow.png",
- @"bg-yellow.png",
- nil]
+ [NSArray arrayWithObjects:
+ @"Nature",
+ [NSNumber numberWithInt:53],
+ [NSNumber numberWithInt:161],
+ [NSNumber numberWithInt:95],
+ @"bg-green-dark.png",
+ @"bg-green-light.png",
+ @"bg-green-middle.png",
+ nil]
forKeys: keys];
+ NSDictionary *themes = [NSDictionary
+ dictionaryWithObjects:[NSArray arrayWithObjects:
+ theme1, theme2, theme3, theme4, nil]
+ forKeys:[NSArray arrayWithObjects:
+ @"theme1", @"theme2", @"theme3", @"theme4", nil]];
+
+ return themes;
+
+}
+
++ (NSDictionary *)theme
+{
+ NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
+ NSString *themeID = [userDefaults objectForKey:@"themeID"];
+
+ if (themeID == nil) {
+ return [[self themes] objectForKey:@"theme1"];
+ } else {
+ return [[self themes] objectForKey:themeID];
+ }
+
+}
+
++ (void)saveTheme:(NSString *)themeID
+{
+ NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
+
+ [userDefaults setObject:themeID forKey:@"themeID"];
+}
+
++ (NSString *)recipient
+{
+ NSUserDefaults *useDefaults = [NSUserDefaults standardUserDefaults];
+ NSString *recipient = [useDefaults objectForKey:@"recipient"];
+ if (recipient == nil) {
+ return @"";
+ } else {
+ return recipient;
+ }
}
@end
View
23 Classes/Classes-1.moved-aside/Idea.h
@@ -0,0 +1,23 @@
+//
+// Idea.h
+// Ideas
+//
+// Created by Oscar Del Ben on 1/5/11.
+// Copyright 2011 Dibi Store di Del Ben Oscar. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+
+@interface Idea : NSManagedObject {
+
+}
+
+@property (assign) NSString *name;
+@property (assign) NSDate *timeStamp;
+@property (assign) NSManagedObject *parent;
+@property (assign) NSManagedObject *children;
+
+- (NSString *)dump;
+
+@end
View
54 Classes/Classes-1.moved-aside/Idea.m
@@ -0,0 +1,54 @@
+//
+// Idea.m
+// Ideas
+//
+// Created by Oscar Del Ben on 1/5/11.
+// Copyright 2011 Dibi Store di Del Ben Oscar. All rights reserved.
+//
+
+#import "Idea.h"
+
+
+@implementation Idea
+
+@dynamic name;
+@dynamic timeStamp;
+@dynamic parent;
+@dynamic children;
+
+- (NSString *)recursiveDump:(BOOL)first andIndentation:(int)indentation
+{
+ NSMutableString *result = [NSMutableString string];
+
+ if (first) {
+ [result appendString:[self name]];
+ } else {
+ NSMutableString *indentationString = [NSMutableString string];
+
+ for (int i = 0; i < indentation; i++) {
+ [indentationString appendString:@" "];
+ }
+
+ [result appendFormat:@"%@- %@", indentationString, [self name]];
+ }
+
+
+ // repeat for every children
+
+ // NSSet is not ordered!
+ NSSet *ideaChildren = [self valueForKey:@"children"];
+
+ for (Idea *child in ideaChildren) {
+ [result appendFormat:@"\n"];
+ [result appendFormat:@"%@", [child recursiveDump:NO andIndentation:indentation + 2]];
+ }
+
+ return result;
+}
+
+- (NSString *)dump
+{
+ return [self recursiveDump:YES andIndentation:0];
+}
+
+@end
View
34 Classes/Idea.h
@@ -0,0 +1,34 @@
+//
+// Idea.h
+// Ideas
+//
+// Created by Oscar Del Ben on 1/6/11.
+// Copyright 2011 Dibi Store di Del Ben Oscar. All rights reserved.
+//
+
+#import <CoreData/CoreData.h>
+
+
+@interface Idea : NSManagedObject
+{
+}
+
+@property (nonatomic, retain) NSDate * timeStamp;
+@property (nonatomic, retain) NSString * name;
+@property (nonatomic, retain) NSSet* children;
+@property (nonatomic, retain) Idea * parent;
+
+- (NSString *)dump;
+- (NSString *)subject;
+
+@end
+
+
+@interface Idea (CoreDataGeneratedAccessors)
+- (void)addChildrenObject:(Idea *)value;
+- (void)removeChildrenObject:(Idea *)value;
+- (void)addChildren:(NSSet *)value;
+- (void)removeChildren:(NSSet *)value;
+
+@end
+
View
79 Classes/Idea.m
@@ -0,0 +1,79 @@
+//
+// Idea.m
+// Ideas
+//
+// Created by Oscar Del Ben on 1/6/11.
+// Copyright 2011 Dibi Store di Del Ben Oscar. All rights reserved.
+//
+
+#import "Idea.h"
+
+
+@implementation Idea
+
+@dynamic timeStamp;
+@dynamic name;
+@dynamic children;
+@dynamic parent;
+
+
+- (NSArray *)orderedChildren
+{
+ NSSet *children = [self valueForKey:@"children"];
+
+ // Edit the sort key as appropriate.
+ NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"timeStamp" ascending:YES];
+ NSArray *sortDescriptors = [[[NSArray alloc] initWithObjects:sortDescriptor, nil] autorelease];
+
+ [sortDescriptor release];
+
+ return [children sortedArrayUsingDescriptors:sortDescriptors];
+}
+
+- (NSString *)dumpIter:(BOOL)firstTime indentation:(int)indentation
+{
+ NSMutableString *result = [NSMutableString string];
+
+ NSString *name = [self valueForKey:@"name"];
+
+ if (firstTime) {
+ [result appendString:name];
+ } else {
+ NSMutableString *stringIndentation = [NSMutableString string];
+
+ for (int i = 0; i < indentation; i++) {
+ // two spaces for every indentation
+ [stringIndentation appendString:@" "];
+ }
+
+ [result appendFormat:@"%@- %@", stringIndentation, name];
+ }
+
+ for (Idea *child in [self orderedChildren]) {
+ [result appendString:@"\n"];
+
+ [result appendString:[child dumpIter:NO indentation:indentation+1]];
+ }
+
+ return result;
+}
+
+- (NSString *)dump
+{
+ return [self dumpIter:YES indentation:0];
+}
+
+- (NSString *)subject
+{
+ NSString *str = [self valueForKey:@"name"];
+
+ if ([str length] > 60) {
+ NSString *subject = [str substringToIndex:60];
+ return [NSString stringWithFormat:@"%@...", subject];
+ } else {
+ return str;
+ }
+
+}
+
+@end
View
8 Classes/IdeaDetailViewController.h
@@ -7,21 +7,23 @@
//
#import <UIKit/UIKit.h>
+#import "Idea.h"
@protocol IdeaDetailDelegate;
@class RootViewController;
+@class Idea;
@interface IdeaDetailViewController : UIViewController <UITextFieldDelegate> {
IBOutlet UITextField *name;
- NSManagedObject *idea;
+ Idea *idea;
BOOL newIdea;
id <IdeaDetailDelegate> delegate;
}
@property (nonatomic, retain) IBOutlet UITextField *name;
-@property (nonatomic, retain) NSManagedObject *idea;
+@property (nonatomic, retain) Idea *idea;
@property (nonatomic, assign) BOOL newIdea;
@property (nonatomic, retain) id <IdeaDetailDelegate> delegate;
@@ -34,7 +36,7 @@
@protocol IdeaDetailDelegate <NSObject>
-- (void)ideaDetailViewController:(IdeaDetailViewController *)ideaDetailViewController didSaveIdea:(NSManagedObject *)idea;
+- (void)ideaDetailViewController:(IdeaDetailViewController *)ideaDetailViewController didSaveIdea:(Idea *)idea;
- (void)ideaDetailViewControllerDidForceDelete:(IdeaDetailViewController *)ideaDetailViewController;
@end
View
11 Classes/IdeaDetailViewController.m
@@ -8,6 +8,7 @@
#import "IdeaDetailViewController.h"
#import "RootViewController.h"
+#import "Idea.h"
#import "ApplicationHelper.h"
@@ -43,6 +44,8 @@ - (void)viewWillAppear:(BOOL)animated
- (void)viewDidLoad {
[super viewDidLoad];
+ NSDictionary *theme = [ApplicationHelper theme];
+
// Configure the navigation bar
self.navigationItem.title = @"Add Entry";
@@ -54,9 +57,13 @@ - (void)viewDidLoad {
self.navigationItem.rightBarButtonItem = saveButtonItem;
[saveButtonItem release];
- self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:53/255.0 green:161/255.0 blue:95/255.0 alpha:1];
+ int r = [[theme objectForKey:@"red"] intValue];
+ int g = [[theme objectForKey:@"green"] intValue];
+ int b = [[theme objectForKey:@"blue"] intValue];
+
+ self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:1];
- [self.view setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"bg-dark.png"]]];
+ [self.view setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:[theme objectForKey:@"background"]]]];
[name becomeFirstResponder];
}
View
11 Classes/IdeasAppDelegate.m
@@ -8,7 +8,7 @@
#import "IdeasAppDelegate.h"
#import "RootViewController.h"
-
+#import "ApplicationHelper.h"
@implementation IdeasAppDelegate
@@ -27,13 +27,6 @@ - (void)awakeFromNib {
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
-
- // Override point for customization after application launch.
- navigationController.navigationBar.tintColor = [UIColor colorWithRed:19/255.0 green:60/255.0 blue:101/255.0 alpha:1];
- navigationController.toolbar.tintColor = [UIColor colorWithRed:19/255.0 green:60/255.0 blue:101/255.0 alpha:1];
-
- navigationController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"bg-dark.png"]];
-
// Add the navigation controller's view to the window and display.
[self.window addSubview:navigationController.view];
[self.window makeKeyAndVisible];
@@ -176,7 +169,7 @@ - (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
*/
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
- abort();
+ [ApplicationHelper showApplicationError];
}
return persistentStoreCoordinator_;
View
28 Classes/MailComposerViewController.h
@@ -0,0 +1,28 @@
+//
+// MailComposerViewController.h
+// Ideas
+//
+// Created by Oscar Del Ben on 1/5/11.
+// Copyright 2011 Dibi Store di Del Ben Oscar. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+#import <MessageUI/MessageUI.h>
+#import <MessageUI/MFMailComposeViewController.h>
+
+@class RootViewController;
+@class Idea;
+
+@interface MailComposerViewController : UIViewController <MFMailComposeViewControllerDelegate> {
+ RootViewController *rootViewController;
+ Idea *idea;
+}
+
+@property (nonatomic, retain) RootViewController *rootViewController;
+@property (nonatomic, retain) Idea *idea;
+
+-(IBAction)showPicker;
+-(void)displayComposerSheet;
+-(void)launchMailAppOnDevice;
+
+@end
View
144 Classes/MailComposerViewController.m
@@ -0,0 +1,144 @@
+ //
+// MailComposerViewController.m
+// Ideas
+//
+// Created by Oscar Del Ben on 1/5/11.
+// Copyright 2011 Dibi Store di Del Ben Oscar. All rights reserved.
+//
+
+#import "MailComposerViewController.h"
+#import "ApplicationHelper.h"
+#import "Idea.h"
+
+@implementation MailComposerViewController
+
+@synthesize rootViewController;
+@synthesize idea;
+
+-(IBAction)showPicker
+{
+ // Check if we can send emails. Thanks Apple.
+ Class mailClass = (NSClassFromString(@"MFMailComposeViewController"));
+ if (mailClass != nil)
+ {
+ // We must always check whether the current device is configured for sending emails
+ if ([mailClass canSendMail])
+ {
+ [self displayComposerSheet];
+ }
+ else
+ {
+ [self launchMailAppOnDevice];
+ }
+ }
+ else
+ {
+ [self launchMailAppOnDevice];
+ }
+}
+
+#pragma mark -
+#pragma mark Compose Mail
+
+// Displays an email composition interface inside the application. Populates all the Mail fields.
+-(void)displayComposerSheet
+{
+ MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
+ picker.mailComposeDelegate = self;
+
+ [picker setSubject:[idea subject]];
+
+
+ // Set up recipients
+ NSArray *toRecipients = [NSArray arrayWithObject:[ApplicationHelper recipient]];
+
+ [picker setToRecipients:toRecipients];
+
+ // Fill out the email body text
+ [picker setMessageBody:[idea dump] isHTML:NO];
+
+ [rootViewController presentModalViewController:picker animated:YES];
+ [picker release];
+}
+
+
+// Dismisses the email composition interface when users tap Cancel or Send. Proceeds to update the message field with the result of the operation.
+- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
+{
+ [rootViewController dismissModalViewControllerAnimated:YES];
+}
+
+
+#pragma mark -
+#pragma mark Workaround
+
+// Launches the Mail application on the device.
+-(void)launchMailAppOnDevice
+{
+ NSString *recipient = [ApplicationHelper recipient];
+ NSString *subject = [idea subject];
+
+ NSString *recipients = [NSString stringWithFormat:@"mailto:%@?subject=%@", recipient, subject];
+ NSString *body = [NSString stringWithFormat:@"&body=%@", [idea dump]];
+
+ NSString *email = [NSString stringWithFormat:@"%@%@", recipients, body];
+ email = [email stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+
+ [[UIApplication sharedApplication] openURL:[NSURL URLWithString:email]];
+}
+
+
+// The designated initializer. Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad.
+/*
+- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
+ self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
+ if (self) {
+ // Custom initialization.
+ }
+ return self;
+}
+*/
+
+/*
+// Implement loadView to create a view hierarchy programmatically, without using a nib.
+- (void)loadView {
+}
+*/
+
+/*
+// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
+- (void)viewDidLoad {
+ [super viewDidLoad];
+}
+*/
+
+/*
+// Override to allow orientations other than the default portrait orientation.
+- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
+ // Return YES for supported orientations.
+ return (interfaceOrientation == UIInterfaceOrientationPortrait);
+}
+*/
+
+- (void)didReceiveMemoryWarning {
+ // Releases the view if it doesn't have a superview.
+ [super didReceiveMemoryWarning];
+
+ // Release any cached data, images, etc. that aren't in use.
+}
+
+- (void)viewDidUnload {
+ [super viewDidUnload];
+ // Release any retained subviews of the main view.
+ // e.g. self.myOutlet = nil;
+}
+
+
+- (void)dealloc {
+ [rootViewController release];
+ [idea release];
+ [super dealloc];
+}
+
+
+@end
View
10 Classes/RootViewController.h
@@ -10,9 +10,13 @@
#import <CoreData/CoreData.h>
#import "IdeaDetailViewController.h"
+@class MailComposerViewController;
+@class Idea;
+
@interface RootViewController : UITableViewController <NSFetchedResultsControllerDelegate, UITextFieldDelegate, UIActionSheetDelegate, IdeaDetailDelegate> {
- NSManagedObject *selectedIdea;
+ Idea *selectedIdea;
+ MailComposerViewController *mailComposerViewController;
@private
NSFetchedResultsController *fetchedResultsController_;
@@ -22,11 +26,13 @@
@property (nonatomic, retain) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, retain) NSFetchedResultsController *fetchedResultsController;
-@property (nonatomic, retain) NSManagedObject *selectedIdea;
+@property (nonatomic, retain) Idea *selectedIdea;
+@property (nonatomic, retain) MailComposerViewController *mailComposerViewController;
- (void)showDeleteConfirmation:(id)sender;
- (void)deleteCurrentObject;
- (void)updateTitle;
+- (void)reloadTheme;
@end
View
129 Classes/RootViewController.m
@@ -8,13 +8,19 @@
#import "RootViewController.h"
#import "IdeaDetailViewController.h"
+#import "SettingsViewController.h"
+#import "MailComposerViewController.h"
+#import "Idea.h"
#import "ApplicationHelper.h"
@interface RootViewController ()
- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath;
- (void)editCurrentObject:(id)sender;
-- (void)showDetailView:(NSManagedObject *)aObject newIdea:(BOOL)newIdea;
+- (void)showDetailView:(Idea *)aObject newIdea:(BOOL)newIdea;
+- (void)showMailView;
+- (void)showSettingsView;
+- (void)configureTheme;
@end
@@ -23,6 +29,7 @@ @implementation RootViewController
@synthesize fetchedResultsController=fetchedResultsController_, managedObjectContext=managedObjectContext_;
@synthesize selectedIdea;
+@synthesize mailComposerViewController;
#pragma mark -
@@ -33,17 +40,36 @@ - (void)viewDidLoad {
[super viewDidLoad];
[self updateTitle];
+
+ if (mailComposerViewController == nil) {
+ mailComposerViewController = [[MailComposerViewController alloc] init];
+ mailComposerViewController.rootViewController = self;
+ }
UIBarButtonItem *addButton = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
target:self
action:@selector(insertNewObject)];
self.navigationItem.rightBarButtonItem = addButton;
- [addButton release];
+ [addButton release];
+
+ if (!selectedIdea) {
+ UIBarButtonItem *optionsButton = [[UIBarButtonItem alloc]
+ initWithTitle:@"Settings"
+ style:UIBarButtonItemStyleBordered
+ target:self
+ action:@selector(showSettingsView)];
+
+ self.navigationItem.leftBarButtonItem = optionsButton;
+
+ [optionsButton release];
+ }
+
self.tableView.backgroundColor = [UIColor clearColor]; // Display image under the view
+ // TODO separator color
self.tableView.separatorColor = [UIColor colorWithRed:34/255.0 green:76/255.0 blue:72/255.0 alpha:1];
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
@@ -57,31 +83,39 @@ - (void)viewDidLoad {
action:nil];
UIBarButtonItem *editItem = [[UIBarButtonItem alloc]
- initWithBarButtonSystemItem:UIBarButtonSystemItemCompose
+ initWithImage:[UIImage imageNamed:@"187-pencil.png"]
+ style:UIBarButtonSystemItemReply
target:self
action:@selector(editCurrentObject:)];
UIBarButtonItem *deleteItem = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemTrash
target:self
action:@selector(showDeleteConfirmation:)];
- UIBarButtonItem *exportItem = [[UIBarButtonItem alloc]
- initWithBarButtonSystemItem:UIBarButtonSystemItemOrganize
+ UIBarButtonItem *mailItem = [[UIBarButtonItem alloc]
+ initWithImage:[UIImage imageNamed:@"18-envelope.png"]
+ style:UIBarButtonSystemItemReply
target:self
- action:nil];
+ action:@selector(showMailView)];
self.toolbarItems = [NSArray arrayWithObjects:
flexibleSPace,
editItem,
flexibleSPace,
- exportItem,
+ mailItem,
flexibleSPace,
deleteItem,
flexibleSPace,
nil];
+
+ [flexibleSPace release];
+ [editItem release];
+ [mailItem release];
+ [deleteItem release];
} else {
self.navigationController.toolbarHidden = YES;
}
+ [self configureTheme];
}
@@ -95,7 +129,6 @@ - (void)viewWillAppear:(BOOL)animated {
} else {
[self.navigationController setToolbarHidden:YES animated:YES];
}
-
}
@@ -132,23 +165,46 @@ - (void)updateTitle
}
}
+- (void)configureTheme
+{
+ NSDictionary *theme = [ApplicationHelper theme];
+
+ int r = [[theme objectForKey:@"red"] intValue];
+ int g = [[theme objectForKey:@"green"] intValue];
+ int b = [[theme objectForKey:@"blue"] intValue];
+
+ // Override point for customization after application launch.
+ self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:1];
+ self.navigationController.toolbar.tintColor = [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:1];
+
+ self.navigationController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:[theme objectForKey:@"background"]]];
+
+ // This should be done only when the theme changed
+ [self.tableView reloadData];
+}
+
- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath {
- NSManagedObject *managedObject = [self.fetchedResultsController objectAtIndexPath:indexPath];
+ NSDictionary *theme = [ApplicationHelper theme];
+
+ Idea *idea = [self.fetchedResultsController objectAtIndexPath:indexPath];
- cell.textLabel.text = [managedObject valueForKey:@"name"];
+ cell.textLabel.text = [idea valueForKey:@"name"];
cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:17.0];
cell.accessoryType = UIButtonTypeRoundedRect;
cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
cell.textLabel.numberOfLines = 0;
- cell.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"bg-light.png"]];
-
+ cell.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:[theme objectForKey:@"foreground"]]];
+
+
+ /*
UIView *selectedView = [[[UIView alloc] init] autorelease];
- selectedView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"bg-selected.png"]];
+ selectedView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:[theme objectForKey:@"selected"]]];
cell.selectedBackgroundView = selectedView;
+ */
}
- (void)showDeleteConfirmation:(id)sender
@@ -160,7 +216,7 @@ - (void)showDeleteConfirmation:(id)sender
destructiveButtonTitle:@"Confirm"
otherButtonTitles:nil];
- [actionSheet showInView:self.view];
+ [actionSheet showFromToolbar:self.navigationController.toolbar];
[actionSheet release];
}
@@ -170,7 +226,7 @@ - (void)editCurrentObject:(id)sender
[self showDetailView:selectedIdea newIdea:FALSE];
}
-- (void)showDetailView:(NSManagedObject *)aObject newIdea:(BOOL)newIdea
+- (void)showDetailView:(Idea *)aObject newIdea:(BOOL)newIdea
{
IdeaDetailViewController *detailViewController = [[IdeaDetailViewController alloc] initWithNibName:@"IdeaDetailViewController" bundle:nil];
detailViewController.idea = aObject;
@@ -185,9 +241,33 @@ - (void)showDetailView:(NSManagedObject *)aObject newIdea:(BOOL)newIdea
[navigationController release];
}
+- (void)showMailView
+{
+ mailComposerViewController.idea = selectedIdea;
+ [mailComposerViewController showPicker];
+}
+
+- (void)showSettingsView
+{
+ SettingsViewController *settingsViewController = [[SettingsViewController alloc] initWithNibName:@"SettingsViewController" bundle:nil];
+ settingsViewController.rootViewController = self;
+
+ UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:settingsViewController];
+
+ [self presentModalViewController:navigationController animated:YES];
+
+ [settingsViewController release];
+ [navigationController release];
+}
+
+- (void)reloadTheme
+{
+ [self configureTheme];
+}
+
#pragma mark - IdeaDetailDelegate
-- (void)ideaDetailViewController:(IdeaDetailViewController *)ideaDetailViewController didSaveIdea:(NSManagedObject *)idea
+- (void)ideaDetailViewController:(IdeaDetailViewController *)ideaDetailViewController didSaveIdea:(Idea *)idea
{
[self.tableView reloadData];
[self updateTitle];
@@ -219,18 +299,18 @@ - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger
- (void)insertNewObject {
- NSManagedObject *newManagedObject = [NSEntityDescription
+ Idea *newIdea = [NSEntityDescription
insertNewObjectForEntityForName:@"Idea"
inManagedObjectContext:self.managedObjectContext];
- [newManagedObject setValue:[NSDate date] forKey:@"timeStamp"];
+ [newIdea setValue:[NSDate date] forKey:@"timeStamp"];
if (selectedIdea) {
- [newManagedObject setValue:selectedIdea forKey:@"parent"];
+ [newIdea setValue:selectedIdea forKey:@"parent"];
}
- [self showDetailView:newManagedObject newIdea:YES];
+ [self showDetailView:newIdea newIdea:YES];
}
- (void)deleteCurrentObject
@@ -315,8 +395,8 @@ - (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
- NSManagedObject *managedObject = [self.fetchedResultsController objectAtIndexPath:indexPath];
- NSString *cellText = [managedObject valueForKey:@"name"];
+ Idea *idea = [self.fetchedResultsController objectAtIndexPath:indexPath];
+ NSString *cellText = [idea valueForKey:@"name"];
UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:17.0];
CGSize constraintSize = CGSizeMake(280.0f, MAXFLOAT);
@@ -333,8 +413,8 @@ - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath
RootViewController *rootViewController = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil];
rootViewController.managedObjectContext = self.managedObjectContext;
- NSManagedObject *managedObject = [self.fetchedResultsController objectAtIndexPath:indexPath];
- rootViewController.selectedIdea = managedObject;
+ Idea *idea = [self.fetchedResultsController objectAtIndexPath:indexPath];
+ rootViewController.selectedIdea = idea;
[self.navigationController pushViewController:rootViewController animated:YES];
[rootViewController release];
@@ -499,6 +579,7 @@ - (void)dealloc {
[fetchedResultsController_ release];
[managedObjectContext_ release];
[selectedIdea release];
+ [mailComposerViewController release];
[super dealloc];
}
View
18 Classes/SettingsViewController.h
@@ -0,0 +1,18 @@
+//
+// SettingsViewController.h
+// Ideas
+//
+// Created by Oscar Del Ben on 1/5/11.
+// Copyright 2011 Dibi Store di Del Ben Oscar. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+@class RootViewController;
+
+@interface SettingsViewController : UITableViewController {
+ RootViewController *rootViewController;
+}
+
+@property (nonatomic, retain) RootViewController *rootViewController;
+
+@end
View
230 Classes/SettingsViewController.m
@@ -0,0 +1,230 @@
+//
+// SettingsViewController.m
+// Ideas
+//
+// Created by Oscar Del Ben on 1/5/11.
+// Copyright 2011 Dibi Store di Del Ben Oscar. All rights reserved.
+//
+
+#import "SettingsViewController.h"
+#import "RootViewController.h"
+#import "TextFieldCell.h"
+#import "ApplicationHelper.h"
+
+@interface SettingsViewController(PrivateMethods)
+
+- (UITableViewCell *)themeCellForTableView:(UITableView *)tableView atIndexPath:(NSIndexPath *)indexPath;
+- (UITableViewCell *)emailCellForTableView:(UITableView *)tableView atIndexPath:(NSIndexPath *)indexPath;
+
+@end
+
+
+@implementation SettingsViewController
+
+@synthesize rootViewController;
+
+#pragma mark -
+#pragma mark View lifecycle
+
+
+- (void)viewDidLoad {
+ [super viewDidLoad];
+
+ NSDictionary *theme = [ApplicationHelper theme];
+
+ // Configure the navigation bar
+ self.navigationItem.title = @"Settings";
+
+ UIBarButtonItem *saveButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(dismiss)];
+ self.navigationItem.rightBarButtonItem = saveButtonItem;
+ [saveButtonItem release];
+
+ int r = [[theme objectForKey:@"red"] intValue];
+ int g = [[theme objectForKey:@"green"] intValue];
+ int b = [[theme objectForKey:@"blue"] intValue];
+
+ self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:1];
+}
+
+- (void)dismiss
+{
+ [self dismissModalViewControllerAnimated:YES];
+}
+
+/*
+- (void)viewWillAppear:(BOOL)animated {
+ [super viewWillAppear:animated];
+}
+*/
+/*
+- (void)viewDidAppear:(BOOL)animated {
+ [super viewDidAppear:animated];
+}
+*/
+/*
+- (void)viewWillDisappear:(BOOL)animated {
+ [super viewWillDisappear:animated];
+}
+*/
+/*
+- (void)viewDidDisappear:(BOOL)animated {
+ [super viewDidDisappear:animated];
+}
+*/
+/*
+// Override to allow orientations other than the default portrait orientation.
+- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
+ // Return YES for supported orientations.
+ return (interfaceOrientation == UIInterfaceOrientationPortrait);
+}
+*/
+
+
+- (UITableViewCell *)themeCellForTableView:(UITableView *)tableView atIndexPath:(NSIndexPath *)indexPath
+{
+ static NSString *CellIdentifier = @"ThemeCell";
+
+ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
+ if (cell == nil) {
+ cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
+ }
+
+ // Configure the cell...
+ NSString *themeID = [NSString stringWithFormat:@"theme%d", indexPath.row + 1];
+
+ NSDictionary *cellTheme = [[ApplicationHelper themes] objectForKey:themeID];
+
+ NSString *name = [cellTheme objectForKey:@"name"];
+ cell.textLabel.text = name;
+
+ // Display an indicator if it's the one in use
+ NSString *currentThemeName = [[ApplicationHelper theme] objectForKey:@"name"];
+
+ if ([currentThemeName isEqualToString:name]) {
+ cell.accessoryType = UITableViewCellAccessoryCheckmark;
+ }
+
+ // Set the background color
+
+ cell.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"bg-white.png"]];
+
+ return cell;
+}
+
+
+- (UITableViewCell *)emailCellForTableView:(UITableView *)tableView atIndexPath:(NSIndexPath *)indexPath
+{
+ static NSString *CellIdentifier = @"EmailCell";
+
+ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
+ if (cell == nil) {
+ cell = [[[TextFieldCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
+ }
+
+ // Configure the cell...
+ cell.textLabel.text = @"Email";
+
+ return cell;
+}
+
+
+#pragma mark -
+#pragma mark Table view data source
+
+- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
+ // Return the number of sections.
+ return 2;
+}
+
+
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
+{
+ switch (section) {
+ case 0:
+ return [[ApplicationHelper themes] count];
+ break;
+ case 1:
+ return 1;
+ break;
+ }
+ return 0;
+}
+
+
+// Customize the appearance of table view cells.
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
+{
+ switch (indexPath.section) {
+ case 0:
+ return [self themeCellForTableView:tableView atIndexPath:(indexPath)];
+ break;
+ case 1:
+ return [self emailCellForTableView:tableView atIndexPath:(indexPath)];
+ break;
+ }
+
+ return nil;
+}
+
+- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
+{
+ switch (section) {
+ case 0:
+ return @"Theme";
+ break;
+ case 1:
+ return @"Default Email";
+ break;
+ }
+
+ return nil;
+}
+
+#pragma mark -
+#pragma mark Table view delegate
+
+- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
+{
+ switch (indexPath.section) {
+ case 0:
+ NSString *themeID = [NSString stringWithFormat:@"theme%d", indexPath.row+1];
+
+ [ApplicationHelper saveTheme:themeID];
+
+ [rootViewController reloadTheme];
+
+ [self dismiss];
+ break;
+ case 1:
+ [tableView cellForRowAtIndexPath:indexPath]
+ break;
+:
+ break;
+ }
+}
+
+
+#pragma mark -
+#pragma mark Memory management
+
+- (void)didReceiveMemoryWarning {
+ // Releases the view if it doesn't have a superview.
+ [super didReceiveMemoryWarning];
+
+ // Relinquish ownership any cached data, images, etc. that aren't in use.
+}
+
+- (void)viewDidUnload {
+ // Relinquish ownership of anything that can be recreated in viewDidLoad or on demand.
+ // For example: self.myOutlet = nil;
+}
+
+
+- (void)dealloc {
+ [rootViewController release];
+ [super dealloc];
+}
+
+
+@end
+
View
421 Classes/SettingsViewController.xib
@@ -0,0 +1,421 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
+ <data>
+ <int key="IBDocument.SystemTarget">1056</int>
+ <string key="IBDocument.SystemVersion">10H574</string>
+ <string key="IBDocument.InterfaceBuilderVersion">823</string>
+ <string key="IBDocument.AppKitVersion">1038.35</string>
+ <string key="IBDocument.HIToolboxVersion">461.00</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string key="NS.object.0">132</string>
+ </object>
+ <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <integer value="4"/>
+ </object>
+ <object class="NSArray" key="IBDocument.PluginDependencies">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.Metadata">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys" id="0">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBProxyObject" id="372490531">
+ <string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ </object>
+ <object class="IBProxyObject" id="975951072">
+ <string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ </object>
+ <object class="IBUITableView" id="873029372">
+ <reference key="NSNextResponder"/>
+ <int key="NSvFlags">274</int>
+ <string key="NSFrameSize">{320, 460}</string>
+ <reference key="NSSuperview"/>
+ <object class="NSColor" key="IBUIBackgroundColor">
+ <int key="NSColorSpace">10</int>
+ <object class="NSImage" key="NSImage">
+ <int key="NSImageFlags">549453824</int>
+ <string key="NSSize">{84, 1}</string>
+ <object class="NSMutableArray" key="NSReps">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <integer value="0"/>
+ <object class="NSBitmapImageRep">
+ <object class="NSData" key="NSTIFFRepresentation">
+ <bytes key="NS.bytes">TU0AKgAAAVjFzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
+y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
+xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
+xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
+xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
+xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P8ADQEAAAMAAAABAFQAAAEB
+AAMAAAABAAEAAAECAAMAAAAEAAAB+gEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES
+AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABAAEAAAEXAAQAAAABAAABUAEcAAMAAAABAAEAAAFS
+AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSColor" key="NSColor">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MCAwAA</bytes>
+ </object>
+ </object>
+ <string key="IBUIColorCocoaTouchKeyPath">groupTableViewBackgroundColor</string>
+ </object>
+ <bool key="IBUIOpaque">NO</bool>
+ <bool key="IBUIClipsSubviews">YES</bool>
+ <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
+ <object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ <bool key="IBUIBouncesZoom">NO</bool>
+ <int key="IBUIStyle">1</int>
+ <int key="IBUISeparatorStyle">2</int>
+ <int key="IBUISectionIndexMinimumDisplayRowCount">0</int>
+ <bool key="IBUIShowsSelectionImmediatelyOnTouchBegin">YES</bool>
+ <float key="IBUIRowHeight">44</float>
+ <float key="IBUISectionHeaderHeight">10</float>
+ <float key="IBUISectionFooterHeight">10</float>
+ </object>
+ </object>
+ <object class="IBObjectContainer" key="IBDocument.Objects">
+ <object class="NSMutableArray" key="connectionRecords">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">view</string>
+ <reference key="source" ref="372490531"/>
+ <reference key="destination" ref="873029372"/>
+ </object>
+ <int key="connectionID">5</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">dataSource</string>
+ <reference key="source" ref="873029372"/>
+ <reference key="destination" ref="372490531"/>
+ </object>
+ <int key="connectionID">6</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="873029372"/>
+ <reference key="destination" ref="372490531"/>
+ </object>
+ <int key="connectionID">7</int>
+ </object>
+ </object>
+ <object class="IBMutableOrderedSet" key="objectRecords">
+ <object class="NSArray" key="orderedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBObjectRecord">
+ <int key="objectID">0</int>
+ <reference key="object" ref="0"/>
+ <reference key="children" ref="1000"/>
+ <nil key="parent"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-1</int>
+ <reference key="object" ref="372490531"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">File's Owner</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-2</int>
+ <reference key="object" ref="975951072"/>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4</int>
+ <reference key="object" ref="873029372"/>
+ <reference key="parent" ref="0"/>
+ </object>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="flattenedProperties">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>-1.CustomClassName</string>
+ <string>-2.CustomClassName</string>
+ <string>4.IBEditorWindowLastContentRect</string>
+ <string>4.IBPluginDependency</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>SettingsViewController</string>
+ <string>UIResponder</string>
+ <string>{{329, 276}, {320, 480}}</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="unlocalizedProperties">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference key="dict.sortedKeys" ref="0"/>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <nil key="activeLocalization"/>
+ <object class="NSMutableDictionary" key="localizations">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference key="dict.sortedKeys" ref="0"/>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <nil key="sourceID"/>
+ <int key="maxID">7</int>
+ </object>
+ <object class="IBClassDescriber" key="IBDocument.Classes">
+ <object class="NSMutableArray" key="referencedPartialClassDescriptions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBPartialClassDescription">
+ <string key="className">SettingsViewController</string>
+ <string key="superclassName">UITableViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">Classes/SettingsViewController.h</string>
+ </object>
+ </object>
+ </object>
+ <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSError.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">QuartzCore.framework/Headers/CAAnimation.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">QuartzCore.framework/Headers/CALayer.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="623562345">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIResponder</string>
+ <string key="superclassName">NSObject</string>
+ <reference key="sourceIdentifier" ref="623562345"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIScrollView</string>
+ <string key="superclassName">UIView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIScrollView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UISearchBar</string>
+ <string key="superclassName">UIView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UISearchDisplayController</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UISearchDisplayController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UITableView</string>
+ <string key="superclassName">UIScrollView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UITableView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UITableViewController</string>
+ <string key="superclassName">UIViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UITableViewController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIPrintFormatter.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIView</string>
+ <string key="superclassName">UIResponder</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UINavigationController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIPopoverController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UISplitViewController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UITabBarController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIViewController</string>
+ <string key="superclassName">UIResponder</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
+ </object>
+ </object>
+ </object>
+ </object>
+ <int key="IBDocument.localizationMode">0</int>
+ <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
+ <integer value="1056" key="NS.object.0"/>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
+ <integer value="3000" key="NS.object.0"/>
+ </object>
+ <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
+ <nil key="IBDocument.LastKnownRelativeProjectPath"/>
+ <int key="IBDocument.defaultPropertyAccessControl">3</int>
+ <string key="IBCocoaTouchPluginVersion">132</string>
+ </data>
+</archive>
View
18 Classes/TextFieldCell.h
@@ -0,0 +1,18 @@
+//
+// TextFieldCell.h
+// Ideas
+//
+// Created by Oscar Del Ben on 1/6/11.
+// Copyright 2011 Dibi Store di Del Ben Oscar. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+
+@interface TextFieldCell : UITableViewCell <UITextFieldDelegate> {
+ IBOutlet UITextField *textField;
+}
+
+@property (nonatomic, retain) UITextField *textField;
+
+@end
View
40 Classes/TextFieldCell.m
@@ -0,0 +1,40 @@
+//
+// TextFieldCell.m
+// Ideas
+//
+// Created by Oscar Del Ben on 1/6/11.
+// Copyright 2011 Dibi Store di Del Ben Oscar. All rights reserved.
+//
+
+#import "TextFieldCell.h"
+
+
+@implementation TextFieldCell
+
+@synthesize textField;
+
+- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
+
+ self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
+ if (self) {
+ textField.delegate = self;
+ }
+ return self;
+}
+
+
+- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
+
+ [super setSelected:selected animated:animated];
+
+ // Configure the view for the selected state.
+}
+
+
+- (void)dealloc {
+ [textField dealloc];
+ [super dealloc];
+}
+
+
+@end
View
BIN Ideas.xcdatamodeld/Ideas.xcdatamodel/elements
Binary file not shown.
View
BIN Ideas.xcdatamodeld/Ideas.xcdatamodel/layout
Binary file not shown.
View
124 Ideas.xcodeproj/oscardelben.mode1v3
@@ -267,22 +267,25 @@
<array>
<string>29B97314FDCFA39411CA2CEA</string>
<string>080E96DDFE201D6D7F000001</string>
+ <string>BF8526F612D5BA4C00306911</string>
+ <string>BFB50BF212D4D37C00D8EBE3</string>
+ <string>BFB50BF112D4CF1500D8EBE3</string>
+ <string>BFB50BF012D4CEFE00D8EBE3</string>
<string>29B97317FDCFA39411CA2CEA</string>
- <string>BF996ED312D337F600916A41</string>
- <string>28D3F201112F7DC200FD0661</string>
<string>1C37FBAC04509CD000000102</string>
<string>1C37FABC05509CD000000102</string>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>9</integer>
+ <integer>14</integer>
+ <integer>8</integer>
<integer>1</integer>
<integer>0</integer>
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {186, 664}}</string>
+ <string>{{0, 35}, {186, 664}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@@ -319,38 +322,45 @@
<key>PBXProjectModuleGUID</key>
<string>1CE0B20306471E060097A5F4</string>
<key>PBXProjectModuleLabel</key>
- <string>ApplicationHelper.m</string>
+ <string>SettingsViewController.m</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>1CE0B20406471E060097A5F4</string>
<key>PBXProjectModuleLabel</key>
- <string>ApplicationHelper.m</string>
+ <string>SettingsViewController.m</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>BF996F2312D3465900916A41</string>
+ <string>BF85273612D5CB8D00306911</string>
<key>history</key>
<array>
- <string>BFA0DB0412C90DD400C07211</string>
<string>BF4F7CCC12D0A5D2007CB6E2</string>
<string>BF4F7CFF12D0C8AA007CB6E2</string>
<string>BF4F7D1412D0C9BE007CB6E2</string>
- <string>BF4F7E5C12D1F93E007CB6E2</string>
- <string>BF4F7E5D12D1F93E007CB6E2</string>
- <string>BF996E5B12D28BAA00916A41</string>
- <string>BF996EEB12D33A3F00916A41</string>
- <string>BF996EEC12D33A3F00916A41</string>
- <string>BF996EED12D33A3F00916A41</string>
- <string>BF996EF212D344E900916A41</string>
- <string>BF996EF312D344E900916A41</string>
- <string>BF996EF412D344E900916A41</string>
- <string>BF996EF512D344E900916A41</string>
- <string>BF996F1B12D3461900916A41</string>
- <string>BF996F1C12D3461900916A41</string>
- <string>BF996F1D12D3461900916A41</string>
+ <string>BF996FBA12D477DA00916A41</string>
+ <string>BF996FBB12D477DA00916A41</string>
+ <string>BF996FC012D477DA00916A41</string>
+ <string>BF996FC412D477DA00916A41</string>
+ <string>BFB50BFE12D4D42600D8EBE3</string>
+ <string>BFB50C1F12D4DA2C00D8EBE3</string>
+ <string>BFB50CA712D5375200D8EBE3</string>
+ <string>BFB50CA812D5375200D8EBE3</string>
+ <string>BFB50CA912D5375200D8EBE3</string>
+ <string>BFB50CAB12D5375200D8EBE3</string>
+ <string>BFB50CB512D5385000D8EBE3</string>
+ <string>BFB50CB612D5385000D8EBE3</string>
+ <string>BF8526CA12D5B4AC00306911</string>
+ <string>BF85272A12D5BF1400306911</string>
+ <string>BF85272B12D5BF1400306911</string>
+ <string>BF85272C12D5BF1400306911</string>
+ <string>BF85272D12D5BF1400306911</string>
+ <string>BF85272E12D5BF1400306911</string>
+ <string>BF85272F12D5BF1400306911</string>
+ <string>BF85273012D5BF1400306911</string>
+ <string>BF85273112D5BF1400306911</string>
</array>
</dict>
<key>SplitCount</key>
@@ -362,14 +372,14 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {1068, 438}}</string>
+ <string>{{0, 0}, {1068, 468}}</string>
<key>RubberWindowFrame</key>
<string>0 55 1276 723 0 0 1280 778 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>438pt</string>
+ <string>468pt</string>
</dict>
<dict>
<key>ContentConfiguration</key>
@@ -382,14 +392,14 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 443}, {1068, 239}}</string>
+ <string>{{0, 473}, {1068, 209}}</string>
<key>RubberWindowFrame</key>
<string>0 55 1276 723 0 0 1280 778 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
<key>Proportion</key>
- <string>239pt</string>
+ <string>209pt</string>
</dict>
</array>
<key>Proportion</key>
@@ -408,9 +418,9 @@
</array>
<key>TableOfContents</key>
<array>
- <string>BF996F0D12D3452A00916A41</string>
+ <string>BF8526B812D5B31B00306911</string>
<string>1CE0B1FE06471DED0097A5F4</string>
- <string>BF996F0E12D3452A00916A41</string>
+ <string>BF8526B912D5B31B00306911</string>
<string>1CE0B20306471E060097A5F4</string>
<string>1CE0B20506471E060097A5F4</string>
</array>
@@ -548,6 +558,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
+ <string>BF8526C312D5B31B00306911</string>
+ <string>BF8526C412D5B31B00306911</string>
+ <string>1C78EAAD065D492600B07095</string>
+ <string>1CD10A99069EF8BA00B06720</string>
<string>BF55DF8B12C88FDB00689625</string>
<string>/Users/oscardelben/projects/cocoa/apps/Ideas/Ideas.xcodeproj</string>
</array>
@@ -573,7 +587,7 @@
<key>PBXProjectModuleGUID</key>
<string>1CD0528F0623707200166675</string>
<key>PBXProjectModuleLabel</key>
- <string></string>
+ <string>SettingsViewController.m</string>
<key>StatusBarVisibility</key>
<true/>
</dict>
@@ -590,6 +604,8 @@
<string>218pt</string>
</dict>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
@@ -629,7 +645,7 @@
<key>TableOfContents</key>
<array>
<string>BF55DF8B12C88FDB00689625</string>
- <string>BF996F0F12D3452A00916A41</string>
+ <string>BF8526BA12D5B31B00306911</string>
<string>1CD0528F0623707200166675</string>
<string>XCMainBuildResultsModuleGUID</string>
</array>
@@ -751,13 +767,13 @@
<key>TableOfContents</key>
<array>
<string>1CD10A99069EF8BA00B06720</string>
- <string>BF996E6312D28BAA00916A41</string>
+ <string>BF8526BB12D5B31B00306911</string>
<string>1C162984064C10D400B95A72</string>
- <string>BF996E6412D28BAA00916A41</string>
- <string>BF996E6512D28BAA00916A41</string>
- <string>BF996E6612D28BAA00916A41</string>
- <string>BF996E6712D28BAA00916A41</string>
- <string>BF996E6812D28BAA00916A41</string>
+ <string>BF8526BC12D5B31B00306911</string>
+ <string>BF8526BD12D5B31B00306911</string>
+ <string>BF8526BE12D5B31B00306911</string>
+ <string>BF8526BF12D5B31B00306911</string>
+ <string>BF8526C012D5B31B00306911</string>
</array>
<key>ToolbarConfiguration</key>
<string>xcode.toolbar.config.debugV3</string>
@@ -894,18 +910,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {650, 209}}</string>
+ <string>{{0, 0}, {839, 571}}</string>
<key>RubberWindowFrame</key>
- <string>21 505 650 250 0 0 1280 778 </string>
+ <string>21 143 839 612 0 0 1280 778 </string>
</dict>
<key>Module</key>
<string>PBXDebugCLIModule</string>
<key>Proportion</key>
- <string>209pt</string>
+ <string>571pt</string>
</dict>
</array>
<key>Proportion</key>
- <string>209pt</string>
+ <string>571pt</string>
</dict>
</array>
<key>Name</key>
@@ -919,13 +935,13 @@
<key>TableOfContents</key>
<array>
<string>1C78EAAD065D492600B07095</string>
- <string>BF996E6912D28BAA00916A41</string>
+ <string>BF8526C112D5B31B00306911</string>
<string>1C78EAAC065D492600B07095</string>
</array>
<key>ToolbarConfiguration</key>
<string>xcode.toolbar.config.consoleV3</string>
<key>WindowString</key>
- <string>21 505 650 250 0 0 1280 778 </string>
+ <string>21 143 839 612 0 0 1280 778 </string>
<key>WindowToolGUID</key>
<string>1C78EAAD065D492600B07095</string>
<key>WindowToolIsVisible</key>
@@ -1066,18 +1082,18 @@
<string>743 379 452 308 0 0 1280 1002 </string>
</dict>
<dict>
+ <key>FirstTimeWindowDisplayed</key>
+ <false/>
<key>Identifier</key>
<string>windowTool.breakpoints</string>
<key>IsVertical</key>
- <integer>0</integer>
+ <false/>
<key>Layout</key>
<array>
<dict>
<key>Dock</key>
<array>
<dict>
- <key>BecomeActive</key>
- <integer>1</integer>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -1119,7 +1135,7 @@
<key>PBXTopSmartGroupGIDs</key>
<array/>
<key>XCIncludePerspectivesSwitch</key>
- <integer>0</integer>
+ <false/>
</dict>
<key>GeometryConfiguration</key>
<dict>
@@ -1131,14 +1147,16 @@
<real>168</real>
</array>
<key>RubberWindowFrame</key>
- <string>315 424 744 409 0 0 1440 878 </string>
+ <string>21 346 744 409 0 0 1280 778 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
<key>Proportion</key>
<string>185pt</string>
</dict>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
@@ -1151,7 +1169,7 @@
<key>Frame</key>
<string>{{190, 0}, {554, 368}}</string>
<key>RubberWindowFrame</key>
- <string>315 424 744 409 0 0 1440 878 </string>
+ <string>21 346 744 409 0 0 1280 778 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>