Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

display wifi access points on the map

  • Loading branch information...
commit 7dd3329bc27307dbc37abc0bad6ea5d734662cb3 1 parent 880ba9a
Nicolas Seriot authored
2  Classes/SPImageAnnotation.m
@@ -16,7 +16,7 @@ @implementation SPImageAnnotation
16 16 @synthesize path;
17 17 @synthesize coordinate;
18 18
19   -+ (SPImageAnnotation *) annotationWithCoordinate:(CLLocationCoordinate2D)coord date:(NSDate *)date path:(NSString *)path {
  19 ++ (SPImageAnnotation *)annotationWithCoordinate:(CLLocationCoordinate2D)coord date:(NSDate *)date path:(NSString *)path {
20 20 SPImageAnnotation *annotation = [[SPImageAnnotation alloc] init];
21 21 annotation.coordinate = coord;
22 22 annotation.path = path;
2  Classes/SPMapVC.h → Classes/SPImageMapVC.h
@@ -12,7 +12,7 @@
12 12
13 13 @class SPImageVC;
14 14
15   -@interface SPMapVC : UIViewController <MKMapViewDelegate> {
  15 +@interface SPImageMapVC : UIViewController <MKMapViewDelegate> {
16 16 NSArray *annotations;
17 17
18 18 IBOutlet MKMapView *mapView;
6 Classes/SPMapVC.m → Classes/SPImageMapVC.m
@@ -7,10 +7,10 @@
7 7 // Licensed under GPL 2.0 http://www.gnu.org/licenses/gpl-2.0.txt
8 8 //
9 9
10   -#import "SPMapVC.h"
  10 +#import "SPImageMapVC.h"
11 11 #import "SPImageVC.h"
12 12
13   -@implementation SPMapVC
  13 +@implementation SPImageMapVC
14 14
15 15 @synthesize annotations;
16 16
@@ -92,11 +92,9 @@ - (void)viewDidUnload {
92 92 self.annotations = nil;
93 93 }
94 94
95   -
96 95 - (void)dealloc {
97 96 [annotations release];
98 97 [super dealloc];
99 98 }
100 99
101   -
102 100 @end
4 Classes/SPSourceLocationTVC.m
@@ -9,7 +9,7 @@
9 9
10 10 #import "SPSourceLocationTVC.h"
11 11 #import <CoreLocation/CoreLocation.h>
12   -#import "SPMapVC.h"
  12 +#import "SPImageMapVC.h"
13 13 #import "SPImageAnnotation.h"
14 14
15 15 @implementation SPSourceLocationTVC
@@ -24,7 +24,7 @@ @implementation SPSourceLocationTVC
24 24
25 25 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
26 26 if(indexPath.section == 0 && indexPath.row == 0 && cachedLocationFromMaps) {
27   - SPMapVC *mapVC = [[SPMapVC alloc] initWithNibName:@"SPMapVC" bundle:[NSBundle mainBundle]];
  27 + SPImageMapVC *mapVC = [[SPImageMapVC alloc] initWithNibName:@"SPImageMapVC" bundle:[NSBundle mainBundle]];
28 28 [self.navigationController pushViewController:mapVC animated:YES];
29 29 SPImageAnnotation *annotation = [SPImageAnnotation annotationWithCoordinate:cachedLocationFromMaps.coordinate date:nil path:nil];
30 30 [mapVC addAnnotation:annotation];
6 Classes/SPSourcePhotosTVC.h
@@ -9,20 +9,20 @@
9 9
10 10 #import "SPSourceTVC.h"
11 11
12   -@class SPMapVC;
  12 +@class SPImageMapVC;
13 13 @class SPImageVC;
14 14
15 15 @interface SPSourcePhotosTVC : SPSourceTVC {
16 16 NSMutableArray *coordinates;
17 17 NSMutableArray *annotations;
18 18
19   - IBOutlet SPMapVC *mapVC;
  19 + IBOutlet SPImageMapVC *mapVC;
20 20 IBOutlet SPImageVC *imageVC;
21 21 }
22 22
23 23 @property (nonatomic, retain) NSMutableArray *annotations;
24 24 @property (nonatomic, retain) NSMutableArray *coordinates;
25   -@property (nonatomic, retain) SPMapVC *mapVC;
  25 +@property (nonatomic, retain) SPImageMapVC *mapVC;
26 26 @property (nonatomic, retain) SPImageVC *imageVC;
27 27
28 28 @end
2  Classes/SPSourcePhotosTVC.m
@@ -10,7 +10,7 @@
10 10 #import <CoreLocation/CoreLocation.h>
11 11 #import "SPSourcePhotosTVC.h"
12 12 #import "UIImage+GPS.h"
13   -#import "SPMapVC.h"
  13 +#import "SPImageMapVC.h"
14 14 #import "SPImageVC.h"
15 15 #import "SPImageAnnotation.h"
16 16
10 Classes/SPSourceWifiTVC.h
@@ -11,8 +11,16 @@
11 11 #import "SPSourceTVC.h"
12 12 #import "OUILookupTool.h"
13 13
14   -@interface SPSourceWifiTVC : SPSourceTVC <OUILookupToolDelegate> {
  14 +@class SPWifiMapVC;
15 15
  16 +@interface SPSourceWifiTVC : SPSourceTVC <OUILookupToolDelegate> {
  17 + NSMutableArray *annotations;
  18 + NSMutableArray *accessPoints;
  19 + IBOutlet SPWifiMapVC *mapVC;
16 20 }
17 21
  22 +@property (nonatomic, retain) NSMutableArray *annotations;
  23 +@property (nonatomic, retain) NSMutableArray *accessPoints;
  24 +@property (nonatomic, retain) SPWifiMapVC *mapVC;
  25 +
18 26 @end
56 Classes/SPSourceWifiTVC.m
@@ -9,16 +9,30 @@
9 9
10 10 #import "SPSourceWifiTVC.h"
11 11 #import "OUILookupTool.h"
  12 +#import "SPWifiMapVC.h"
  13 +#import "SPWifiAnnotation.h"
  14 +#import "SPCell.h"
12 15
13 16 @implementation SPSourceWifiTVC
14 17
  18 +@synthesize annotations;
  19 +@synthesize accessPoints;
  20 +@synthesize mapVC;
  21 +
15 22 - (void)loadData {
16 23
17 24 //[OUILookupTool lookupBSSID:@"0:30:bd:97:7:72" delegate:self];
18 25
19 26 if(contentsDictionaries) return;
20 27
  28 + UIBarButtonItem *mapButton = [[UIBarButtonItem alloc] initWithTitle:@"Map" style:UIBarButtonItemStylePlain target:self action:@selector(mapButtonClicked:)];
  29 + super.navigationItem.rightBarButtonItem = mapButton;
  30 +
21 31 self.contentsDictionaries = [NSMutableArray array];
  32 +
  33 + self.annotations = [NSMutableArray array];
  34 +
  35 + self.accessPoints = [NSMutableArray array];
22 36
23 37 NSString *path = @"/Library/Preferences/SystemConfiguration/com.apple.wifi.plist";
24 38 NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:path];
@@ -28,23 +42,59 @@ - (void)loadData {
28 42 if(!a) return;
29 43
30 44 for(NSDictionary *d in a) {
31   - [OUILookupTool locateWifiAccessPoint:d delegate:self];
  45 + NSMutableDictionary *md = [NSMutableDictionary dictionaryWithDictionary:d];
  46 +
  47 + [OUILookupTool locateWifiAccessPoint:md delegate:self];
32 48
33 49 NSString *name = [d valueForKey:@"SSID_STR"];
34 50
35   - NSData *joined = [d valueForKey:@"lastJoined"];
36   - NSData *autoJoined = [d valueForKey:@"lastAutoJoined"];
  51 + NSDate *joined = [md valueForKey:@"lastJoined"];
  52 + NSDate *autoJoined = [md valueForKey:@"lastAutoJoined"];
37 53
38 54 NSString *date = [NSString stringWithFormat:@"%@", autoJoined ? autoJoined : joined];
39 55
40 56 [contentsDictionaries addObject:[NSDictionary dictionaryWithObject:[NSArray arrayWithObject:name] forKey:date]];
  57 + [accessPoints addObject:md];
41 58 }
42 59 }
43 60
  61 +- (void)mapButtonClicked:(id)sender {
  62 + mapVC.annotations = annotations;
  63 + [self.navigationController pushViewController:mapVC animated:YES];
  64 +}
  65 +
  66 +- (void)dealloc {
  67 + [accessPoints release];
  68 + [annotations release];
  69 + [mapVC release];
  70 + [super dealloc];
  71 +}
  72 +
44 73 #pragma mark OUILookupTool
45 74
46 75 - (void)OUILookupTool:(OUILookupTool *)ouiLookupTool didLocateAccessPoint:(NSDictionary *)ap {
47 76 //NSLog(@"-- %@", ap);
  77 +
  78 + [accessPoints addObject:ap];
  79 +
  80 + SPWifiAnnotation *annotation = [SPWifiAnnotation annotationWithAccessPoint:ap];
  81 +
  82 + if(annotation) [annotations addObject:annotation];
  83 +}
  84 +
  85 +#pragma mark UITableViewDelegate
  86 +
  87 +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
  88 +
  89 + NSDictionary *ap = [accessPoints objectAtIndex:indexPath.section];
  90 +
  91 + SPWifiAnnotation *annotation = [SPWifiAnnotation annotationWithAccessPoint:ap];
  92 +
  93 + if(annotation == nil) return;
  94 +
  95 + mapVC.annotations = [NSArray arrayWithObject:annotation];
  96 +
  97 + [self.navigationController pushViewController:mapVC animated:YES];
48 98 }
49 99
50 100 @end
28 Classes/SPWifiAnnotation.h
... ... @@ -0,0 +1,28 @@
  1 +//
  2 +// SPWifiAnnotation.h
  3 +// SpyPhone
  4 +//
  5 +// Created by Nicolas Seriot on 10/31/10.
  6 +// Copyright 2010 IICT. All rights reserved.
  7 +//
  8 +
  9 +#import <MapKit/MapKit.h>
  10 +
  11 +@protocol MKAnnotation;
  12 +
  13 +@interface SPWifiAnnotation : NSObject <MKAnnotation> {
  14 + NSDictionary *accessPoint;
  15 + CLLocationCoordinate2D coordinate;
  16 +}
  17 +
  18 +@property (nonatomic, retain) NSDictionary *accessPoint;
  19 +@property (nonatomic, readwrite) CLLocationCoordinate2D coordinate;
  20 +
  21 ++ (SPWifiAnnotation *)annotationWithAccessPoint:(NSDictionary *)d;
  22 +
  23 +- (NSString *)annotationViewIdentifier;
  24 +
  25 +- (NSString *)title;
  26 +- (NSString *)subtitle;
  27 +
  28 +@end
51 Classes/SPWifiAnnotation.m
... ... @@ -0,0 +1,51 @@
  1 +//
  2 +// SPWifiAnnotation.m
  3 +// SpyPhone
  4 +//
  5 +// Created by Nicolas Seriot on 10/31/10.
  6 +// Copyright 2010 IICT. All rights reserved.
  7 +//
  8 +
  9 +#import "SPWifiAnnotation.h"
  10 +
  11 +
  12 +@implementation SPWifiAnnotation
  13 +
  14 +@synthesize coordinate;
  15 +@synthesize accessPoint;
  16 +
  17 +- (NSString *)title {
  18 + return [accessPoint valueForKey:@"SSID_STR"];
  19 +}
  20 +
  21 +- (NSString *)subtitle {
  22 + NSDate *joined = [accessPoint valueForKey:@"lastJoined"];
  23 + NSDate *autoJoined = [accessPoint valueForKey:@"lastAutoJoined"];
  24 +
  25 + NSDate *date = autoJoined ? autoJoined : joined;
  26 +
  27 + return [date description];
  28 +}
  29 +
  30 ++ (SPWifiAnnotation *)annotationWithAccessPoint:(NSDictionary *)ap {
  31 + NSString *latitude = [ap valueForKeyPath:@"location.latitude"];
  32 + NSString *longitude = [ap valueForKeyPath:@"location.longitude"];
  33 +
  34 + if(latitude == nil || longitude == nil) return nil;
  35 +
  36 + SPWifiAnnotation *annotation = [[SPWifiAnnotation alloc] init];
  37 + annotation.accessPoint = ap;
  38 + annotation.coordinate = CLLocationCoordinate2DMake([latitude doubleValue], [longitude doubleValue]);;
  39 + return [annotation autorelease];
  40 +}
  41 +
  42 +- (void)dealloc {
  43 + [accessPoint release];
  44 + [super dealloc];
  45 +}
  46 +
  47 +- (NSString *)annotationViewIdentifier {
  48 + return [accessPoint valueForKey:@"BSSID"];
  49 +}
  50 +
  51 +@end
24 Classes/SPWifiMapVC.h
... ... @@ -0,0 +1,24 @@
  1 +//
  2 +// SPWifiMapVC.h
  3 +// SpyPhone
  4 +//
  5 +// Created by Nicolas Seriot on 10/31/10.
  6 +// Copyright 2010 IICT. All rights reserved.
  7 +//
  8 +
  9 +#import <UIKit/UIKit.h>
  10 +#import <MapKit/MapKit.h>
  11 +
  12 +@interface SPWifiMapVC : UIViewController {
  13 + NSArray *annotations;
  14 +
  15 + IBOutlet MKMapView *mapView;
  16 +}
  17 +
  18 +@property (nonatomic, retain) NSArray *annotations;
  19 +
  20 +//- (void)addAnnotation:(id <MKAnnotation>)annotation;
  21 +
  22 +- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation;
  23 +
  24 +@end
78 Classes/SPWifiMapVC.m
... ... @@ -0,0 +1,78 @@
  1 +//
  2 +// SPWifiMapVC.m
  3 +// SpyPhone
  4 +//
  5 +// Created by Nicolas Seriot on 10/31/10.
  6 +// Copyright 2010 IICT. All rights reserved.
  7 +//
  8 +
  9 +#import "SPWifiMapVC.h"
  10 +
  11 +
  12 +@implementation SPWifiMapVC
  13 +
  14 +@synthesize annotations;
  15 +
  16 +//- (void)setAnnotations:(NSArray *)someAnnotations {
  17 +// [mapView removeAnnotations:mapView.annotations];
  18 +//
  19 +// [annotations autorelease];
  20 +// annotations = [someAnnotations retain];
  21 +//
  22 +// [mapView addAnnotations:annotations];
  23 +//}
  24 +
  25 +- (void)loadView {
  26 + [super loadView];
  27 +
  28 + self.title = @"Wifi Map";
  29 +}
  30 +
  31 +- (void)viewWillAppear:(BOOL)animated {
  32 + [super viewWillAppear:animated];
  33 +
  34 + [mapView removeAnnotations:annotations];
  35 +}
  36 +
  37 +- (void)viewDidAppear:(BOOL)animated {
  38 + [super viewDidAppear:animated];
  39 +
  40 + [mapView addAnnotations:annotations];
  41 +
  42 + id <MKAnnotation>annotation = [annotations lastObject];
  43 + MKCoordinateSpan span = MKCoordinateSpanMake(0.03, 0.03);
  44 + MKCoordinateRegion region = [mapView regionThatFits:MKCoordinateRegionMake(annotation.coordinate, span)];
  45 +
  46 + [mapView setRegion:region animated:NO];
  47 +
  48 + if([annotations count] == 1) [mapView selectAnnotation:[annotations lastObject] animated:YES];
  49 +}
  50 +
  51 +- (MKAnnotationView *)mapView:(MKMapView *)aMapView viewForAnnotation:(id <MKAnnotation>)annotation {
  52 +
  53 + if([annotation isKindOfClass:[MKUserLocation class]]) return nil;
  54 +
  55 + NSString *annID = @"SPWifiAnnotation";
  56 + MKAnnotationView *av = [aMapView dequeueReusableAnnotationViewWithIdentifier:annID];
  57 +
  58 + if(av == nil) {
  59 + av = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:annID] autorelease];
  60 + av.canShowCallout = YES;
  61 + }
  62 + return av;
  63 +}
  64 +
  65 +/*
  66 +// Override to allow orientations other than the default portrait orientation.
  67 +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
  68 + // Return YES for supported orientations
  69 + return (interfaceOrientation == UIInterfaceOrientationPortrait);
  70 +}
  71 +*/
  72 +
  73 +- (void)dealloc {
  74 + [annotations release];
  75 + [super dealloc];
  76 +}
  77 +
  78 +@end
404 Classes/SPWifiMapVC.xib
... ... @@ -0,0 +1,404 @@
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
  3 + <data>
  4 + <int key="IBDocument.SystemTarget">1024</int>
  5 + <string key="IBDocument.SystemVersion">10F569</string>
  6 + <string key="IBDocument.InterfaceBuilderVersion">804</string>
  7 + <string key="IBDocument.AppKitVersion">1038.29</string>
  8 + <string key="IBDocument.HIToolboxVersion">461.00</string>
  9 + <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
  10 + <string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
  11 + <string key="NS.object.0">123</string>
  12 + </object>
  13 + <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
  14 + <bool key="EncodedWithXMLCoder">YES</bool>
  15 + <integer value="1"/>
  16 + </object>
  17 + <object class="NSArray" key="IBDocument.PluginDependencies">
  18 + <bool key="EncodedWithXMLCoder">YES</bool>
  19 + <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
  20 + </object>
  21 + <object class="NSMutableDictionary" key="IBDocument.Metadata">
  22 + <bool key="EncodedWithXMLCoder">YES</bool>
  23 + <object class="NSArray" key="dict.sortedKeys" id="0">
  24 + <bool key="EncodedWithXMLCoder">YES</bool>
  25 + </object>
  26 + <object class="NSMutableArray" key="dict.values">
  27 + <bool key="EncodedWithXMLCoder">YES</bool>
  28 + </object>
  29 + </object>
  30 + <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
  31 + <bool key="EncodedWithXMLCoder">YES</bool>
  32 + <object class="IBProxyObject" id="372490531">
  33 + <string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
  34 + <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
  35 + </object>
  36 + <object class="IBProxyObject" id="975951072">
  37 + <string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
  38 + <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
  39 + </object>
  40 + <object class="IBUIView" id="191373211">
  41 + <reference key="NSNextResponder"/>
  42 + <int key="NSvFlags">274</int>
  43 + <object class="NSMutableArray" key="NSSubviews">
  44 + <bool key="EncodedWithXMLCoder">YES</bool>
  45 + <object class="IBMKMapView" id="157797824">
  46 + <reference key="NSNextResponder" ref="191373211"/>
  47 + <int key="NSvFlags">274</int>
  48 + <string key="NSFrameSize">{320, 460}</string>
  49 + <reference key="NSSuperview" ref="191373211"/>
  50 + <bool key="IBUIClipsSubviews">YES</bool>
  51 + <bool key="IBUIMultipleTouchEnabled">YES</bool>
  52 + <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
  53 + </object>
  54 + </object>
  55 + <string key="NSFrameSize">{320, 460}</string>
  56 + <reference key="NSSuperview"/>
  57 + <object class="NSColor" key="IBUIBackgroundColor">
  58 + <int key="NSColorSpace">3</int>
  59 + <bytes key="NSWhite">MQA</bytes>
  60 + </object>
  61 + <object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
  62 + <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
  63 + </object>
  64 + </object>
  65 + <object class="IBObjectContainer" key="IBDocument.Objects">
  66 + <object class="NSMutableArray" key="connectionRecords">
  67 + <bool key="EncodedWithXMLCoder">YES</bool>
  68 + <object class="IBConnectionRecord">
  69 + <object class="IBCocoaTouchOutletConnection" key="connection">
  70 + <string key="label">view</string>
  71 + <reference key="source" ref="372490531"/>
  72 + <reference key="destination" ref="191373211"/>
  73 + </object>
  74 + <int key="connectionID">3</int>
  75 + </object>
  76 + <object class="IBConnectionRecord">
  77 + <object class="IBCocoaTouchOutletConnection" key="connection">
  78 + <string key="label">mapView</string>
  79 + <reference key="source" ref="372490531"/>
  80 + <reference key="destination" ref="157797824"/>
  81 + </object>
  82 + <int key="connectionID">5</int>
  83 + </object>
  84 + <object class="IBConnectionRecord">
  85 + <object class="IBCocoaTouchOutletConnection" key="connection">
  86 + <string key="label">delegate</string>
  87 + <reference key="source" ref="157797824"/>
  88 + <reference key="destination" ref="372490531"/>
  89 + </object>
  90 + <int key="connectionID">6</int>
  91 + </object>
  92 + </object>
  93 + <object class="IBMutableOrderedSet" key="objectRecords">
  94 + <object class="NSArray" key="orderedObjects">
  95 + <bool key="EncodedWithXMLCoder">YES</bool>
  96 + <object class="IBObjectRecord">
  97 + <int key="objectID">0</int>
  98 + <reference key="object" ref="0"/>
  99 + <reference key="children" ref="1000"/>
  100 + <nil key="parent"/>
  101 + </object>
  102 + <object class="IBObjectRecord">
  103 + <int key="objectID">-1</int>
  104 + <reference key="object" ref="372490531"/>
  105 + <reference key="parent" ref="0"/>
  106 + <string key="objectName">File's Owner</string>
  107 + </object>
  108 + <object class="IBObjectRecord">
  109 + <int key="objectID">-2</int>
  110 + <reference key="object" ref="975951072"/>
  111 + <reference key="parent" ref="0"/>
  112 + </object>
  113 + <object class="IBObjectRecord">
  114 + <int key="objectID">1</int>
  115 + <reference key="object" ref="191373211"/>
  116 + <object class="NSMutableArray" key="children">
  117 + <bool key="EncodedWithXMLCoder">YES</bool>
  118 + <reference ref="157797824"/>
  119 + </object>
  120 + <reference key="parent" ref="0"/>
  121 + </object>
  122 + <object class="IBObjectRecord">
  123 + <int key="objectID">4</int>
  124 + <reference key="object" ref="157797824"/>
  125 + <reference key="parent" ref="191373211"/>
  126 + </object>
  127 + </object>
  128 + </object>
  129 + <object class="NSMutableDictionary" key="flattenedProperties">
  130 + <bool key="EncodedWithXMLCoder">YES</bool>
  131 + <object class="NSArray" key="dict.sortedKeys">
  132 + <bool key="EncodedWithXMLCoder">YES</bool>
  133 + <string>-1.CustomClassName</string>
  134 + <string>-2.CustomClassName</string>
  135 + <string>1.IBEditorWindowLastContentRect</string>
  136 + <string>1.IBPluginDependency</string>
  137 + <string>4.IBPluginDependency</string>
  138 + <string>4.IBViewBoundsToFrameTransform</string>
  139 + </object>
  140 + <object class="NSMutableArray" key="dict.values">
  141 + <bool key="EncodedWithXMLCoder">YES</bool>
  142 + <string>SPWifiMapVC</string>
  143 + <string>UIResponder</string>
  144 + <string>{{556, 376}, {320, 480}}</string>
  145 + <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
  146 + <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
  147 + <object class="NSAffineTransform">
  148 + <bytes key="NSTransformStruct">P4AAAL+AAADBMAAAxA2AAA</bytes>
  149 + </object>
  150 + </object>
  151 + </object>
  152 + <object class="NSMutableDictionary" key="unlocalizedProperties">
  153 + <bool key="EncodedWithXMLCoder">YES</bool>
  154 + <reference key="dict.sortedKeys" ref="0"/>
  155 + <object class="NSMutableArray" key="dict.values">
  156 + <bool key="EncodedWithXMLCoder">YES</bool>
  157 + </object>
  158 + </object>
  159 + <nil key="activeLocalization"/>
  160 + <object class="NSMutableDictionary" key="localizations">
  161 + <bool key="EncodedWithXMLCoder">YES</bool>
  162 + <reference key="dict.sortedKeys" ref="0"/>
  163 + <object class="NSMutableArray" key="dict.values">
  164 + <bool key="EncodedWithXMLCoder">YES</bool>
  165 + </object>
  166 + </object>
  167 + <nil key="sourceID"/>
  168 + <int key="maxID">6</int>
  169 + </object>
  170 + <object class="IBClassDescriber" key="IBDocument.Classes">
  171 + <object class="NSMutableArray" key="referencedPartialClassDescriptions">
  172 + <bool key="EncodedWithXMLCoder">YES</bool>
  173 + <object class="IBPartialClassDescription">
  174 + <string key="className">NSObject</string>
  175 + <object class="IBClassDescriptionSource" key="sourceIdentifier">
  176 + <string key="majorKey">IBProjectSource</string>
  177 + <string key="minorKey">JSON/NSObject+SBJSON.h</string>
  178 + </object>
  179 + </object>
  180 + <object class="IBPartialClassDescription">
  181 + <string key="className">NSObject</string>
  182 + <object class="IBClassDescriptionSource" key="sourceIdentifier">
  183 + <string key="majorKey">IBProjectSource</string>
  184 + <string key="minorKey">JSON/SBProxyForJson.h</string>
  185 + </object>
  186 + </object>
  187 + <object class="IBPartialClassDescription">
  188 + <string key="className">SPWifiMapVC</string>
  189 + <string key="superclassName">UIViewController</string>
  190 + <object class="NSMutableDictionary" key="outlets">
  191 + <string key="NS.key.0">mapView</string>
  192 + <string key="NS.object.0">MKMapView</string>
  193 + </object>
  194 + <object class="NSMutableDictionary" key="toOneOutletInfosByName">
  195 + <string key="NS.key.0">mapView</string>
  196 + <object class="IBToOneOutletInfo" key="NS.object.0">
  197 + <string key="name">mapView</string>
  198 + <string key="candidateClassName">MKMapView</string>
  199 + </object>
  200 + </object>
  201 + <object class="IBClassDescriptionSource" key="sourceIdentifier">
  202 + <string key="majorKey">IBProjectSource</string>
  203 + <string key="minorKey">Classes/SPWifiMapVC.h</string>
  204 + </object>
  205 + </object>
  206 + </object>
  207 + <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
  208 + <bool key="EncodedWithXMLCoder">YES</bool>
  209 + <object class="IBPartialClassDescription">
  210 + <string key="className">MKMapView</string>
  211 + <string key="superclassName">UIView</string>
  212 + <object class="IBClassDescriptionSource" key="sourceIdentifier">
  213 + <string key="majorKey">IBFrameworkSource</string>
  214 + <string key="minorKey">MapKit.framework/Headers/MKMapView.h</string>
  215 + </object>
  216 + </object>
  217 + <object class="IBPartialClassDescription">
  218 + <string key="className">NSObject</string>
  219 + <object class="IBClassDescriptionSource" key="sourceIdentifier">
  220 + <string key="majorKey">IBFrameworkSource</string>
  221 + <string key="minorKey">Foundation.framework/Headers/NSError.h</string>
  222 + </object>
  223 + </object>
  224 + <object class="IBPartialClassDescription">
  225 + <string key="className">NSObject</string>
  226 + <object class="IBClassDescriptionSource" key="sourceIdentifier">
  227 + <string key="majorKey">IBFrameworkSource</string>
  228 + <string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
  229 + </object>
  230 + </object>
  231 + <object class="IBPartialClassDescription">
  232 + <string key="className">NSObject</string>
  233 + <object class="IBClassDescriptionSource" key="sourceIdentifier">
  234 + <string key="majorKey">IBFrameworkSource</string>
  235 + <string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
  236 + </object>
  237 + </object>
  238 + <object class="IBPartialClassDescription">
  239 + <string key="className">NSObject</string>
  240 + <object class="IBClassDescriptionSource" key="sourceIdentifier">
  241 + <string key="majorKey">IBFrameworkSource</string>
  242 + <string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
  243 + </object>
  244 + </object>
  245 + <object class="IBPartialClassDescription">
  246 + <string key="className">NSObject</string>
  247 + <object class="IBClassDescriptionSource" key="sourceIdentifier">
  248 + <string key="majorKey">IBFrameworkSource</string>
  249 + <string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
  250 + </object>
  251 + </object>
  252 + <object class="IBPartialClassDescription">
  253 + <string key="className">NSObject</string>
  254 + <object class="IBClassDescriptionSource" key="sourceIdentifier">
  255 + <string key="majorKey">IBFrameworkSource</string>
  256 + <string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
  257 + </object>
  258 + </object>
  259 + <object class="IBPartialClassDescription">
  260 + <string key="className">NSObject</string>
  261 + <object class="IBClassDescriptionSource" key="sourceIdentifier">
  262 + <string key="majorKey">IBFrameworkSource</string>
  263 + <string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
  264 + </object>
  265 + </object>
  266 + <object class="IBPartialClassDescription">
  267 + <string key="className">NSObject</string>
  268 + <object class="IBClassDescriptionSource" key="sourceIdentifier">
  269 + <string key="majorKey">IBFrameworkSource</string>
  270 + <string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
  271 + </object>
  272 + </object>
  273 + <object class="IBPartialClassDescription">
  274 + <string key="className">NSObject</string>
  275 + <object class="IBClassDescriptionSource" key="sourceIdentifier">
  276 + <string key="majorKey">IBFrameworkSource</string>
  277 + <string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
  278 + </object>
  279 + </object>
  280 + <object class="IBPartialClassDescription">
  281 + <string key="className">NSObject</string>
  282 + <object class="IBClassDescriptionSource" key="sourceIdentifier">
  283 + <string key="majorKey">IBFrameworkSource</string>
  284 + <string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
  285 + </object>
  286 + </object>
  287 + <object class="IBPartialClassDescription">
  288 + <string key="className">NSObject</string>
  289 + <object class="IBClassDescriptionSource" key="sourceIdentifier">
  290 + <string key="majorKey">IBFrameworkSource</string>
  291 + <string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
  292 + </object>
  293 + </object>
  294 + <object class="IBPartialClassDescription">
  295 + <string key="className">NSObject</string>
  296 + <object class="IBClassDescriptionSource" key="sourceIdentifier">
  297 + <string key="majorKey">IBFrameworkSource</string>
  298 + <string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
  299 + </object>
  300 + </object>
  301 + <object class="IBPartialClassDescription">
  302 + <string key="className">NSObject</string>
  303 + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="381350413">
  304 + <string key="majorKey">IBFrameworkSource</string>
  305 + <string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
  306 + </object>
  307 + </object>
  308 + <object class="IBPartialClassDescription">
  309 + <string key="className">UIResponder</string>
  310 + <string key="superclassName">NSObject</string>
  311 + <reference key="sourceIdentifier" ref="381350413"/>
  312 + </object>
  313 + <object class="IBPartialClassDescription">
  314 + <string key="className">UISearchBar</string>
  315 + <string key="superclassName">UIView</string>
  316 + <object class="IBClassDescriptionSource" key="sourceIdentifier">
  317 + <string key="majorKey">IBFrameworkSource</string>
  318 + <string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
  319 + </object>
  320 + </object>
  321 + <object class="IBPartialClassDescription">
  322 + <string key="className">UISearchDisplayController</string>
  323 + <string key="superclassName">NSObject</string>
  324 + <object class="IBClassDescriptionSource" key="sourceIdentifier">
  325 + <string key="majorKey">IBFrameworkSource</string>
  326 + <string key="minorKey">UIKit.framework/Headers/UISearchDisplayController.h</string>
  327 + </object>
  328 + </object>
  329 + <object class="IBPartialClassDescription">
  330 + <string key="className">UIView</string>
  331 + <object class="IBClassDescriptionSource" key="sourceIdentifier">
  332 + <string key="majorKey">IBFrameworkSource</string>
  333 + <string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
  334 + </object>
  335 + </object>
  336 + <object class="IBPartialClassDescription">
  337 + <string key="className">UIView</string>
  338 + <string key="superclassName">UIResponder</string>
  339 + <object class="IBClassDescriptionSource" key="sourceIdentifier">
  340 + <string key="majorKey">IBFrameworkSource</string>
  341 + <string key="minorKey">UIKit.framework/Headers/UIView.h</string>
  342 + </object>
  343 + </object>
  344 + <object class="IBPartialClassDescription">
  345 + <string key="className">UIViewController</string>
  346 + <object class="IBClassDescriptionSource" key="sourceIdentifier">
  347 + <string key="majorKey">IBFrameworkSource</string>
  348 + <string key="minorKey">MediaPlayer.framework/Headers/MPMoviePlayerViewController.h</string>
  349 + </object>
  350 + </object>
  351 + <object class="IBPartialClassDescription">
  352 + <string key="className">UIViewController</string>
  353 + <object class="IBClassDescriptionSource" key="sourceIdentifier">
  354 + <string key="majorKey">IBFrameworkSource</string>
  355 + <string key="minorKey">UIKit.framework/Headers/UINavigationController.h</string>
  356 + </object>
  357 + </object>
  358 + <object class="IBPartialClassDescription">
  359 + <string key="className">UIViewController</string>
  360 + <object class="IBClassDescriptionSource" key="sourceIdentifier">
  361 + <string key="majorKey">IBFrameworkSource</string>
  362 + <string key="minorKey">UIKit.framework/Headers/UIPopoverController.h</string>
  363 + </object>
  364 + </object>
  365 + <object class="IBPartialClassDescription">
  366 + <string key="className">UIViewController</string>
  367 + <object class="IBClassDescriptionSource" key="sourceIdentifier">
  368 + <string key="majorKey">IBFrameworkSource</string>
  369 + <string key="minorKey">UIKit.framework/Headers/UISplitViewController.h</string>
  370 + </object>
  371 + </object>
  372 + <object class="IBPartialClassDescription">
  373 + <string key="className">UIViewController</string>
  374 + <object class="IBClassDescriptionSource" key="sourceIdentifier">
  375 + <string key="majorKey">IBFrameworkSource</string>
  376 + <string key="minorKey">UIKit.framework/Headers/UITabBarController.h</string>
  377 + </object>
  378 + </object>
  379 + <object class="IBPartialClassDescription">
  380 + <string key="className">UIViewController</string>
  381 + <string key="superclassName">UIResponder</string>
  382 + <object class="IBClassDescriptionSource" key="sourceIdentifier">
  383 + <string key="majorKey">IBFrameworkSource</string>
  384 + <string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
  385 + </object>
  386 + </object>
  387 + </object>
  388 + </object>
  389 + <int key="IBDocument.localizationMode">0</int>
  390 + <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
  391 + <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
  392 + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
  393 + <integer value="1024" key="NS.object.0"/>
  394 + </object>
  395 + <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
  396 + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
  397 + <integer value="3000" key="NS.object.0"/>
  398 + </object>
  399 + <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
  400 + <string key="IBDocument.LastKnownRelativeProjectPath">../SpyPhone.xcodeproj</string>
  401 + <int key="IBDocument.defaultPropertyAccessControl">3</int>
  402 + <string key="IBCocoaTouchPluginVersion">123</string>
  403 + </data>
  404 +</archive>
BIN  Default.png
621 MainWindow.xib
... ... @@ -1,18 +1,18 @@
1 1 <?xml version="1.0" encoding="UTF-8"?>
2 2 <archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
3 3 <data>
4   - <int key="IBDocument.SystemTarget">784</int>
5   - <string key="IBDocument.SystemVersion">10C540</string>
6   - <string key="IBDocument.InterfaceBuilderVersion">740</string>
7   - <string key="IBDocument.AppKitVersion">1038.25</string>
8   - <string key="IBDocument.HIToolboxVersion">458.00</string>
  4 + <int key="IBDocument.SystemTarget">1024</int>
  5 + <string key="IBDocument.SystemVersion">10F569</string>
  6 + <string key="IBDocument.InterfaceBuilderVersion">804</string>
  7 + <string key="IBDocument.AppKitVersion">1038.29</string>
  8 + <string key="IBDocument.HIToolboxVersion">461.00</string>
9 9 <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
10 10 <string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
11   - <string key="NS.object.0">62</string>
  11 + <string key="NS.object.0">123</string>
12 12 </object>
13 13 <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
14 14 <bool key="EncodedWithXMLCoder">YES</bool>
15   - <integer value="145"/>
  15 + <integer value="119"/>
16 16 </object>
17 17 <object class="NSArray" key="IBDocument.PluginDependencies">
18 18 <bool key="EncodedWithXMLCoder">YES</bool>
@@ -31,11 +31,15 @@
31 31 <bool key="EncodedWithXMLCoder">YES</bool>
32 32 <object class="IBProxyObject" id="841351856">
33 33 <string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
  34 + <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
34 35 </object>
35 36 <object class="IBProxyObject" id="532797962">
36 37 <string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
  38 + <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
  39 + </object>
  40 + <object class="IBUICustomObject" id="664661524">
  41 + <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
37 42 </object>
38   - <object class="IBUICustomObject" id="664661524"/>
39 43 <object class="IBUIWindow" id="380026005">
40 44 <nil key="NSNextResponder"/>
41 45 <int key="NSvFlags">1316</int>
@@ -48,141 +52,147 @@
48 52 <bool key="IBUIOpaque">NO</bool>
49 53 <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
50 54 <object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
  55 + <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
51 56 <bool key="IBUIVisibleAtLaunch">YES</bool>
52 57 </object>
53 58 <object class="IBUITabBarController" id="1034742383">
54 59 <object class="IBUISimulatedTabBarMetrics" key="IBUISimulatedBottomBarMetrics"/>
55 60 <object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
56   - <object class="IBUIViewController" key="IBUISelectedViewController" id="810586621">
57   - <string key="IBUITitle">Report</string>
58   - <object class="IBUITabBarItem" key="IBUITabBarItem" id="217035927">
59   - <string key="IBUITitle">Email Report</string>
60   - <object class="NSCustomResource" key="IBUIImage">
61   - <string key="NSClassName">NSImage</string>
62   - <string key="NSResourceName">report.png</string>
63   - </object>
64   - <reference key="IBUITabBar"/>
65   - </object>
66   - <reference key="IBUIToolbarItems" ref="0"/>
67   - <reference key="IBUIParentViewController" ref="1034742383"/>
68   - <string key="IBUINibName">SPEmailReportVC</string>
69   - </object>
70   - <object class="NSMutableArray" key="IBUIViewControllers">
71   - <bool key="EncodedWithXMLCoder">YES</bool>
72   - <object class="IBUIViewController" id="1024858337">
73   - <string key="IBUITitle">SpyPhone</string>
74   - <object class="IBUIView" key="IBUIView" id="434903890">
75   - <nil key="NSNextResponder"/>
76   - <int key="NSvFlags">274</int>
77   - <object class="NSMutableArray" key="NSSubviews">
78   - <bool key="EncodedWithXMLCoder">YES</bool>
79   - <object class="IBUILabel" id="375618992">
80   - <reference key="NSNextResponder" ref="434903890"/>
81   - <int key="NSvFlags">306</int>
82   - <string key="NSFrame">{{80, 156}, {159, 43}}</string>
83   - <reference key="NSSuperview" ref="434903890"/>
84   - <object class="NSColor" key="IBUIBackgroundColor">
85   - <int key="NSColorSpace">3</int>
86   - <bytes key="NSWhite">MSAwAA</bytes>
87   - <object class="NSColorSpace" key="NSCustomColorSpace" id="911360926">
88   - <int key="NSID">2</int>
89   - </object>
90   - </object>
91   - <bool key="IBUIOpaque">NO</bool>
92   - <bool key="IBUIClipsSubviews">YES</bool>
93   - <bool key="IBUIUserInteractionEnabled">NO</bool>
94   - <string key="IBUIText">SpyPhone</string>
95   - <object class="NSFont" key="IBUIFont">
96   - <string key="NSName">Helvetica</string>
97   - <double key="NSSize">36</double>
98   - <int key="NSfFlags">16</int>
  61 + <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
  62 + <int key="interfaceOrientation">1</int>
  63 + </object>
  64 + <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
  65 + <bool key="IBUIHorizontal">NO</bool>
  66 + <object class="IBUIViewController" key="IBUISelectedViewController" id="1024858337">
  67 + <string key="IBUITitle">SpyPhone</string>
  68 + <object class="IBUIView" key="IBUIView" id="434903890">
  69 + <reference key="NSNextResponder"/>
  70 + <int key="NSvFlags">274</int>
  71 + <object class="NSMutableArray" key="NSSubviews">
  72 + <bool key="EncodedWithXMLCoder">YES</bool>
  73 + <object class="IBUILabel" id="375618992">
  74 + <reference key="NSNextResponder" ref="434903890"/>
  75 + <int key="NSvFlags">306</int>
  76 + <string key="NSFrame">{{80, 156}, {159, 43}}</string>
  77 + <reference key="NSSuperview" ref="434903890"/>
  78 + <object class="NSColor" key="IBUIBackgroundColor">
  79 + <int key="NSColorSpace">3</int>
  80 + <bytes key="NSWhite">MSAwAA</bytes>
  81 + <object class="NSColorSpace" key="NSCustomColorSpace" id="911360926">
  82 + <int key="NSID">2</int>
99 83 </object>
100   - <reference key="IBUITextColor" ref="131293388"/>
101   - <nil key="IBUIHighlightedColor"/>
102   - <int key="IBUIBaselineAdjustment">1</int>
103   - <float key="IBUIMinimumFontSize">10</float>
104   - <int key="IBUITextAlignment">1</int>
105 84 </object>
106   - <object class="IBUITextView" id="876077251">
107   - <reference key="NSNextResponder" ref="434903890"/>
108   - <int key="NSvFlags">306</int>
109   - <string key="NSFrame">{{20, 238}, {280, 153}}</string>
110   - <reference key="NSSuperview" ref="434903890"/>
111   - <object class="NSColor" key="IBUIBackgroundColor">
112   - <int key="NSColorSpace">1</int>
113   - <bytes key="NSRGB">MSAxIDEgMAA</bytes>
114   - </object>
115   - <bool key="IBUIOpaque">NO</bool>
116   - <bool key="IBUIClipsSubviews">YES</bool>
117   - <bool key="IBUIMultipleTouchEnabled">YES</bool>
118   - <object class="IBUIAccessibilityConfiguration" key="IBUIAccessibilityConfiguration">
119   - <integer value="256" key="IBUIAccessibilityTraits"/>
120   - </object>
121   - <bool key="IBUIBounces">NO</bool>
122   - <bool key="IBUIScrollEnabled">NO</bool>
123   - <bool key="IBUIShowsHorizontalScrollIndicator">NO</bool>
124   - <bool key="IBUIShowsVerticalScrollIndicator">NO</bool>
125   - <bool key="IBUIDelaysContentTouches">NO</bool>
126   - <bool key="IBUICanCancelContentTouches">NO</bool>
127   - <float key="IBUIMinimumZoomScale">0.0</float>
128   - <float key="IBUIMaximumZoomScale">0.0</float>
129   - <bool key="IBUIBouncesZoom">NO</bool>
130   - <bool key="IBUIEditable">NO</bool>
131   - <string type="base64-UTF8" key="IBUIText">VGhpcyBhcHAgc2hvd3MgdGhlIGtpbmQgb2YgZGF0YQphIHJvZ3VlIGFwcGxpY2F0aW9uIGNhbiBjb2xs
  85 + <bool key="IBUIOpaque">NO</bool>
  86 + <bool key="IBUIClipsSubviews">YES</bool>
  87 + <bool key="IBUIUserInteractionEnabled">NO</bool>
  88 + <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
  89 + <string key="IBUIText">SpyPhone</string>
  90 + <object class="NSFont" key="IBUIFont">
  91 + <string key="NSName">Helvetica</string>
  92 + <double key="NSSize">36</double>
  93 + <int key="NSfFlags">16</int>
  94 + </object>
  95 + <reference key="IBUITextColor" ref="131293388"/>
  96 + <nil key="IBUIHighlightedColor"/>
  97 + <int key="IBUIBaselineAdjustment">1</int>
  98 + <float key="IBUIMinimumFontSize">10</float>
  99 + <int key="IBUITextAlignment">1</int>
  100 + </object>
  101 + <object class="IBUITextView" id="876077251">
  102 + <reference key="NSNextResponder" ref="434903890"/>
  103 + <int key="NSvFlags">306</int>
  104 + <string key="NSFrame">{{20, 238}, {280, 153}}</string>
  105 + <reference key="NSSuperview" ref="434903890"/>
  106 + <object class="NSColor" key="IBUIBackgroundColor">
  107 + <int key="NSColorSpace">1</int>
  108 + <bytes key="NSRGB">MSAxIDEgMAA</bytes>
  109 + </object>
  110 + <bool key="IBUIOpaque">NO</bool>
  111 + <bool key="IBUIClipsSubviews">YES</bool>
  112 + <bool key="IBUIMultipleTouchEnabled">YES</bool>
  113 + <object class="IBUIAccessibilityConfiguration" key="IBUIAccessibilityConfiguration">
  114 + <integer value="256" key="IBUIAccessibilityTraits"/>
  115 + </object>
  116 + <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
  117 + <bool key="IBUIBounces">NO</bool>
  118 + <bool key="IBUIScrollEnabled">NO</bool>
  119 + <bool key="IBUIShowsHorizontalScrollIndicator">NO</bool>
  120 + <bool key="IBUIShowsVerticalScrollIndicator">NO</bool>
  121 + <bool key="IBUIDelaysContentTouches">NO</bool>
  122 + <bool key="IBUICanCancelContentTouches">NO</bool>
  123 + <float key="IBUIMinimumZoomScale">0.0</float>
  124 + <float key="IBUIMaximumZoomScale">0.0</float>
  125 + <bool key="IBUIBouncesZoom">NO</bool>
  126 + <bool key="IBUIEditable">NO</bool>
  127 + <string type="base64-UTF8" key="IBUIText">VGhpcyBhcHAgc2hvd3MgdGhlIGtpbmQgb2YgZGF0YQphIHJvZ3VlIGFwcGxpY2F0aW9uIGNhbiBjb2xs
132 128 ZWN0LgoKTm8gcHJpdmF0ZSBBUElzIHdlcmUgdXNlZC4KVGhpcyBhcHAgZG9lcyBub3QgcGhvbmUgaG9t
133   -ZS4KCsKpIDIwMDkg4oCTIGh0dHA6Ly9zZXJpb3QuY2g</string>
134   - <object class="NSColor" key="IBUITextColor">
135   - <int key="NSColorSpace">3</int>
136   - <bytes key="NSWhite">MQA</bytes>
137   - <reference key="NSCustomColorSpace" ref="911360926"/>
138   - </object>
139   - <object class="NSFont" key="IBUIFont">
140   - <string key="NSName">Helvetica</string>
141   - <double key="NSSize">16</double>
142   - <int key="NSfFlags">16</int>
143   - </object>
144   - <int key="IBUITextAlignment">1</int>
145   - <object class="IBUITextInputTraits" key="IBUITextInputTraits"/>
  129 +ZS4KCmh0dHA6Ly9zZXJpb3QuY2g</string>
  130 + <object class="NSColor" key="IBUITextColor">
  131 + <int key="NSColorSpace">3</int>
  132 + <bytes key="NSWhite">MQA</bytes>
  133 + <reference key="NSCustomColorSpace" ref="911360926"/>
146 134 </object>
147   - <object class="IBUIImageView" id="51808458">
148   - <reference key="NSNextResponder" ref="434903890"/>
149   - <int key="NSvFlags">292</int>
150   - <string key="NSFrame">{{40, 20}, {240, 128}}</string>
151   - <reference key="NSSuperview" ref="434903890"/>
152   - <object class="NSColor" key="IBUIBackgroundColor" id="596749065">
153   - <int key="NSColorSpace">3</int>
154   - <bytes key="NSWhite">MCAwAA</bytes>
155   - </object>
156   - <bool key="IBUIOpaque">NO</bool>
157   - <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
158   - <int key="IBUIContentMode">4</int>
159   - <bool key="IBUIUserInteractionEnabled">NO</bool>
160   - <object class="NSCustomResource" key="IBUIImage">
161   - <string key="NSClassName">NSImage</string>
162   - <string key="NSResourceName">white_hat.png</string>
163   - </object>
  135 + <object class="NSFont" key="IBUIFont">
  136 + <string key="NSName">Helvetica</string>
  137 + <double key="NSSize">16</double>
  138 + <int key="NSfFlags">16</int>
  139 + </object>
  140 + <int key="IBUITextAlignment">1</int>
  141 + <object class="IBUITextInputTraits" key="IBUITextInputTraits">
  142 + <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
164 143 </object>
165 144 </object>
166   - <string key="NSFrameSize">{320, 411}</string>
167   - <object class="NSColor" key="IBUIBackgroundColor">
168   - <int key="NSColorSpace">3</int>
169   - <bytes key="NSWhite">MAA</bytes>
170   - </object>
171   - <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
172   - <object class="IBUIAccessibilityConfiguration" key="IBUIAccessibilityConfiguration">
173   - <integer value="258" key="IBUIAccessibilityTraits"/>
  145 + <object class="IBUIImageView" id="51808458">
  146 + <reference key="NSNextResponder" ref="434903890"/>
  147 + <int key="NSvFlags">292</int>
  148 + <string key="NSFrame">{{40, 20}, {240, 128}}</string>
  149 + <reference key="NSSuperview" ref="434903890"/>
  150 + <object class="NSColor" key="IBUIBackgroundColor" id="596749065">
  151 + <int key="NSColorSpace">3</int>
  152 + <bytes key="NSWhite">MCAwAA</bytes>
  153 + </object>
  154 + <bool key="IBUIOpaque">NO</bool>
  155 + <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
  156 + <int key="IBUIContentMode">4</int>
  157 + <bool key="IBUIUserInteractionEnabled">NO</bool>
  158 + <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
  159 + <object class="NSCustomResource" key="IBUIImage">
  160 + <string key="NSClassName">NSImage</string>
  161 + <string key="NSResourceName">white_hat.png</string>
  162 + </object>
174 163 </object>
175 164 </object>
176   - <object class="IBUITabBarItem" key="IBUITabBarItem" id="765670903">
177   - <string key="IBUITitle">About</string>
178   - <object class="NSCustomResource" key="IBUIImage">
179   - <string key="NSClassName">NSImage</string>
180   - <string key="NSResourceName">white_hat_mask.png</string>
181   - </object>
182   - <reference key="IBUITabBar"/>
  165 + <string key="NSFrameSize">{320, 411}</string>
  166 + <reference key="NSSuperview"/>
  167 + <object class="NSColor" key="IBUIBackgroundColor">
  168 + <int key="NSColorSpace">3</int>
  169 + <bytes key="NSWhite">MAA</bytes>
183 170 </object>
184   - <reference key="IBUIParentViewController" ref="1034742383"/>
  171 + <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
  172 + <object class="IBUIAccessibilityConfiguration" key="IBUIAccessibilityConfiguration">
  173 + <integer value="258" key="IBUIAccessibilityTraits"/>
  174 + </object>
  175 + <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
  176 + </object>
  177 + <object class="IBUITabBarItem" key="IBUITabBarItem" id="765670903">
  178 + <string key="IBUITitle">About</string>
  179 + <object class="NSCustomResource" key="IBUIImage">
  180 + <string key="NSClassName">NSImage</string>
  181 + <string key="NSResourceName">white_hat_mask.png</string>
  182 + </object>
  183 + <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
  184 + <reference key="IBUITabBar"/>
  185 + </object>
  186 + <reference key="IBUIParentViewController" ref="1034742383"/>
  187 + <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
  188 + <int key="interfaceOrientation">1</int>
185 189 </object>
  190 + <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
  191 + <bool key="IBUIHorizontal">NO</bool>
  192 + </object>
  193 + <object class="NSMutableArray" key="IBUIViewControllers">
  194 + <bool key="EncodedWithXMLCoder">YES</bool>
  195 + <reference ref="1024858337"/>
186 196 <object class="IBUINavigationController" id="652737156">
187 197 <string key="IBUITitle">Data Sources</string>
188 198 <object class="IBUITabBarItem" key="IBUITabBarItem" id="947032985">
@@ -191,10 +201,16 @@ ZS4KCsKpIDIwMDkg4oCTIGh0dHA6Ly9zZXJpb3QuY2g</string>
191 201 <string key="NSClassName">NSImage</string>
192 202 <string key="NSResourceName">data.png</string>
193 203 </object>
  204 + <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
194 205 <reference key="IBUITabBar"/>
195 206 </object>
196 207 <reference key="IBUIToolbarItems" ref="0"/>
197 208 <reference key="IBUIParentViewController" ref="1034742383"/>
  209 + <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
  210 + <int key="interfaceOrientation">1</int>
  211 + </object>
  212 + <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
  213 + <bool key="IBUIHorizontal">NO</bool>
198 214 <object class="IBUINavigationBar" key="IBUINavigationBar" id="325782924">
199 215 <nil key="NSNextResponder"/>
200 216 <int key="NSvFlags">256</int>
@@ -202,6 +218,7 @@ ZS4KCsKpIDIwMDkg4oCTIGh0dHA6Ly9zZXJpb3QuY2g</string>
202 218 <bool key="IBUIOpaque">NO</bool>
203 219 <bool key="IBUIClipsSubviews">YES</bool>
204 220 <bool key="IBUIMultipleTouchEnabled">YES</bool>
  221 + <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
205 222 </object>
206 223 <object class="NSMutableArray" key="IBUIViewControllers">
207 224 <bool key="EncodedWithXMLCoder">YES</bool>
@@ -210,13 +227,38 @@ ZS4KCsKpIDIwMDkg4oCTIGh0dHA6Ly9zZXJpb3QuY2g</string>
210 227 <reference key="IBUIToolbarItems" ref="0"/>
211 228 <object class="IBUINavigationItem" key="IBUINavigationItem" id="459063531">
212 229 <string key="IBUITitle">Data Sources</string>
  230 + <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
213 231 </object>
214 232 <reference key="IBUIParentViewController" ref="652737156"/>
215 233 <string key="IBUINibName">Sources</string>
  234 + <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
  235 + <int key="interfaceOrientation">1</int>
  236 + </object>
  237 + <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
  238 + <bool key="IBUIHorizontal">NO</bool>
216 239 </object>
217 240 </object>
218 241 </object>
219   - <reference ref="810586621"/>
  242 + <object class="IBUIViewController" id="810586621">
  243 + <string key="IBUITitle">Report</string>
  244 + <object class="IBUITabBarItem" key="IBUITabBarItem" id="217035927">
  245 + <string key="IBUITitle">Email Report</string>
  246 + <object class="NSCustomResource" key="IBUIImage">
  247 + <string key="NSClassName">NSImage</string>
  248 + <string key="NSResourceName">report.png</string>
  249 <