├── Icon.png ├── README.md ├── Icon@2x.png ├── Default-568h@2x.png ├── screenshots └── screenshot.png ├── UIColor+MS.h ├── MobileSignal_Prefix.pch ├── main.m ├── Classes ├── MobileSignalAppDelegate.h ├── UIApplication+MS.m ├── UIApplication+MS.h ├── MainViewController.h ├── MobileSignalAppDelegate.m └── MainViewController.m ├── MSPolylineWrapper.h ├── MSChartView.h ├── UIColor+MS.m ├── Measure.h ├── MobileSignal-Info.plist ├── MSPolylineWrapper.m ├── Measure.m ├── MSChartView.m ├── UIStatusBarServer.h ├── MainWindow.xib ├── MobileSignal.xcodeproj ├── nst.pbxuser ├── project.pbxproj └── nst.perspectivev3 └── MainView.xib /Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nst/MobileSignal/HEAD/Icon.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![Screenshot](screenshots/screenshot.png "Screenshot") 2 | -------------------------------------------------------------------------------- /Icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nst/MobileSignal/HEAD/Icon@2x.png -------------------------------------------------------------------------------- /Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nst/MobileSignal/HEAD/Default-568h@2x.png -------------------------------------------------------------------------------- /screenshots/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nst/MobileSignal/HEAD/screenshots/screenshot.png -------------------------------------------------------------------------------- /UIColor+MS.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIColor+MS.h 3 | // MobileSignal 4 | // 5 | // Created by Nicolas Seriot on 12/5/10. 6 | // Copyright 2010 seriot.ch. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface UIColor (MS) 13 | 14 | + (UIColor *)colorForNetworkType:(NSUInteger)aNetworkType; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /MobileSignal_Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'MobileSignal' target in the 'MobileSignal' project 3 | // 4 | #import 5 | 6 | #ifndef __IPHONE_3_0 7 | #warning "This project uses features only available in iPhone SDK 3.0 and later." 8 | #endif 9 | 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // MobileSignal 4 | // 5 | // Created by Nicolas Seriot on 11/9/10. 6 | // Copyright 2010 seriot.ch. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, char *argv[]) { 12 | 13 | NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 14 | int retVal = UIApplicationMain(argc, argv, nil, nil); 15 | [pool release]; 16 | return retVal; 17 | } 18 | -------------------------------------------------------------------------------- /Classes/MobileSignalAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // MobileSignalAppDelegate.h 3 | // MobileSignal 4 | // 5 | // Created by Nicolas Seriot on 11/9/10. 6 | // Copyright 2010 seriot.ch. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class MainViewController; 12 | 13 | @interface MobileSignalAppDelegate : NSObject { 14 | UIWindow *window; 15 | MainViewController *mainViewController; 16 | } 17 | 18 | @property (nonatomic, retain) IBOutlet UIWindow *window; 19 | @property (nonatomic, retain) IBOutlet MainViewController *mainViewController; 20 | 21 | @end 22 | 23 | -------------------------------------------------------------------------------- /MSPolylineWrapper.h: -------------------------------------------------------------------------------- 1 | // 2 | // MeasurePolyLine.h 3 | // MobileSignal 4 | // 5 | // Created by Nicolas Seriot on 12/5/10. 6 | // Copyright 2010 seriot.ch. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface MSPolylineWrapper : MKPolyline { 13 | MKPolyline *polyline; 14 | NSUInteger networkType; 15 | } 16 | 17 | @property NSUInteger networkType; 18 | @property (nonatomic, retain) MKPolyline *polyline; 19 | 20 | + (MSPolylineWrapper *)polylineWithCoordinates:(CLLocationCoordinate2D *)coords count:(NSUInteger)count networkType:(NSUInteger)aNetworkType; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /MSChartView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LCView.h 3 | // LightChart 4 | // 5 | // Created by Nicolas Seriot on 11/19/10. 6 | // Copyright 2010 seriot.ch. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class Measure; 12 | 13 | @protocol MSChartViewDataSource 14 | - (NSUInteger)numberOfMeasures; 15 | - (Measure *)measureAtIndex:(NSUInteger)index; 16 | - (NSDate *)minDate; 17 | - (NSDate *)maxDate; 18 | @end 19 | 20 | @interface MSChartView : UIView { 21 | IBOutlet NSObject *dataSource; 22 | } 23 | 24 | @property (nonatomic, retain) NSObject *dataSource; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /UIColor+MS.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIColor+MS.m 3 | // MobileSignal 4 | // 5 | // Created by Nicolas Seriot on 12/5/10. 6 | // Copyright 2010 seriot.ch. All rights reserved. 7 | // 8 | 9 | #import "UIColor+MS.h" 10 | 11 | 12 | @implementation UIColor (MS) 13 | 14 | + (UIColor *)colorForNetworkType:(NSUInteger)aNetworkType { 15 | if(aNetworkType == 0) { 16 | return [UIColor purpleColor]; 17 | } else if (aNetworkType == 1) { 18 | return [UIColor blueColor]; 19 | } else if (aNetworkType == 2) { 20 | return [UIColor redColor]; 21 | } else if (aNetworkType == 3) { 22 | return [UIColor grayColor]; 23 | } 24 | 25 | return nil; 26 | } 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /Measure.h: -------------------------------------------------------------------------------- 1 | // 2 | // Measure.h 3 | // MobileSignal 4 | // 5 | // Created by Nicolas Seriot on 11/16/10. 6 | // Copyright 2010 seriot.ch. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "UIApplication+MS.h" 11 | 12 | @class CLLocation; 13 | 14 | @interface Measure : NSObject { 15 | NSUInteger networkType; 16 | NSInteger signalStrength; 17 | NSString *networkName; 18 | NSDate *date; 19 | CLLocation *location; 20 | } 21 | 22 | @property NSUInteger networkType; 23 | @property NSInteger signalStrength; 24 | @property (nonatomic, retain) NSString *networkName; 25 | @property (nonatomic, retain) NSDate *date; 26 | @property (nonatomic, retain) CLLocation *location; 27 | 28 | + (Measure *)measureWithStatusBarData:(StatusBarData *)statusBarData location:(CLLocation *)aLocation; 29 | + (NSString *)stringForNetworkType:(NSUInteger)aNetworkType; 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /MobileSignal-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIconFile 12 | 13 | CFBundleIdentifier 14 | ch.seriot.${PRODUCT_NAME:rfc1034identifier} 15 | CFBundleInfoDictionaryVersion 16 | 6.0 17 | CFBundleName 18 | ${PRODUCT_NAME} 19 | CFBundlePackageType 20 | APPL 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1.0 25 | LSRequiresIPhoneOS 26 | 27 | NSMainNibFile 28 | MainWindow 29 | 30 | 31 | -------------------------------------------------------------------------------- /MSPolylineWrapper.m: -------------------------------------------------------------------------------- 1 | // 2 | // MeasurePolyLine.m 3 | // MobileSignal 4 | // 5 | // Created by Nicolas Seriot on 12/5/10. 6 | // Copyright 2010 seriot.ch. All rights reserved. 7 | // 8 | 9 | #import "MSPolyLineWrapper.h" 10 | 11 | 12 | @implementation MSPolylineWrapper 13 | 14 | @synthesize networkType; 15 | @synthesize polyline; 16 | 17 | + (MSPolylineWrapper *)polylineWithCoordinates:(CLLocationCoordinate2D *)coords count:(NSUInteger)count networkType:(NSUInteger)aNetworkType { 18 | MSPolylineWrapper *pw = [[MSPolylineWrapper alloc] init]; 19 | 20 | pw.polyline = [MKPolyline polylineWithCoordinates:coords count:count]; 21 | pw.networkType = aNetworkType; 22 | 23 | return [pw autorelease]; 24 | } 25 | 26 | - (void)dealloc { 27 | [polyline release]; 28 | [super dealloc]; 29 | } 30 | 31 | #pragma mark MKOverlay 32 | 33 | - (MKMapRect)boundingMapRect { 34 | return polyline.boundingMapRect; 35 | } 36 | 37 | - (CLLocationCoordinate2D) coordinate { 38 | return polyline.coordinate; 39 | } 40 | 41 | - (BOOL)intersectsMapRect:(MKMapRect)mapRect { 42 | return [polyline intersectsMapRect:mapRect]; 43 | } 44 | 45 | @end 46 | -------------------------------------------------------------------------------- /Classes/UIApplication+MS.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIApplication+MS.m 3 | // MobileSignal 4 | // 5 | // Created by Nicolas Seriot on 7/9/12. 6 | // Copyright (c) 2012 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import "UIApplication+MS.h" 10 | 11 | @class UIStatusBarForegroundView; 12 | @class UIStatusBarDataNetworkItemView; 13 | 14 | @implementation UIApplication (MS) 15 | 16 | + (NSNumber *)dataNetworkTypeFromStatusBar { 17 | 18 | UIApplication *app = [UIApplication sharedApplication]; 19 | 20 | UIStatusBar *statusBar = [app valueForKey:@"statusBar"]; 21 | 22 | UIStatusBarForegroundView *foregroundView = [statusBar valueForKey:@"foregroundView"]; 23 | 24 | NSArray *subviews = [foregroundView subviews]; 25 | 26 | UIStatusBarDataNetworkItemView *dataNetworkItemView = nil; 27 | 28 | for (id subview in subviews) { 29 | if([subview isKindOfClass:[NSClassFromString(@"UIStatusBarDataNetworkItemView") class]]) { 30 | dataNetworkItemView = subview; 31 | break; 32 | } 33 | } 34 | 35 | return [dataNetworkItemView valueForKey:@"dataNetworkType"]; 36 | } 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /Classes/UIApplication+MS.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIApplication+MS.h 3 | // MobileSignal 4 | // 5 | // Created by Nicolas Seriot on 7/9/12. 6 | // Copyright (c) 2012 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef struct { // from UIStatusBarServerThread 12 | BOOL itemIsEnabled[24]; 13 | BOOL timeString[64]; 14 | int gsmSignalStrengthRaw; 15 | int gsmSignalStrengthBars; 16 | BOOL serviceString[100]; 17 | BOOL serviceCrossfadeString[100]; 18 | BOOL serviceImages[2][100]; 19 | BOOL operatorDirectory[1024]; 20 | unsigned int serviceContentType; 21 | int wifiSignalStrengthRaw; 22 | int wifiSignalStrengthBars; 23 | unsigned int dataNetworkType; 24 | int batteryCapacity; 25 | unsigned int batteryState; 26 | BOOL batteryDetailString[150]; 27 | int bluetoothBatteryCapacity; 28 | int thermalColor; 29 | unsigned int thermalSunlightMode : 1; 30 | unsigned int slowActivity : 1; 31 | unsigned int syncActivity : 1; 32 | BOOL activityDisplayId[256]; 33 | unsigned int bluetoothConnected : 1; 34 | unsigned int displayRawGSMSignal : 1; 35 | unsigned int displayRawWifiSignal : 1; 36 | unsigned int locationIconType : 1; 37 | } StatusBarData; 38 | 39 | @interface UIApplication (MS) 40 | 41 | + (NSNumber *)dataNetworkTypeFromStatusBar; 42 | 43 | @end 44 | -------------------------------------------------------------------------------- /Classes/MainViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // MainViewController.h 3 | // MobileSignal 4 | // 5 | // Created by Nicolas Seriot on 11/9/10. 6 | // Copyright 2010 seriot.ch. All rights reserved. 7 | // 8 | 9 | #import "MSChartView.h" 10 | #import 11 | #import 12 | 13 | @class UIStatusBarServer; 14 | 15 | @interface MainViewController : UIViewController { 16 | IBOutlet UILabel *networkNameLabel; 17 | IBOutlet UILabel *signalStrengthLabel; 18 | IBOutlet UILabel *networkTypeLabel; 19 | IBOutlet UILabel *nbMeasuresLabel; 20 | IBOutlet UILabel *startDateLabel; 21 | IBOutlet UILabel *lastDateLabel; 22 | 23 | IBOutlet MKMapView *mapView; 24 | IBOutlet MSChartView *chartView; 25 | 26 | NSDate *startDate; 27 | 28 | UIStatusBarServer *statusBarServer; 29 | 30 | NSMutableArray *measures; 31 | 32 | NSTimer *timer; 33 | 34 | CLLocationManager *locationManager; 35 | } 36 | 37 | @property (nonatomic, retain) UILabel *networkNameLabel; 38 | @property (nonatomic, retain) UILabel *signalStrengthLabel; 39 | @property (nonatomic, retain) UILabel *networkTypeLabel; 40 | @property (nonatomic, retain) UILabel *nbMeasuresLabel; 41 | @property (nonatomic, retain) UILabel *startDateLabel; 42 | @property (nonatomic, retain) UILabel *lastDateLabel; 43 | 44 | @property (nonatomic, retain) NSDate *startDate; 45 | 46 | @property (nonatomic, retain) NSMutableArray *measures; 47 | 48 | @property (nonatomic, retain) NSTimer *timer; 49 | 50 | @property (nonatomic, retain) CLLocationManager *locationManager; 51 | 52 | @property (nonatomic, retain) MSChartView *chartView; 53 | @property (nonatomic, retain) MKMapView *mapView; 54 | 55 | @property (nonatomic, retain) UIStatusBarServer *statusBarServer; 56 | 57 | - (IBAction)addMeasureType1:(id)sender; 58 | - (IBAction)addMeasureType2:(id)sender; 59 | - (IBAction)clear:(id)sender; 60 | - (IBAction)updateDisplay:(id)sender; 61 | 62 | - (void)startListeningToStatusBarServer; 63 | - (void)stopListeningToStatusBarServer; 64 | 65 | @end 66 | -------------------------------------------------------------------------------- /Measure.m: -------------------------------------------------------------------------------- 1 | // 2 | // Measure.m 3 | // MobileSignal 4 | // 5 | // Created by Nicolas Seriot on 11/16/10. 6 | // Copyright 2010 seriot.ch. All rights reserved. 7 | // 8 | 9 | #import "Measure.h" 10 | #import 11 | 12 | @implementation Measure 13 | 14 | @synthesize networkType; 15 | @synthesize signalStrength; 16 | @synthesize networkName; 17 | @synthesize date; 18 | @synthesize location; 19 | 20 | + (NSString *)stringForNetworkType:(NSUInteger)aNetworkType { 21 | if(aNetworkType == 0) return @"GSM"; 22 | if(aNetworkType == 1) return @"Edge"; 23 | if(aNetworkType == 2) return @"3G"; 24 | if(aNetworkType == 5) return @"Wifi"; 25 | 26 | return nil; 27 | } 28 | 29 | - (NSString *)description { 30 | return [NSString stringWithFormat:@"%@ - %@ - %d - %d - %f %f", date, networkName, networkType, signalStrength, location.coordinate.latitude, location.coordinate.longitude]; 31 | } 32 | 33 | - (void)dealloc { 34 | [networkName release]; 35 | [date release]; 36 | [location release]; 37 | 38 | [super dealloc]; 39 | } 40 | 41 | + (Measure *)measureWithStatusBarData:(StatusBarData *)statusBarData location:(CLLocation *)aLocation { 42 | 43 | NSInteger gsmSignalStrengthRaw = statusBarData->gsmSignalStrengthRaw; 44 | 45 | //NSInteger dataNetworkType = statusBarData->dataNetworkType; 46 | 47 | // Since iOS 5, statusBarData->dataNetworkType returns always 0. 48 | // Therefore, we read in the status bar view to get this value. 49 | 50 | NSUInteger dataNetworkType = [[UIApplication dataNetworkTypeFromStatusBar] integerValue]; 51 | 52 | char* serviceString = (char *)statusBarData->serviceString; 53 | 54 | NSString *aNetworkName = [NSString stringWithCString:serviceString encoding:NSUTF8StringEncoding]; 55 | 56 | Measure *m = [[Measure alloc] init]; 57 | 58 | m.date = [NSDate date]; 59 | m.networkName = aNetworkName; 60 | m.networkType = dataNetworkType; 61 | m.signalStrength = gsmSignalStrengthRaw; 62 | m.location = aLocation; 63 | 64 | return [m autorelease]; 65 | } 66 | 67 | @end 68 | -------------------------------------------------------------------------------- /Classes/MobileSignalAppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // MobileSignalAppDelegate.m 3 | // MobileSignal 4 | // 5 | // Created by Nicolas Seriot on 11/9/10. 6 | // Copyright 2010 seriot.ch. All rights reserved. 7 | // 8 | 9 | #import "MobileSignalAppDelegate.h" 10 | #import "MainViewController.h" 11 | 12 | @implementation MobileSignalAppDelegate 13 | 14 | 15 | @synthesize window; 16 | @synthesize mainViewController; 17 | 18 | #pragma mark - 19 | #pragma mark Application lifecycle 20 | 21 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 22 | [UIApplication sharedApplication].idleTimerDisabled = YES; 23 | 24 | [window addSubview:mainViewController.view]; 25 | window.rootViewController = mainViewController; 26 | [window makeKeyAndVisible]; 27 | 28 | return YES; 29 | } 30 | 31 | - (void)applicationWillResignActive:(UIApplication *)application { 32 | /* 33 | Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 34 | Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. 35 | */ 36 | 37 | [mainViewController stopListeningToStatusBarServer]; 38 | } 39 | 40 | - (void)applicationDidEnterBackground:(UIApplication *)application { 41 | /* 42 | Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 43 | If your application supports background execution, called instead of applicationWillTerminate: when the user quits. 44 | */ 45 | } 46 | 47 | - (void)applicationWillEnterForeground:(UIApplication *)application { 48 | /* 49 | Called as part of transition from the background to the inactive state: here you can undo many of the changes made on entering the background. 50 | */ 51 | } 52 | 53 | - (void)applicationDidBecomeActive:(UIApplication *)application { 54 | /* 55 | Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 56 | */ 57 | 58 | [mainViewController startListeningToStatusBarServer]; 59 | } 60 | 61 | - (void)applicationWillTerminate:(UIApplication *)application { 62 | /* 63 | Called when the application is about to terminate. 64 | See also applicationDidEnterBackground:. 65 | */ 66 | } 67 | 68 | #pragma mark - 69 | #pragma mark Memory management 70 | 71 | - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application { 72 | /* 73 | Free up as much memory as possible by purging cached data objects that can be recreated (or reloaded from disk) later. 74 | */ 75 | } 76 | 77 | 78 | - (void)dealloc { 79 | [mainViewController release]; 80 | [window release]; 81 | [super dealloc]; 82 | } 83 | 84 | @end 85 | -------------------------------------------------------------------------------- /MSChartView.m: -------------------------------------------------------------------------------- 1 | // 2 | // LCView.m 3 | // LightChart 4 | // 5 | // Created by Nicolas Seriot on 11/19/10. 6 | // Copyright 2010 seriot.ch. All rights reserved. 7 | // 8 | 9 | #import "MSChartView.h" 10 | #import "Measure.h" 11 | #import 12 | #import "UIColor+MS.h" 13 | 14 | #define MAX_DB 120.0 15 | 16 | @implementation MSChartView 17 | 18 | @synthesize dataSource; 19 | 20 | - (CGPoint)pointForMeasure:(Measure *)m { 21 | CGFloat height = [self bounds].size.height; 22 | CGFloat width = [self bounds].size.width; 23 | 24 | NSDate *minDate = [dataSource minDate]; 25 | NSDate *maxDate = [NSDate date]; 26 | 27 | double percent = 0.0; 28 | 29 | if(minDate != maxDate) { // juste another way to say "if i > 0" 30 | NSTimeInterval minDateTimeInterval = [minDate timeIntervalSinceReferenceDate]; 31 | NSTimeInterval maxDateTimeInterval = [maxDate timeIntervalSinceReferenceDate]; 32 | 33 | NSTimeInterval range = maxDateTimeInterval - minDateTimeInterval; 34 | 35 | percent = ([m.date timeIntervalSinceReferenceDate] - minDateTimeInterval) / range; 36 | } 37 | 38 | double x = width * percent; 39 | double y = (abs(m.signalStrength) / MAX_DB) * height; 40 | CGPoint p = CGPointMake(x, y); 41 | 42 | return p; 43 | } 44 | 45 | - (void)fillAndStrikePath:(UIBezierPath *)path networkType:(NSUInteger)aNetworkType { 46 | UIColor *stokeColor = [UIColor blackColor]; 47 | UIColor *fillColor = [UIColor colorForNetworkType:aNetworkType]; 48 | 49 | [stokeColor setStroke]; 50 | [fillColor setFill]; 51 | 52 | [path fill]; 53 | [path stroke]; 54 | } 55 | 56 | - (void)drawRect:(CGRect)rect { 57 | 58 | if([dataSource numberOfMeasures] == 0) return; 59 | 60 | UIBezierPath *path = nil; 61 | 62 | // first point 63 | 64 | Measure *m = [dataSource measureAtIndex:0]; 65 | Measure *previousMeasure = nil; 66 | 67 | CGPoint p0 = [self pointForMeasure:m]; 68 | CGPoint openingPoint = p0; 69 | 70 | [path moveToPoint:p0]; 71 | 72 | CGPoint p = CGPointZero; 73 | CGPoint previousPoint = CGPointZero; 74 | 75 | for(NSUInteger i = 0; i < [dataSource numberOfMeasures]; i++) { 76 | 77 | if (i > 0) previousMeasure = m; 78 | m = [dataSource measureAtIndex:i]; 79 | 80 | if (i > 0) previousPoint = p; 81 | p = [self pointForMeasure:m]; 82 | 83 | BOOL hasSameNetwork = m.networkType == previousMeasure.networkType; 84 | BOOL isLastPoint = i == [dataSource numberOfMeasures] - 1; 85 | 86 | if(i == 0) { 87 | // open path 88 | path = [UIBezierPath bezierPath]; 89 | [path moveToPoint:p]; 90 | openingPoint = p; 91 | } 92 | 93 | if (hasSameNetwork) { 94 | // just add line 95 | [path addLineToPoint:CGPointMake(p.x, previousPoint.y)]; 96 | [path addLineToPoint:CGPointMake(p.x, p.y)]; 97 | } else { 98 | // close previous, open new one 99 | if(i > 0) { 100 | [path addLineToPoint:CGPointMake(p.x, previousPoint.y)]; 101 | } 102 | [path addLineToPoint:CGPointMake(p.x, self.bounds.size.height)]; 103 | [path addLineToPoint:CGPointMake(openingPoint.x, self.bounds.size.height)]; 104 | [path addLineToPoint:openingPoint]; 105 | 106 | [self fillAndStrikePath:path networkType:previousMeasure.networkType]; 107 | 108 | path = [UIBezierPath bezierPath]; 109 | [path moveToPoint:p]; 110 | openingPoint = p; 111 | } 112 | 113 | if (isLastPoint) { 114 | // add a temporary "guessed" measure for current date 115 | Measure *tmpMeasure = [[[Measure alloc] init] autorelease]; 116 | tmpMeasure.networkType = m.networkType; 117 | tmpMeasure.signalStrength = m.signalStrength; 118 | tmpMeasure.location = m.location; 119 | tmpMeasure.date = [NSDate date]; 120 | CGPoint tmpPoint = [self pointForMeasure:tmpMeasure]; 121 | 122 | // close 123 | [path addLineToPoint:CGPointMake(tmpPoint.x, p.y)]; 124 | [path addLineToPoint:CGPointMake(tmpPoint.x, self.bounds.size.height)]; 125 | [path addLineToPoint:CGPointMake(openingPoint.x, self.bounds.size.height)]; 126 | [path addLineToPoint:openingPoint]; 127 | 128 | [self fillAndStrikePath:path networkType:m.networkType]; 129 | } 130 | 131 | } 132 | } 133 | 134 | - (void)dealloc { 135 | [dataSource release]; 136 | [super dealloc]; 137 | } 138 | 139 | @end 140 | -------------------------------------------------------------------------------- /UIStatusBarServer.h: -------------------------------------------------------------------------------- 1 | /* Generated by RuntimeBrowser 2 | Image: /System/Library/Frameworks/UIKit.framework/UIKit 3 | */ 4 | 5 | @protocol UIStatusBarServerClient; 6 | 7 | @interface UIStatusBarServer : NSObject { 8 | struct __CFRunLoopSource { } *_source; 9 | id _statusBar; 10 | } 11 | 12 | @property(retain) id statusBar; 13 | 14 | + (unsigned int)_publisherPort; 15 | + (unsigned int)_serverPort; 16 | + (void)addStatusBarItem:(int)arg1; 17 | + (void)addStyleOverrides:(int)arg1; 18 | + (id)getDoubleHeightStatusStringForStyle:(int)arg1; 19 | + (double)getGlowAnimationEndTimeForStyle:(int)arg1; 20 | + (BOOL)getGlowAnimationStateForStyle:(int)arg1; 21 | + (struct { BOOL x1[24]; BOOL x2[64]; int x3; int x4; BOOL x5[100]; BOOL x6[100]; BOOL x7[2][100]; BOOL x8[1024]; unsigned int x9; int x10; int x11; unsigned int x12; int x13; unsigned int x14; BOOL x15[150]; int x16; int x17; unsigned int x18 : 1; unsigned int x19 : 1; unsigned int x20 : 1; BOOL x21[256]; unsigned int x22 : 1; unsigned int x23 : 1; unsigned int x24 : 1; unsigned int x25 : 1; }*)getStatusBarData; 22 | + (struct { BOOL x1[24]; unsigned int x2 : 1; unsigned int x3 : 1; unsigned int x4 : 1; unsigned int x5 : 1; unsigned int x6 : 2; unsigned int x7 : 1; unsigned int x8 : 1; unsigned int x9 : 1; unsigned int x10 : 1; unsigned int x11 : 1; unsigned int x12 : 1; unsigned int x13 : 1; unsigned int x14 : 1; unsigned int x15 : 1; unsigned int x16 : 1; unsigned int x17 : 1; unsigned int x18 : 1; unsigned int x19 : 1; unsigned int x20 : 1; unsigned int x21 : 1; unsigned int x22 : 1; struct { BOOL x_23_1_1[24]; BOOL x_23_1_2[64]; int x_23_1_3; int x_23_1_4; BOOL x_23_1_5[100]; BOOL x_23_1_6[100]; BOOL x_23_1_7[2][100]; BOOL x_23_1_8[1024]; unsigned int x_23_1_9; int x_23_1_10; int x_23_1_11; unsigned int x_23_1_12; int x_23_1_13; unsigned int x_23_1_14; BOOL x_23_1_15[150]; int x_23_1_16; int x_23_1_17; unsigned int x_23_1_18 : 1; unsigned int x_23_1_19 : 1; unsigned int x_23_1_20 : 1; BOOL x_23_1_21[256]; unsigned int x_23_1_22 : 1; unsigned int x_23_1_23 : 1; unsigned int x_23_1_24 : 1; unsigned int x_23_1_25 : 1; } x23; }*)getStatusBarOverrideData; 23 | + (int)getStyleOverrides; 24 | + (void)permanentizeStatusBarOverrideData; 25 | + (void)postDoubleHeightStatusString:(id)arg1 forStyle:(int)arg2; 26 | + (void)postGlowAnimationState:(BOOL)arg1 forStyle:(int)arg2; 27 | + (void)postStatusBarData:(struct { BOOL x1[24]; BOOL x2[64]; int x3; int x4; BOOL x5[100]; BOOL x6[100]; BOOL x7[2][100]; BOOL x8[1024]; unsigned int x9; int x10; int x11; unsigned int x12; int x13; unsigned int x14; BOOL x15[150]; int x16; int x17; unsigned int x18 : 1; unsigned int x19 : 1; unsigned int x20 : 1; BOOL x21[256]; unsigned int x22 : 1; unsigned int x23 : 1; unsigned int x24 : 1; unsigned int x25 : 1; }*)arg1 withActions:(int)arg2; 28 | + (void)postStatusBarOverrideData:(struct { BOOL x1[24]; unsigned int x2 : 1; unsigned int x3 : 1; unsigned int x4 : 1; unsigned int x5 : 1; unsigned int x6 : 2; unsigned int x7 : 1; unsigned int x8 : 1; unsigned int x9 : 1; unsigned int x10 : 1; unsigned int x11 : 1; unsigned int x12 : 1; unsigned int x13 : 1; unsigned int x14 : 1; unsigned int x15 : 1; unsigned int x16 : 1; unsigned int x17 : 1; unsigned int x18 : 1; unsigned int x19 : 1; unsigned int x20 : 1; unsigned int x21 : 1; unsigned int x22 : 1; struct { BOOL x_23_1_1[24]; BOOL x_23_1_2[64]; int x_23_1_3; int x_23_1_4; BOOL x_23_1_5[100]; BOOL x_23_1_6[100]; BOOL x_23_1_7[2][100]; BOOL x_23_1_8[1024]; unsigned int x_23_1_9; int x_23_1_10; int x_23_1_11; unsigned int x_23_1_12; int x_23_1_13; unsigned int x_23_1_14; BOOL x_23_1_15[150]; int x_23_1_16; int x_23_1_17; unsigned int x_23_1_18 : 1; unsigned int x_23_1_19 : 1; unsigned int x_23_1_20 : 1; BOOL x_23_1_21[256]; unsigned int x_23_1_22 : 1; unsigned int x_23_1_23 : 1; unsigned int x_23_1_24 : 1; unsigned int x_23_1_25 : 1; } x23; }*)arg1; 29 | + (void)removeStatusBarItem:(int)arg1; 30 | + (void)removeStyleOverrides:(int)arg1; 31 | + (void)runServer; 32 | 33 | - (void)_receivedDoubleHeightStatus:(const char *)arg1 forStyle:(int)arg2; 34 | - (void)_receivedGlowAnimationState:(BOOL)arg1 forStyle:(int)arg2; 35 | - (void)_receivedStatusBarData:(struct { BOOL x1[24]; BOOL x2[64]; int x3; int x4; BOOL x5[100]; BOOL x6[100]; BOOL x7[2][100]; BOOL x8[1024]; unsigned int x9; int x10; int x11; unsigned int x12; int x13; unsigned int x14; BOOL x15[150]; int x16; int x17; unsigned int x18 : 1; unsigned int x19 : 1; unsigned int x20 : 1; BOOL x21[256]; unsigned int x22 : 1; unsigned int x23 : 1; unsigned int x24 : 1; unsigned int x25 : 1; }*)arg1 actions:(int)arg2; 36 | - (void)_receivedStyleOverrides:(int)arg1; 37 | - (void)dealloc; 38 | - (id)initWithStatusBar:(id)arg1; 39 | - (void)setStatusBar:(id )arg1; 40 | - (id)statusBar; 41 | 42 | @end 43 | -------------------------------------------------------------------------------- /Classes/MainViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // MainViewController.m 3 | // MobileSignal 4 | // 5 | // Created by Nicolas Seriot on 11/9/10. 6 | // Copyright 2010 seriot.ch. All rights reserved. 7 | // 8 | 9 | #import "MainViewController.h" 10 | #import "Measure.h" 11 | #import "UIStatusBarServer.h" 12 | #import 13 | #import "MSPolylineWrapper.h" 14 | #import "UIColor+MS.h" 15 | #import 16 | 17 | @implementation MainViewController 18 | 19 | @synthesize networkNameLabel; 20 | @synthesize signalStrengthLabel; 21 | @synthesize networkTypeLabel; 22 | @synthesize startDateLabel; 23 | @synthesize lastDateLabel; 24 | @synthesize measures; 25 | @synthesize nbMeasuresLabel; 26 | @synthesize startDate; 27 | @synthesize timer; 28 | @synthesize locationManager; 29 | @synthesize chartView; 30 | @synthesize mapView; 31 | @synthesize statusBarServer; 32 | 33 | static NSDateFormatter *dateFormatter; 34 | 35 | - (NSDateFormatter *)dateFormatter { 36 | if(dateFormatter == nil) { 37 | dateFormatter = [[NSDateFormatter alloc] init]; 38 | [dateFormatter setDateFormat:@"yyyy-dd-MM HH:mm"]; 39 | } 40 | 41 | return dateFormatter; 42 | } 43 | 44 | - (void)displayMeasure:(Measure *)m { 45 | networkNameLabel.text = m.networkName; 46 | signalStrengthLabel.text = [NSString stringWithFormat:@"%d dBm", m.signalStrength]; 47 | networkTypeLabel.text = [Measure stringForNetworkType:m.networkType]; 48 | nbMeasuresLabel.text = [NSString stringWithFormat:@"N=%d", [measures count]]; 49 | 50 | // TODO: use formatted dates 51 | NSDateFormatter *dateFormatter = [self dateFormatter]; 52 | startDateLabel.text = [dateFormatter stringFromDate:startDate]; 53 | lastDateLabel.text = [dateFormatter stringFromDate:m.date]; 54 | } 55 | 56 | - (void)didReceiveMeasure:(Measure *)m { 57 | 58 | #if TARGET_IPHONE_SIMULATOR 59 | CLLocationCoordinate2D c = {(float)(rand() % 100),(float)(rand() % 100)}; 60 | m.location = [[[CLLocation alloc] initWithLatitude:c.latitude longitude:c.longitude] autorelease]; 61 | #else 62 | CLLocationCoordinate2D c = m.location.coordinate; 63 | #endif 64 | 65 | NSLog(@"-- new measure with coordinates: %f %f", c.latitude, c.longitude); 66 | 67 | Measure *previousMeasure = [measures lastObject]; 68 | 69 | [measures addObject:m]; 70 | 71 | if(previousMeasure) { 72 | CLLocationCoordinate2D coords[2]; 73 | coords[0] = previousMeasure.location.coordinate; 74 | coords[1] = c; 75 | 76 | MSPolylineWrapper *pw = [MSPolylineWrapper polylineWithCoordinates:coords count:2 networkType:previousMeasure.networkType]; 77 | 78 | [mapView addOverlay:pw]; 79 | } 80 | 81 | [self displayMeasure:m]; 82 | 83 | [chartView setNeedsDisplay]; 84 | } 85 | 86 | - (IBAction)addMeasureType1:(id)sender { 87 | Measure *m = [[[Measure alloc] init] autorelease]; 88 | m.networkName = @"foo"; 89 | m.networkType = 1; 90 | m.signalStrength = -40 - (rand() % 60); 91 | m.location = locationManager.location; 92 | m.date = [NSDate date]; 93 | 94 | [self didReceiveMeasure:m]; 95 | } 96 | 97 | - (IBAction)addMeasureType2:(id)sender { 98 | Measure *m = [[[Measure alloc] init] autorelease]; 99 | m.networkName = @"foo"; 100 | m.networkType = 2; 101 | m.signalStrength = -50 - (rand() % 50); 102 | m.location = locationManager.location; 103 | m.date = [NSDate date]; 104 | 105 | [self didReceiveMeasure:m]; 106 | } 107 | 108 | - (void)addMeasure { 109 | if(locationManager.location == nil) return; 110 | 111 | StatusBarData *statusBarData = (StatusBarData *)[UIStatusBarServer getStatusBarData]; 112 | 113 | Measure *m = [Measure measureWithStatusBarData:(StatusBarData *)statusBarData location:locationManager.location]; 114 | 115 | [self didReceiveMeasure:m]; 116 | } 117 | 118 | - (IBAction)clear:(id)sender { 119 | [measures removeAllObjects]; 120 | 121 | [mapView removeOverlays:mapView.overlays]; 122 | 123 | self.startDate = [NSDate date]; 124 | startDateLabel.text = [startDate description]; 125 | lastDateLabel.text = @""; 126 | 127 | [self addMeasure]; 128 | 129 | [chartView setNeedsDisplay]; 130 | } 131 | 132 | - (void)addMeasureFromStatusBarServerData:(StatusBarData *)statusBarData { 133 | Measure *lastMeasure = [measures count] ? [measures objectAtIndex:0] : nil; 134 | 135 | Measure *m = [Measure measureWithStatusBarData:statusBarData location:locationManager.location]; 136 | 137 | if(lastMeasure.signalStrength == m.signalStrength && lastMeasure.networkType == m.networkType) return; 138 | 139 | [self didReceiveMeasure:m]; 140 | } 141 | 142 | - (void)stopListeningToStatusBarServer { 143 | statusBarServer.statusBar = nil; 144 | self.statusBarServer = nil; 145 | } 146 | 147 | - (void)startListeningToStatusBarServer { 148 | [self stopListeningToStatusBarServer]; 149 | self.statusBarServer = [[[UIStatusBarServer alloc] initWithStatusBar:self] autorelease]; 150 | 151 | StatusBarData *statusBarData = (StatusBarData *)[UIStatusBarServer getStatusBarData]; 152 | [self addMeasureFromStatusBarServerData:statusBarData]; 153 | } 154 | 155 | - (void)loadView { 156 | [super loadView]; 157 | 158 | networkNameLabel.text = @""; 159 | signalStrengthLabel.text = @""; 160 | networkTypeLabel.text = @""; 161 | nbMeasuresLabel.text = @""; 162 | startDateLabel.text = @""; 163 | lastDateLabel.text = @""; 164 | 165 | [self startListeningToStatusBarServer]; 166 | 167 | self.startDate = [NSDate date]; 168 | self.measures = [NSMutableArray array]; 169 | 170 | self.locationManager = [[[CLLocationManager alloc] init] autorelease]; 171 | 172 | mapView.showsUserLocation = YES; 173 | 174 | mapView.layer.borderColor = [UIColor blackColor].CGColor; 175 | mapView.layer.borderWidth = 1.0f; 176 | 177 | chartView.backgroundColor = [UIColor clearColor]; 178 | } 179 | 180 | - (void)viewDidLoad { 181 | self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:chartView selector:@selector(setNeedsDisplay) userInfo:nil repeats:YES]; 182 | 183 | locationManager.delegate = self; 184 | [locationManager startMonitoringSignificantLocationChanges]; 185 | // [locationManager startUpdatingLocation]; 186 | 187 | [self addMeasure]; 188 | 189 | [super viewDidLoad]; 190 | } 191 | 192 | - (void)viewDidUnload { 193 | [timer invalidate]; 194 | [timer release]; 195 | 196 | [self stopListeningToStatusBarServer]; 197 | 198 | [locationManager stopMonitoringSignificantLocationChanges]; 199 | 200 | [super viewDidUnload]; 201 | } 202 | 203 | - (void)dealloc { 204 | [locationManager release]; 205 | [chartView release]; 206 | [mapView release]; 207 | [statusBarServer release]; 208 | [networkNameLabel release]; 209 | [signalStrengthLabel release]; 210 | [networkTypeLabel release]; 211 | [startDateLabel release]; 212 | [lastDateLabel release]; 213 | [chartView release]; 214 | [measures release]; 215 | [nbMeasuresLabel release]; 216 | [startDate release]; 217 | [timer release]; 218 | [statusBarServer release]; 219 | [super dealloc]; 220 | } 221 | 222 | - (IBAction)updateDisplay:(id)sender { 223 | [chartView setNeedsDisplay]; 224 | } 225 | 226 | #pragma mark - 227 | #pragma mark MSChartViewDataSource 228 | 229 | - (NSUInteger)numberOfMeasures { 230 | return [measures count]; 231 | } 232 | 233 | - (Measure *)measureAtIndex:(NSUInteger)index { 234 | if(index >= [measures count]) return nil; 235 | 236 | return [measures objectAtIndex:index]; 237 | } 238 | 239 | - (NSDate *)minDate { 240 | if([measures count] == 0) return nil; 241 | 242 | Measure *m = [measures objectAtIndex:0]; 243 | return m.date; 244 | } 245 | 246 | - (NSDate *)maxDate { 247 | Measure *m = [measures lastObject]; 248 | return m.date; 249 | } 250 | 251 | #pragma mark UIStatusBarServerDelegate 252 | 253 | - (void)statusBarServer:(id)arg1 didReceiveStatusBarData:(StatusBarData *)statusBarData withActions:(NSInteger)arg3 { 254 | NSLog(@"-- statusBarServer:didReceiveStatusBarData:withActions:"); 255 | // 256 | // NSLog(@"-- actions: %d", arg3); 257 | 258 | if(locationManager.location == nil) return; 259 | 260 | [self addMeasureFromStatusBarServerData:statusBarData]; 261 | } 262 | 263 | - (void)statusBarServer:(id)arg1 didReceiveStyleOverrides:(NSInteger)arg2 { 264 | NSLog(@"-- statusBarServer:didReceiveStyleOverrides:"); 265 | } 266 | 267 | - (void)statusBarServer:(id)arg1 didReceiveGlowAnimationState:(BOOL)arg2 forStyle:(NSInteger)arg3 { 268 | NSLog(@"-- statusBarServer:didReceiveGlowAnimationState:"); 269 | } 270 | 271 | - (void)statusBarServer:(id)arg1 didReceiveDoubleHeightStatusString:(id)arg2 forStyle:(NSInteger)arg3 { 272 | NSLog(@"-- statusBarServer:didReceiveDoubleHeightStatusString:"); 273 | } 274 | 275 | #pragma mark MKMapViewDelegate 276 | 277 | - (MKOverlayView *)mapView:(MKMapView *)aMapView viewForOverlay:(id )overlay { 278 | if ([overlay isKindOfClass:[MSPolylineWrapper class]]) { 279 | 280 | MKPolylineView *polylineView = [[MKPolylineView alloc] initWithPolyline:(MKPolyline *)[(MSPolylineWrapper *)overlay polyline]]; 281 | 282 | UIColor *color = [UIColor colorForNetworkType:[(MSPolylineWrapper *)overlay networkType]]; 283 | 284 | polylineView.fillColor = [color colorWithAlphaComponent:1.0]; 285 | polylineView.strokeColor = [color colorWithAlphaComponent:1.0]; 286 | polylineView.lineWidth = 6; 287 | 288 | return [polylineView autorelease]; 289 | } else { 290 | NSLog(@"-- unknown overlay: %@", overlay); 291 | } 292 | 293 | return nil; 294 | } 295 | 296 | #pragma mark CLLocationManagerDelegate 297 | 298 | - (void)locationManager:(CLLocationManager *)manager 299 | didUpdateToLocation:(CLLocation *)newLocation 300 | fromLocation:(CLLocation *)oldLocation { 301 | NSLog(@"-- locationManager:didUpdateToLocation:%@", newLocation); 302 | 303 | [mapView setCenterCoordinate:newLocation.coordinate animated:YES]; 304 | 305 | StatusBarData *statusBarData = (StatusBarData *)[UIStatusBarServer getStatusBarData]; 306 | 307 | Measure *m = [Measure measureWithStatusBarData:(StatusBarData *)statusBarData location:newLocation]; 308 | 309 | [self didReceiveMeasure:m]; 310 | } 311 | 312 | - (void)locationManager:(CLLocationManager *)manager 313 | didFailWithError:(NSError *)error { 314 | NSLog(@"-- locationManager:didFailWithError:%@", error); 315 | } 316 | 317 | @end 318 | -------------------------------------------------------------------------------- /MainWindow.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1536 5 | 12A269 6 | 2818 7 | 1187 8 | 624.00 9 | 10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 11 | 1900 12 | 13 | 14 | YES 15 | IBProxyObject 16 | IBUICustomObject 17 | IBUIViewController 18 | IBUIWindow 19 | 20 | 21 | YES 22 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 23 | 24 | 25 | PluginDependencyRecalculationVersion 26 | 27 | 28 | 29 | YES 30 | 31 | IBFilesOwner 32 | IBCocoaTouchFramework 33 | 34 | 35 | IBFirstResponder 36 | IBCocoaTouchFramework 37 | 38 | 39 | IBCocoaTouchFramework 40 | 41 | 42 | 43 | 1316 44 | 45 | {320, 480} 46 | 47 | 48 | 49 | 1 50 | MCAwIDAAA 51 | 52 | NO 53 | YES 54 | 55 | IBCocoaTouchFramework 56 | YES 57 | 58 | 59 | MainView 60 | 61 | 62 | 1 63 | 1 64 | 65 | IBCocoaTouchFramework 66 | NO 67 | 68 | 69 | 70 | 71 | YES 72 | 73 | 74 | delegate 75 | 76 | 77 | 78 | 26 79 | 80 | 81 | 82 | window 83 | 84 | 85 | 86 | 5 87 | 88 | 89 | 90 | mainViewController 91 | 92 | 93 | 94 | 24 95 | 96 | 97 | 98 | 99 | YES 100 | 101 | 0 102 | 103 | YES 104 | 105 | 106 | 107 | 108 | 109 | 2 110 | 111 | 112 | YES 113 | 114 | 115 | 116 | 117 | -1 118 | 119 | 120 | File's Owner 121 | 122 | 123 | 3 124 | 125 | 126 | 127 | 128 | -2 129 | 130 | 131 | 132 | 133 | 22 134 | 135 | 136 | 137 | 138 | 139 | 140 | YES 141 | 142 | YES 143 | -1.CustomClassName 144 | -1.IBPluginDependency 145 | -2.CustomClassName 146 | -2.IBPluginDependency 147 | 2.IBAttributePlaceholdersKey 148 | 2.IBPluginDependency 149 | 22.CustomClassName 150 | 22.IBPluginDependency 151 | 3.CustomClassName 152 | 3.IBPluginDependency 153 | 154 | 155 | YES 156 | UIApplication 157 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 158 | UIResponder 159 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 160 | 161 | YES 162 | 163 | 164 | 165 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 166 | MainViewController 167 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 168 | MobileSignalAppDelegate 169 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 170 | 171 | 172 | 173 | YES 174 | 175 | 176 | 177 | 178 | 179 | YES 180 | 181 | 182 | 183 | 184 | 26 185 | 186 | 187 | 188 | YES 189 | 190 | MSChartView 191 | UIView 192 | 193 | dataSource 194 | NSObject 195 | 196 | 197 | dataSource 198 | 199 | dataSource 200 | NSObject 201 | 202 | 203 | 204 | IBProjectSource 205 | ./Classes/MSChartView.h 206 | 207 | 208 | 209 | MainViewController 210 | UIViewController 211 | 212 | YES 213 | 214 | YES 215 | addMeasureType1: 216 | addMeasureType2: 217 | clear: 218 | showInfo: 219 | updateDisplay: 220 | 221 | 222 | YES 223 | id 224 | id 225 | id 226 | id 227 | id 228 | 229 | 230 | 231 | YES 232 | 233 | YES 234 | addMeasureType1: 235 | addMeasureType2: 236 | clear: 237 | showInfo: 238 | updateDisplay: 239 | 240 | 241 | YES 242 | 243 | addMeasureType1: 244 | id 245 | 246 | 247 | addMeasureType2: 248 | id 249 | 250 | 251 | clear: 252 | id 253 | 254 | 255 | showInfo: 256 | id 257 | 258 | 259 | updateDisplay: 260 | id 261 | 262 | 263 | 264 | 265 | YES 266 | 267 | YES 268 | chartView 269 | lastDateLabel 270 | mapView 271 | nbMeasuresLabel 272 | networkNameLabel 273 | networkTypeLabel 274 | signalStrengthLabel 275 | startDateLabel 276 | 277 | 278 | YES 279 | MSChartView 280 | UILabel 281 | MKMapView 282 | UILabel 283 | UILabel 284 | UILabel 285 | UILabel 286 | UILabel 287 | 288 | 289 | 290 | YES 291 | 292 | YES 293 | chartView 294 | lastDateLabel 295 | mapView 296 | nbMeasuresLabel 297 | networkNameLabel 298 | networkTypeLabel 299 | signalStrengthLabel 300 | startDateLabel 301 | 302 | 303 | YES 304 | 305 | chartView 306 | MSChartView 307 | 308 | 309 | lastDateLabel 310 | UILabel 311 | 312 | 313 | mapView 314 | MKMapView 315 | 316 | 317 | nbMeasuresLabel 318 | UILabel 319 | 320 | 321 | networkNameLabel 322 | UILabel 323 | 324 | 325 | networkTypeLabel 326 | UILabel 327 | 328 | 329 | signalStrengthLabel 330 | UILabel 331 | 332 | 333 | startDateLabel 334 | UILabel 335 | 336 | 337 | 338 | 339 | IBProjectSource 340 | ./Classes/MainViewController.h 341 | 342 | 343 | 344 | MobileSignalAppDelegate 345 | NSObject 346 | 347 | YES 348 | 349 | YES 350 | mainViewController 351 | window 352 | 353 | 354 | YES 355 | MainViewController 356 | UIWindow 357 | 358 | 359 | 360 | YES 361 | 362 | YES 363 | mainViewController 364 | window 365 | 366 | 367 | YES 368 | 369 | mainViewController 370 | MainViewController 371 | 372 | 373 | window 374 | UIWindow 375 | 376 | 377 | 378 | 379 | IBProjectSource 380 | ./Classes/MobileSignalAppDelegate.h 381 | 382 | 383 | 384 | 385 | 0 386 | IBCocoaTouchFramework 387 | 388 | com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS 389 | 390 | 391 | 392 | com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 393 | 394 | 395 | YES 396 | 3 397 | 1900 398 | 399 | 400 | -------------------------------------------------------------------------------- /MobileSignal.xcodeproj/nst.pbxuser: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | 0300AE901298675B00D87CEE /* UIStatusBarServer.h */ = { 4 | uiCtxt = { 5 | sepNavIntBoundsRect = "{{0, 0}, {6928, 698}}"; 6 | sepNavSelRange = "{4351, 0}"; 7 | sepNavVisRange = "{0, 4351}"; 8 | sepNavWindowFrame = "{{15, 52}, {994, 826}}"; 9 | }; 10 | }; 11 | 0300AE911298678800D87CEE /* UIStatusBarServerThread.h */ = { 12 | uiCtxt = { 13 | sepNavIntBoundsRect = "{{0, 0}, {947, 2522}}"; 14 | sepNavSelRange = "{255, 4}"; 15 | sepNavVisRange = "{0, 1664}"; 16 | sepNavWindowFrame = "{{15, 52}, {994, 826}}"; 17 | }; 18 | }; 19 | 03424F8F1338D177006D254D /* PBXTextBookmark */ = { 20 | isa = PBXTextBookmark; 21 | fRef = 0300AE911298678800D87CEE /* UIStatusBarServerThread.h */; 22 | name = "UIStatusBarServerThread.h: 12"; 23 | rLen = 4; 24 | rLoc = 255; 25 | rType = 0; 26 | vrLen = 1293; 27 | vrLoc = 0; 28 | }; 29 | 03424F901338D177006D254D /* PBXTextBookmark */ = { 30 | isa = PBXTextBookmark; 31 | fRef = 0300AE901298675B00D87CEE /* UIStatusBarServer.h */; 32 | name = "UIStatusBarServer.h: 21"; 33 | rLen = 370; 34 | rLoc = 1975; 35 | rType = 0; 36 | vrLen = 4351; 37 | vrLoc = 0; 38 | }; 39 | 03424F911338D177006D254D /* PBXTextBookmark */ = { 40 | isa = PBXTextBookmark; 41 | fRef = 03F4AAFA12926D6D000F5EED /* Measure.h */; 42 | name = "Measure.h: 15"; 43 | rLen = 0; 44 | rLoc = 282; 45 | rType = 0; 46 | vrLen = 765; 47 | vrLoc = 0; 48 | }; 49 | 03424F931338D177006D254D /* CLLocationManager.h */ = { 50 | isa = PBXFileReference; 51 | lastKnownFileType = sourcecode.c.h; 52 | name = CLLocationManager.h; 53 | path = /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/System/Library/Frameworks/CoreLocation.framework/Headers/CLLocationManager.h; 54 | sourceTree = ""; 55 | uiCtxt = { 56 | sepNavIntBoundsRect = "{{0, 0}, {1048, 3991}}"; 57 | sepNavSelRange = "{8869, 99}"; 58 | sepNavVisRange = "{8079, 1736}"; 59 | }; 60 | }; 61 | 03424F941338D177006D254D /* PBXTextBookmark */ = { 62 | isa = PBXTextBookmark; 63 | fRef = 289233A80DB2D0DB0083E9F9 /* MainViewController.h */; 64 | name = "MainViewController.h: 56"; 65 | rLen = 15; 66 | rLoc = 1579; 67 | rType = 0; 68 | vrLen = 1211; 69 | vrLoc = 650; 70 | }; 71 | 03424FBC1338D1F3006D254D /* PBXTextBookmark */ = { 72 | isa = PBXTextBookmark; 73 | fRef = 03424FBD1338D1F3006D254D /* UIApplication.h */; 74 | name = "UIApplication.h: 238"; 75 | rLen = 65; 76 | rLoc = 11386; 77 | rType = 0; 78 | vrLen = 2854; 79 | vrLoc = 10083; 80 | }; 81 | 03424FBD1338D1F3006D254D /* UIApplication.h */ = { 82 | isa = PBXFileReference; 83 | lastKnownFileType = sourcecode.c.h; 84 | name = UIApplication.h; 85 | path = /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIApplication.h; 86 | sourceTree = ""; 87 | }; 88 | 03424FCC1338D235006D254D /* PBXTextBookmark */ = { 89 | isa = PBXTextBookmark; 90 | fRef = 03F4AAFB12926D6D000F5EED /* Measure.m */; 91 | name = "Measure.m: 46"; 92 | rLen = 0; 93 | rLoc = 1185; 94 | rType = 0; 95 | vrLen = 1416; 96 | vrLoc = 134; 97 | }; 98 | 03424FCD1338D235006D254D /* PBXTextBookmark */ = { 99 | isa = PBXTextBookmark; 100 | fRef = 0300AE911298678800D87CEE /* UIStatusBarServerThread.h */; 101 | name = "UIStatusBarServerThread.h: 12"; 102 | rLen = 4; 103 | rLoc = 255; 104 | rType = 0; 105 | vrLen = 1664; 106 | vrLoc = 0; 107 | }; 108 | 03424FCE1338D235006D254D /* PBXTextBookmark */ = { 109 | isa = PBXTextBookmark; 110 | fRef = 0300AE901298675B00D87CEE /* UIStatusBarServer.h */; 111 | name = "UIStatusBarServer.h: 42"; 112 | rLen = 0; 113 | rLoc = 4351; 114 | rType = 0; 115 | vrLen = 4351; 116 | vrLoc = 0; 117 | }; 118 | 03424FCF1338D235006D254D /* PBXTextBookmark */ = { 119 | isa = PBXTextBookmark; 120 | fRef = 289233A90DB2D0DB0083E9F9 /* MainViewController.m */; 121 | name = "MainViewController.m: 244"; 122 | rLen = 0; 123 | rLoc = 6499; 124 | rType = 0; 125 | vrLen = 1154; 126 | vrLoc = 4439; 127 | }; 128 | 03607C3D1338D28C00B62CA7 /* PBXTextBookmark */ = { 129 | isa = PBXTextBookmark; 130 | fRef = 1D3623240D0F684500981E51 /* MobileSignalAppDelegate.h */; 131 | name = "MobileSignalAppDelegate.h: 15"; 132 | rLen = 0; 133 | rLoc = 340; 134 | rType = 0; 135 | vrLen = 487; 136 | vrLoc = 0; 137 | }; 138 | 03607C431338D2E200B62CA7 /* PBXTextBookmark */ = { 139 | isa = PBXTextBookmark; 140 | fRef = 03F4AAFB12926D6D000F5EED /* Measure.m */; 141 | name = "Measure.m: 42"; 142 | rLen = 7; 143 | rLoc = 919; 144 | rType = 0; 145 | vrLen = 649; 146 | vrLoc = 895; 147 | }; 148 | 03607C551338D46D00B62CA7 /* PBXTextBookmark */ = { 149 | isa = PBXTextBookmark; 150 | fRef = 03424F931338D177006D254D /* CLLocationManager.h */; 151 | name = "CLLocationManager.h: 273"; 152 | rLen = 99; 153 | rLoc = 8869; 154 | rType = 0; 155 | vrLen = 1736; 156 | vrLoc = 8079; 157 | }; 158 | 03607C59133923E200B62CA7 /* PBXTextBookmark */ = { 159 | isa = PBXTextBookmark; 160 | fRef = 289233A90DB2D0DB0083E9F9 /* MainViewController.m */; 161 | name = "MainViewController.m: 16"; 162 | rLen = 0; 163 | rLoc = 306; 164 | rType = 0; 165 | vrLen = 860; 166 | vrLoc = 0; 167 | }; 168 | 03607C5A133923E200B62CA7 /* PBXTextBookmark */ = { 169 | isa = PBXTextBookmark; 170 | fRef = 1D3623250D0F684500981E51 /* MobileSignalAppDelegate.m */; 171 | name = "MobileSignalAppDelegate.m: 64"; 172 | rLen = 31; 173 | rLoc = 2163; 174 | rType = 0; 175 | vrLen = 1601; 176 | vrLoc = 589; 177 | }; 178 | 03607C6213396C1500B62CA7 /* PBXTextBookmark */ = { 179 | isa = PBXTextBookmark; 180 | fRef = 1D3623250D0F684500981E51 /* MobileSignalAppDelegate.m */; 181 | name = "MobileSignalAppDelegate.m: 66"; 182 | rLen = 0; 183 | rLoc = 2383; 184 | rType = 0; 185 | vrLen = 1677; 186 | vrLoc = 260; 187 | }; 188 | 03607C6313396C1500B62CA7 /* PBXTextBookmark */ = { 189 | isa = PBXTextBookmark; 190 | fRef = 03F4AAFB12926D6D000F5EED /* Measure.m */; 191 | name = "Measure.m: 46"; 192 | rLen = 0; 193 | rLoc = 1185; 194 | rType = 0; 195 | vrLen = 1416; 196 | vrLoc = 134; 197 | }; 198 | 03607C6413396C1500B62CA7 /* PBXTextBookmark */ = { 199 | isa = PBXTextBookmark; 200 | fRef = 0300AE911298678800D87CEE /* UIStatusBarServerThread.h */; 201 | name = "UIStatusBarServerThread.h: 12"; 202 | rLen = 4; 203 | rLoc = 255; 204 | rType = 0; 205 | vrLen = 1664; 206 | vrLoc = 0; 207 | }; 208 | 03607C6513396C1500B62CA7 /* PBXTextBookmark */ = { 209 | isa = PBXTextBookmark; 210 | fRef = 0300AE901298675B00D87CEE /* UIStatusBarServer.h */; 211 | name = "UIStatusBarServer.h: 42"; 212 | rLen = 0; 213 | rLoc = 4351; 214 | rType = 0; 215 | vrLen = 4351; 216 | vrLoc = 0; 217 | }; 218 | 03607C6613396C1500B62CA7 /* PBXTextBookmark */ = { 219 | isa = PBXTextBookmark; 220 | fRef = 289233A90DB2D0DB0083E9F9 /* MainViewController.m */; 221 | name = "MainViewController.m: 251"; 222 | rLen = 0; 223 | rLoc = 6499; 224 | rType = 0; 225 | vrLen = 1385; 226 | vrLoc = 3919; 227 | }; 228 | 03725B351289365400396899 /* MobileSignal */ = { 229 | isa = PBXExecutable; 230 | activeArgIndices = ( 231 | ); 232 | argumentStrings = ( 233 | ); 234 | autoAttachOnCrash = 1; 235 | breakpointsEnabled = 1; 236 | configStateDict = { 237 | }; 238 | customDataFormattersEnabled = 1; 239 | dataTipCustomDataFormattersEnabled = 1; 240 | dataTipShowTypeColumn = 1; 241 | dataTipSortType = 0; 242 | debuggerPlugin = GDBDebugging; 243 | disassemblyDisplayState = 0; 244 | dylibVariantSuffix = ""; 245 | enableDebugStr = 1; 246 | environmentEntries = ( 247 | { 248 | active = YES; 249 | name = NSZombieEnabled; 250 | value = YES; 251 | }, 252 | ); 253 | executableSystemSymbolLevel = 0; 254 | executableUserSymbolLevel = 0; 255 | libgmallocEnabled = 0; 256 | name = MobileSignal; 257 | savedGlobals = { 258 | }; 259 | showTypeColumn = 0; 260 | sourceDirectories = ( 261 | ); 262 | variableFormatDictionary = { 263 | }; 264 | }; 265 | 03725B401289365700396899 /* Source Control */ = { 266 | isa = PBXSourceControlManager; 267 | fallbackIsa = XCSourceControlManager; 268 | isSCMEnabled = 0; 269 | scmConfiguration = { 270 | repositoryNamesForRoots = { 271 | "" = ""; 272 | }; 273 | }; 274 | }; 275 | 03725B411289365700396899 /* Code sense */ = { 276 | isa = PBXCodeSenseManager; 277 | indexTemplatePath = ""; 278 | }; 279 | 03C7983C12ABC5E10081BD3A /* objc_exception_throw */ = { 280 | isa = PBXSymbolicBreakpoint; 281 | actions = ( 282 | ); 283 | breakpointStyle = 1; 284 | continueAfterActions = 0; 285 | countType = 0; 286 | delayBeforeContinue = 0; 287 | hitCount = 0; 288 | ignoreCount = 0; 289 | location = libobjc.A.dylib; 290 | modificationTime = 322491507.653777; 291 | originalNumberOfMultipleMatches = 1; 292 | state = 1; 293 | symbolName = objc_exception_throw; 294 | }; 295 | 03C79AD212ABF6430081BD3A /* MSPolylineWrapper.h */ = { 296 | uiCtxt = { 297 | sepNavIntBoundsRect = "{{0, 0}, {999, 455}}"; 298 | sepNavSelRange = "{115, 0}"; 299 | sepNavVisRange = "{0, 512}"; 300 | }; 301 | }; 302 | 03C79AD312ABF6430081BD3A /* MSPolylineWrapper.m */ = { 303 | uiCtxt = { 304 | sepNavIntBoundsRect = "{{0, 0}, {1006, 585}}"; 305 | sepNavSelRange = "{115, 0}"; 306 | sepNavVisRange = "{0, 746}"; 307 | }; 308 | }; 309 | 03C79B3F12ABFB750081BD3A /* UIColor+MS.h */ = { 310 | uiCtxt = { 311 | sepNavIntBoundsRect = "{{0, 0}, {875, 402}}"; 312 | sepNavSelRange = "{110, 0}"; 313 | sepNavVisRange = "{0, 253}"; 314 | }; 315 | }; 316 | 03C79B4012ABFB750081BD3A /* UIColor+MS.m */ = { 317 | uiCtxt = { 318 | sepNavIntBoundsRect = "{{0, 0}, {875, 402}}"; 319 | sepNavSelRange = "{101, 9}"; 320 | sepNavVisRange = "{0, 524}"; 321 | }; 322 | }; 323 | 03E0DE6E12976BDA000D33D3 /* MSChartView.h */ = { 324 | uiCtxt = { 325 | sepNavIntBoundsRect = "{{0, 0}, {875, 455}}"; 326 | sepNavSelRange = "{508, 0}"; 327 | sepNavVisRange = "{0, 508}"; 328 | }; 329 | }; 330 | 03E0DE6F12976BDA000D33D3 /* MSChartView.m */ = { 331 | uiCtxt = { 332 | sepNavIntBoundsRect = "{{0, 0}, {875, 1898}}"; 333 | sepNavSelRange = "{1352, 29}"; 334 | sepNavVisRange = "{935, 720}"; 335 | }; 336 | }; 337 | 03F4AAFA12926D6D000F5EED /* Measure.h */ = { 338 | uiCtxt = { 339 | sepNavIntBoundsRect = "{{0, 0}, {1255, 468}}"; 340 | sepNavSelRange = "{226, 32}"; 341 | sepNavVisRange = "{0, 375}"; 342 | sepNavWindowFrame = "{{15, 52}, {994, 826}}"; 343 | }; 344 | }; 345 | 03F4AAFB12926D6D000F5EED /* Measure.m */ = { 346 | uiCtxt = { 347 | sepNavIntBoundsRect = "{{0, 0}, {1251, 806}}"; 348 | sepNavSelRange = "{1185, 0}"; 349 | sepNavVisRange = "{134, 1416}"; 350 | sepNavWindowFrame = "{{233, 52}, {994, 826}}"; 351 | }; 352 | }; 353 | 1D3623240D0F684500981E51 /* MobileSignalAppDelegate.h */ = { 354 | uiCtxt = { 355 | sepNavIntBoundsRect = "{{0, 0}, {1048, 593}}"; 356 | sepNavSelRange = "{340, 0}"; 357 | sepNavVisRange = "{0, 487}"; 358 | }; 359 | }; 360 | 1D3623250D0F684500981E51 /* MobileSignalAppDelegate.m */ = { 361 | uiCtxt = { 362 | sepNavIntBoundsRect = "{{0, 0}, {1965, 1027}}"; 363 | sepNavSelRange = "{2383, 0}"; 364 | sepNavVisRange = "{260, 1677}"; 365 | }; 366 | }; 367 | 1D6058900D05DD3D006BFB54 /* MobileSignal */ = { 368 | activeExec = 0; 369 | executables = ( 370 | 03725B351289365400396899 /* MobileSignal */, 371 | ); 372 | }; 373 | 289233A80DB2D0DB0083E9F9 /* MainViewController.h */ = { 374 | uiCtxt = { 375 | sepNavIntBoundsRect = "{{0, 0}, {1048, 897}}"; 376 | sepNavSelRange = "{1579, 15}"; 377 | sepNavVisRange = "{650, 1211}"; 378 | }; 379 | }; 380 | 289233A90DB2D0DB0083E9F9 /* MainViewController.m */ = { 381 | uiCtxt = { 382 | sepNavIntBoundsRect = "{{0, 0}, {992, 4199}}"; 383 | sepNavSelRange = "{6499, 0}"; 384 | sepNavVisRange = "{3919, 1385}"; 385 | sepNavWindowFrame = "{{15, 52}, {994, 826}}"; 386 | }; 387 | }; 388 | 289233AC0DB2D0DB0083E9F9 /* FlipsideViewController.h */ = { 389 | uiCtxt = { 390 | sepNavIntBoundsRect = "{{0, 0}, {875, 537}}"; 391 | sepNavSelRange = "{0, 0}"; 392 | sepNavVisRange = "{0, 560}"; 393 | }; 394 | }; 395 | 289233AD0DB2D0DB0083E9F9 /* FlipsideViewController.m */ = { 396 | uiCtxt = { 397 | sepNavIntBoundsRect = "{{0, 0}, {875, 537}}"; 398 | sepNavSelRange = "{243, 0}"; 399 | sepNavVisRange = "{0, 514}"; 400 | }; 401 | }; 402 | 29B97313FDCFA39411CA2CEA /* Project object */ = { 403 | activeBuildConfigurationName = Debug; 404 | activeExecutable = 03725B351289365400396899 /* MobileSignal */; 405 | activeSDKPreference = iphoneos4.3; 406 | activeTarget = 1D6058900D05DD3D006BFB54 /* MobileSignal */; 407 | addToTargets = ( 408 | 1D6058900D05DD3D006BFB54 /* MobileSignal */, 409 | ); 410 | breakpoints = ( 411 | 03C7983C12ABC5E10081BD3A /* objc_exception_throw */, 412 | ); 413 | codeSenseManager = 03725B411289365700396899 /* Code sense */; 414 | executables = ( 415 | 03725B351289365400396899 /* MobileSignal */, 416 | ); 417 | perUserDictionary = { 418 | "PBXConfiguration.PBXBreakpointsDataSource.v1:1CA23EDF0692099D00951B8B" = { 419 | PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; 420 | PBXFileTableDataSourceColumnSortingKey = PBXBreakpointsDataSource_BreakpointID; 421 | PBXFileTableDataSourceColumnWidthsKey = ( 422 | 20, 423 | 20, 424 | 292, 425 | 20, 426 | 191, 427 | 191, 428 | 121, 429 | 20, 430 | ); 431 | PBXFileTableDataSourceColumnsKey = ( 432 | PBXBreakpointsDataSource_ActionID, 433 | PBXBreakpointsDataSource_TypeID, 434 | PBXBreakpointsDataSource_BreakpointID, 435 | PBXBreakpointsDataSource_UseID, 436 | PBXBreakpointsDataSource_LocationID, 437 | PBXBreakpointsDataSource_ConditionID, 438 | PBXBreakpointsDataSource_IgnoreCountID, 439 | PBXBreakpointsDataSource_ContinueID, 440 | ); 441 | }; 442 | PBXConfiguration.PBXFileTableDataSource3.PBXExecutablesDataSource = { 443 | PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; 444 | PBXFileTableDataSourceColumnSortingKey = PBXExecutablesDataSource_NameID; 445 | PBXFileTableDataSourceColumnWidthsKey = ( 446 | 22, 447 | 300, 448 | 746, 449 | ); 450 | PBXFileTableDataSourceColumnsKey = ( 451 | PBXExecutablesDataSource_ActiveFlagID, 452 | PBXExecutablesDataSource_NameID, 453 | PBXExecutablesDataSource_CommentsID, 454 | ); 455 | }; 456 | PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { 457 | PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; 458 | PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; 459 | PBXFileTableDataSourceColumnWidthsKey = ( 460 | 20, 461 | 858, 462 | 20, 463 | 48, 464 | 43, 465 | 43, 466 | 20, 467 | ); 468 | PBXFileTableDataSourceColumnsKey = ( 469 | PBXFileDataSource_FiletypeID, 470 | PBXFileDataSource_Filename_ColumnID, 471 | PBXFileDataSource_Built_ColumnID, 472 | PBXFileDataSource_ObjectSize_ColumnID, 473 | PBXFileDataSource_Errors_ColumnID, 474 | PBXFileDataSource_Warnings_ColumnID, 475 | PBXFileDataSource_Target_ColumnID, 476 | ); 477 | }; 478 | PBXConfiguration.PBXFileTableDataSource3.PBXFindDataSource = { 479 | PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; 480 | PBXFileTableDataSourceColumnSortingKey = PBXFindDataSource_LocationID; 481 | PBXFileTableDataSourceColumnWidthsKey = ( 482 | 200, 483 | 872, 484 | ); 485 | PBXFileTableDataSourceColumnsKey = ( 486 | PBXFindDataSource_MessageID, 487 | PBXFindDataSource_LocationID, 488 | ); 489 | }; 490 | PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = { 491 | PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; 492 | PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; 493 | PBXFileTableDataSourceColumnWidthsKey = ( 494 | 20, 495 | 645, 496 | 60, 497 | 20, 498 | 48, 499 | 43, 500 | 43, 501 | ); 502 | PBXFileTableDataSourceColumnsKey = ( 503 | PBXFileDataSource_FiletypeID, 504 | PBXFileDataSource_Filename_ColumnID, 505 | PBXTargetDataSource_PrimaryAttribute, 506 | PBXFileDataSource_Built_ColumnID, 507 | PBXFileDataSource_ObjectSize_ColumnID, 508 | PBXFileDataSource_Errors_ColumnID, 509 | PBXFileDataSource_Warnings_ColumnID, 510 | ); 511 | }; 512 | PBXPerProjectTemplateStateSaveDate = 322490939; 513 | PBXWorkspaceStateSaveDate = 322490939; 514 | }; 515 | perUserProjectItems = { 516 | 03424F8F1338D177006D254D /* PBXTextBookmark */ = 03424F8F1338D177006D254D /* PBXTextBookmark */; 517 | 03424F901338D177006D254D /* PBXTextBookmark */ = 03424F901338D177006D254D /* PBXTextBookmark */; 518 | 03424F911338D177006D254D /* PBXTextBookmark */ = 03424F911338D177006D254D /* PBXTextBookmark */; 519 | 03424F941338D177006D254D /* PBXTextBookmark */ = 03424F941338D177006D254D /* PBXTextBookmark */; 520 | 03424FBC1338D1F3006D254D /* PBXTextBookmark */ = 03424FBC1338D1F3006D254D /* PBXTextBookmark */; 521 | 03424FCC1338D235006D254D /* PBXTextBookmark */ = 03424FCC1338D235006D254D /* PBXTextBookmark */; 522 | 03424FCD1338D235006D254D /* PBXTextBookmark */ = 03424FCD1338D235006D254D /* PBXTextBookmark */; 523 | 03424FCE1338D235006D254D /* PBXTextBookmark */ = 03424FCE1338D235006D254D /* PBXTextBookmark */; 524 | 03424FCF1338D235006D254D /* PBXTextBookmark */ = 03424FCF1338D235006D254D /* PBXTextBookmark */; 525 | 03607C3D1338D28C00B62CA7 /* PBXTextBookmark */ = 03607C3D1338D28C00B62CA7 /* PBXTextBookmark */; 526 | 03607C431338D2E200B62CA7 /* PBXTextBookmark */ = 03607C431338D2E200B62CA7 /* PBXTextBookmark */; 527 | 03607C551338D46D00B62CA7 /* PBXTextBookmark */ = 03607C551338D46D00B62CA7 /* PBXTextBookmark */; 528 | 03607C59133923E200B62CA7 /* PBXTextBookmark */ = 03607C59133923E200B62CA7 /* PBXTextBookmark */; 529 | 03607C5A133923E200B62CA7 /* PBXTextBookmark */ = 03607C5A133923E200B62CA7 /* PBXTextBookmark */; 530 | 03607C6213396C1500B62CA7 /* PBXTextBookmark */ = 03607C6213396C1500B62CA7 /* PBXTextBookmark */; 531 | 03607C6313396C1500B62CA7 /* PBXTextBookmark */ = 03607C6313396C1500B62CA7 /* PBXTextBookmark */; 532 | 03607C6413396C1500B62CA7 /* PBXTextBookmark */ = 03607C6413396C1500B62CA7 /* PBXTextBookmark */; 533 | 03607C6513396C1500B62CA7 /* PBXTextBookmark */ = 03607C6513396C1500B62CA7 /* PBXTextBookmark */; 534 | 03607C6613396C1500B62CA7 /* PBXTextBookmark */ = 03607C6613396C1500B62CA7 /* PBXTextBookmark */; 535 | }; 536 | sourceControlManager = 03725B401289365700396899 /* Source Control */; 537 | userBuildSettings = { 538 | }; 539 | }; 540 | 29B97316FDCFA39411CA2CEA /* main.m */ = { 541 | uiCtxt = { 542 | sepNavIntBoundsRect = "{{0, 0}, {875, 540}}"; 543 | sepNavSelRange = "{0, 0}"; 544 | sepNavVisRange = "{0, 355}"; 545 | }; 546 | }; 547 | 32CA4F630368D1EE00C91783 /* MobileSignal_Prefix.pch */ = { 548 | uiCtxt = { 549 | sepNavIntBoundsRect = "{{0, 0}, {1082, 195}}"; 550 | sepNavSelRange = "{330, 0}"; 551 | sepNavVisRange = "{0, 330}"; 552 | }; 553 | }; 554 | } 555 | -------------------------------------------------------------------------------- /MobileSignal.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 034F2AFA16CBC194006B56F8 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 034F2AF916CBC194006B56F8 /* Default-568h@2x.png */; }; 11 | 035092BD129BA2B0007EBDAF /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 035092BC129BA2B0007EBDAF /* CoreLocation.framework */; }; 12 | 035092F4129BA8D8007EBDAF /* MapKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 035092F3129BA8D8007EBDAF /* MapKit.framework */; }; 13 | 037E6AE815AB305700833F6B /* UIApplication+MS.m in Sources */ = {isa = PBXBuildFile; fileRef = 037E6AE715AB305700833F6B /* UIApplication+MS.m */; }; 14 | 03C79AD412ABF6430081BD3A /* MSPolylineWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 03C79AD312ABF6430081BD3A /* MSPolylineWrapper.m */; }; 15 | 03C79B4112ABFB750081BD3A /* UIColor+MS.m in Sources */ = {isa = PBXBuildFile; fileRef = 03C79B4012ABFB750081BD3A /* UIColor+MS.m */; }; 16 | 03C79B7612ABFE6A0081BD3A /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 03C79B7412ABFE6A0081BD3A /* Icon.png */; }; 17 | 03C79B7712ABFE6A0081BD3A /* Icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 03C79B7512ABFE6A0081BD3A /* Icon@2x.png */; }; 18 | 03E0DE7012976BDA000D33D3 /* MSChartView.m in Sources */ = {isa = PBXBuildFile; fileRef = 03E0DE6F12976BDA000D33D3 /* MSChartView.m */; }; 19 | 03F4AAFC12926D6D000F5EED /* Measure.m in Sources */ = {isa = PBXBuildFile; fileRef = 03F4AAFB12926D6D000F5EED /* Measure.m */; }; 20 | 03F72650128CA312003D77E6 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03F7264F128CA312003D77E6 /* QuartzCore.framework */; }; 21 | 1D3623260D0F684500981E51 /* MobileSignalAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* MobileSignalAppDelegate.m */; }; 22 | 1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; }; 23 | 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; 24 | 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; 25 | 280E754E0DD40C5E005A515E /* MainView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 280E754B0DD40C5E005A515E /* MainView.xib */; }; 26 | 280E754F0DD40C5E005A515E /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 280E754C0DD40C5E005A515E /* MainWindow.xib */; }; 27 | 288765590DF743DE002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765580DF743DE002DB57D /* CoreGraphics.framework */; }; 28 | 289233AE0DB2D0DB0083E9F9 /* MainViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 289233A90DB2D0DB0083E9F9 /* MainViewController.m */; }; 29 | /* End PBXBuildFile section */ 30 | 31 | /* Begin PBXFileReference section */ 32 | 0300AE901298675B00D87CEE /* UIStatusBarServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIStatusBarServer.h; sourceTree = ""; }; 33 | 034F2AF916CBC194006B56F8 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; 34 | 035092BC129BA2B0007EBDAF /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = System/Library/Frameworks/CoreLocation.framework; sourceTree = SDKROOT; }; 35 | 035092F3129BA8D8007EBDAF /* MapKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MapKit.framework; path = System/Library/Frameworks/MapKit.framework; sourceTree = SDKROOT; }; 36 | 037E6AE615AB305700833F6B /* UIApplication+MS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIApplication+MS.h"; sourceTree = ""; }; 37 | 037E6AE715AB305700833F6B /* UIApplication+MS.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIApplication+MS.m"; sourceTree = ""; }; 38 | 03C79AD212ABF6430081BD3A /* MSPolylineWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MSPolylineWrapper.h; sourceTree = ""; }; 39 | 03C79AD312ABF6430081BD3A /* MSPolylineWrapper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MSPolylineWrapper.m; sourceTree = ""; }; 40 | 03C79B3F12ABFB750081BD3A /* UIColor+MS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIColor+MS.h"; sourceTree = ""; }; 41 | 03C79B4012ABFB750081BD3A /* UIColor+MS.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIColor+MS.m"; sourceTree = ""; }; 42 | 03C79B7412ABFE6A0081BD3A /* Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Icon.png; sourceTree = ""; }; 43 | 03C79B7512ABFE6A0081BD3A /* Icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Icon@2x.png"; sourceTree = ""; }; 44 | 03E0DE6E12976BDA000D33D3 /* MSChartView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MSChartView.h; sourceTree = ""; }; 45 | 03E0DE6F12976BDA000D33D3 /* MSChartView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MSChartView.m; sourceTree = ""; }; 46 | 03F4AAFA12926D6D000F5EED /* Measure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Measure.h; sourceTree = ""; }; 47 | 03F4AAFB12926D6D000F5EED /* Measure.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Measure.m; sourceTree = ""; }; 48 | 03F7264F128CA312003D77E6 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; 49 | 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 50 | 1D3623240D0F684500981E51 /* MobileSignalAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MobileSignalAppDelegate.h; sourceTree = ""; }; 51 | 1D3623250D0F684500981E51 /* MobileSignalAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MobileSignalAppDelegate.m; sourceTree = ""; }; 52 | 1D6058910D05DD3D006BFB54 /* MobileSignal.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MobileSignal.app; sourceTree = BUILT_PRODUCTS_DIR; }; 53 | 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 54 | 280E754B0DD40C5E005A515E /* MainView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainView.xib; sourceTree = ""; }; 55 | 280E754C0DD40C5E005A515E /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow.xib; sourceTree = ""; }; 56 | 288765580DF743DE002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 57 | 289233A80DB2D0DB0083E9F9 /* MainViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MainViewController.h; path = Classes/MainViewController.h; sourceTree = ""; }; 58 | 289233A90DB2D0DB0083E9F9 /* MainViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MainViewController.m; path = Classes/MainViewController.m; sourceTree = ""; }; 59 | 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 60 | 32CA4F630368D1EE00C91783 /* MobileSignal_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MobileSignal_Prefix.pch; sourceTree = ""; }; 61 | 8D1107310486CEB800E47090 /* MobileSignal-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "MobileSignal-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; 62 | /* End PBXFileReference section */ 63 | 64 | /* Begin PBXFrameworksBuildPhase section */ 65 | 1D60588F0D05DD3D006BFB54 /* Frameworks */ = { 66 | isa = PBXFrameworksBuildPhase; 67 | buildActionMask = 2147483647; 68 | files = ( 69 | 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */, 70 | 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */, 71 | 288765590DF743DE002DB57D /* CoreGraphics.framework in Frameworks */, 72 | 03F72650128CA312003D77E6 /* QuartzCore.framework in Frameworks */, 73 | 035092BD129BA2B0007EBDAF /* CoreLocation.framework in Frameworks */, 74 | 035092F4129BA8D8007EBDAF /* MapKit.framework in Frameworks */, 75 | ); 76 | runOnlyForDeploymentPostprocessing = 0; 77 | }; 78 | /* End PBXFrameworksBuildPhase section */ 79 | 80 | /* Begin PBXGroup section */ 81 | 0300AE9A129867A300D87CEE /* UIKit+Private */ = { 82 | isa = PBXGroup; 83 | children = ( 84 | 0300AE901298675B00D87CEE /* UIStatusBarServer.h */, 85 | ); 86 | name = "UIKit+Private"; 87 | sourceTree = ""; 88 | }; 89 | 080E96DDFE201D6D7F000001 /* Application Delegate */ = { 90 | isa = PBXGroup; 91 | children = ( 92 | 1D3623240D0F684500981E51 /* MobileSignalAppDelegate.h */, 93 | 1D3623250D0F684500981E51 /* MobileSignalAppDelegate.m */, 94 | 037E6AE615AB305700833F6B /* UIApplication+MS.h */, 95 | 037E6AE715AB305700833F6B /* UIApplication+MS.m */, 96 | ); 97 | name = "Application Delegate"; 98 | path = Classes; 99 | sourceTree = ""; 100 | }; 101 | 19C28FACFE9D520D11CA2CBB /* Products */ = { 102 | isa = PBXGroup; 103 | children = ( 104 | 1D6058910D05DD3D006BFB54 /* MobileSignal.app */, 105 | ); 106 | name = Products; 107 | sourceTree = ""; 108 | }; 109 | 289233A00DB2D0730083E9F9 /* Main View */ = { 110 | isa = PBXGroup; 111 | children = ( 112 | 289233A80DB2D0DB0083E9F9 /* MainViewController.h */, 113 | 289233A90DB2D0DB0083E9F9 /* MainViewController.m */, 114 | 03E0DE6E12976BDA000D33D3 /* MSChartView.h */, 115 | 03E0DE6F12976BDA000D33D3 /* MSChartView.m */, 116 | ); 117 | name = "Main View"; 118 | sourceTree = ""; 119 | }; 120 | 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { 121 | isa = PBXGroup; 122 | children = ( 123 | 034F2AF916CBC194006B56F8 /* Default-568h@2x.png */, 124 | 0300AE9A129867A300D87CEE /* UIKit+Private */, 125 | 03F4AAFA12926D6D000F5EED /* Measure.h */, 126 | 03F4AAFB12926D6D000F5EED /* Measure.m */, 127 | 03C79AD212ABF6430081BD3A /* MSPolylineWrapper.h */, 128 | 03C79AD312ABF6430081BD3A /* MSPolylineWrapper.m */, 129 | 289233A00DB2D0730083E9F9 /* Main View */, 130 | 080E96DDFE201D6D7F000001 /* Application Delegate */, 131 | 29B97315FDCFA39411CA2CEA /* Other Sources */, 132 | 29B97317FDCFA39411CA2CEA /* Resources */, 133 | 29B97323FDCFA39411CA2CEA /* Frameworks */, 134 | 19C28FACFE9D520D11CA2CBB /* Products */, 135 | 03C79B3F12ABFB750081BD3A /* UIColor+MS.h */, 136 | 03C79B4012ABFB750081BD3A /* UIColor+MS.m */, 137 | ); 138 | name = CustomTemplate; 139 | sourceTree = ""; 140 | }; 141 | 29B97315FDCFA39411CA2CEA /* Other Sources */ = { 142 | isa = PBXGroup; 143 | children = ( 144 | 32CA4F630368D1EE00C91783 /* MobileSignal_Prefix.pch */, 145 | 29B97316FDCFA39411CA2CEA /* main.m */, 146 | ); 147 | name = "Other Sources"; 148 | sourceTree = ""; 149 | }; 150 | 29B97317FDCFA39411CA2CEA /* Resources */ = { 151 | isa = PBXGroup; 152 | children = ( 153 | 03C79B7412ABFE6A0081BD3A /* Icon.png */, 154 | 03C79B7512ABFE6A0081BD3A /* Icon@2x.png */, 155 | 280E754B0DD40C5E005A515E /* MainView.xib */, 156 | 280E754C0DD40C5E005A515E /* MainWindow.xib */, 157 | 8D1107310486CEB800E47090 /* MobileSignal-Info.plist */, 158 | ); 159 | name = Resources; 160 | sourceTree = ""; 161 | }; 162 | 29B97323FDCFA39411CA2CEA /* Frameworks */ = { 163 | isa = PBXGroup; 164 | children = ( 165 | 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */, 166 | 1D30AB110D05D00D00671497 /* Foundation.framework */, 167 | 288765580DF743DE002DB57D /* CoreGraphics.framework */, 168 | 03F7264F128CA312003D77E6 /* QuartzCore.framework */, 169 | 035092BC129BA2B0007EBDAF /* CoreLocation.framework */, 170 | 035092F3129BA8D8007EBDAF /* MapKit.framework */, 171 | ); 172 | name = Frameworks; 173 | sourceTree = ""; 174 | }; 175 | /* End PBXGroup section */ 176 | 177 | /* Begin PBXNativeTarget section */ 178 | 1D6058900D05DD3D006BFB54 /* MobileSignal */ = { 179 | isa = PBXNativeTarget; 180 | buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "MobileSignal" */; 181 | buildPhases = ( 182 | 1D60588D0D05DD3D006BFB54 /* Resources */, 183 | 1D60588E0D05DD3D006BFB54 /* Sources */, 184 | 1D60588F0D05DD3D006BFB54 /* Frameworks */, 185 | ); 186 | buildRules = ( 187 | ); 188 | dependencies = ( 189 | ); 190 | name = MobileSignal; 191 | productName = MobileSignal; 192 | productReference = 1D6058910D05DD3D006BFB54 /* MobileSignal.app */; 193 | productType = "com.apple.product-type.application"; 194 | }; 195 | /* End PBXNativeTarget section */ 196 | 197 | /* Begin PBXProject section */ 198 | 29B97313FDCFA39411CA2CEA /* Project object */ = { 199 | isa = PBXProject; 200 | buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "MobileSignal" */; 201 | compatibilityVersion = "Xcode 3.2"; 202 | developmentRegion = English; 203 | hasScannedForEncodings = 1; 204 | knownRegions = ( 205 | English, 206 | Japanese, 207 | French, 208 | German, 209 | en, 210 | ); 211 | mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */; 212 | projectDirPath = ""; 213 | projectRoot = ""; 214 | targets = ( 215 | 1D6058900D05DD3D006BFB54 /* MobileSignal */, 216 | ); 217 | }; 218 | /* End PBXProject section */ 219 | 220 | /* Begin PBXResourcesBuildPhase section */ 221 | 1D60588D0D05DD3D006BFB54 /* Resources */ = { 222 | isa = PBXResourcesBuildPhase; 223 | buildActionMask = 2147483647; 224 | files = ( 225 | 280E754E0DD40C5E005A515E /* MainView.xib in Resources */, 226 | 280E754F0DD40C5E005A515E /* MainWindow.xib in Resources */, 227 | 03C79B7612ABFE6A0081BD3A /* Icon.png in Resources */, 228 | 03C79B7712ABFE6A0081BD3A /* Icon@2x.png in Resources */, 229 | 034F2AFA16CBC194006B56F8 /* Default-568h@2x.png in Resources */, 230 | ); 231 | runOnlyForDeploymentPostprocessing = 0; 232 | }; 233 | /* End PBXResourcesBuildPhase section */ 234 | 235 | /* Begin PBXSourcesBuildPhase section */ 236 | 1D60588E0D05DD3D006BFB54 /* Sources */ = { 237 | isa = PBXSourcesBuildPhase; 238 | buildActionMask = 2147483647; 239 | files = ( 240 | 1D60589B0D05DD56006BFB54 /* main.m in Sources */, 241 | 1D3623260D0F684500981E51 /* MobileSignalAppDelegate.m in Sources */, 242 | 289233AE0DB2D0DB0083E9F9 /* MainViewController.m in Sources */, 243 | 03F4AAFC12926D6D000F5EED /* Measure.m in Sources */, 244 | 03E0DE7012976BDA000D33D3 /* MSChartView.m in Sources */, 245 | 03C79AD412ABF6430081BD3A /* MSPolylineWrapper.m in Sources */, 246 | 03C79B4112ABFB750081BD3A /* UIColor+MS.m in Sources */, 247 | 037E6AE815AB305700833F6B /* UIApplication+MS.m in Sources */, 248 | ); 249 | runOnlyForDeploymentPostprocessing = 0; 250 | }; 251 | /* End PBXSourcesBuildPhase section */ 252 | 253 | /* Begin XCBuildConfiguration section */ 254 | 1D6058940D05DD3E006BFB54 /* Debug */ = { 255 | isa = XCBuildConfiguration; 256 | buildSettings = { 257 | COPY_PHASE_STRIP = NO; 258 | GCC_DYNAMIC_NO_PIC = NO; 259 | GCC_OPTIMIZATION_LEVEL = 0; 260 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 261 | GCC_PREFIX_HEADER = MobileSignal_Prefix.pch; 262 | INFOPLIST_FILE = "MobileSignal-Info.plist"; 263 | PRODUCT_NAME = MobileSignal; 264 | }; 265 | name = Debug; 266 | }; 267 | 1D6058950D05DD3E006BFB54 /* Release */ = { 268 | isa = XCBuildConfiguration; 269 | buildSettings = { 270 | ALWAYS_SEARCH_USER_PATHS = NO; 271 | COPY_PHASE_STRIP = YES; 272 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 273 | GCC_PREFIX_HEADER = MobileSignal_Prefix.pch; 274 | INFOPLIST_FILE = "MobileSignal-Info.plist"; 275 | PRODUCT_NAME = MobileSignal; 276 | VALIDATE_PRODUCT = YES; 277 | }; 278 | name = Release; 279 | }; 280 | C01FCF4F08A954540054247B /* Debug */ = { 281 | isa = XCBuildConfiguration; 282 | buildSettings = { 283 | ARCHS = "$(ARCHS_STANDARD_32_BIT)"; 284 | CODE_SIGN_IDENTITY = "iPhone Developer"; 285 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 286 | GCC_C_LANGUAGE_STANDARD = c99; 287 | GCC_VERSION = ""; 288 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 289 | GCC_WARN_UNUSED_VARIABLE = YES; 290 | PREBINDING = NO; 291 | PROVISIONING_PROFILE = ""; 292 | "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; 293 | SDKROOT = iphoneos; 294 | }; 295 | name = Debug; 296 | }; 297 | C01FCF5008A954540054247B /* Release */ = { 298 | isa = XCBuildConfiguration; 299 | buildSettings = { 300 | ARCHS = "$(ARCHS_STANDARD_32_BIT)"; 301 | CODE_SIGN_IDENTITY = "iPhone Developer"; 302 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 303 | GCC_C_LANGUAGE_STANDARD = c99; 304 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 305 | GCC_WARN_UNUSED_VARIABLE = YES; 306 | OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; 307 | PREBINDING = NO; 308 | PROVISIONING_PROFILE = ""; 309 | "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; 310 | SDKROOT = iphoneos; 311 | }; 312 | name = Release; 313 | }; 314 | /* End XCBuildConfiguration section */ 315 | 316 | /* Begin XCConfigurationList section */ 317 | 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "MobileSignal" */ = { 318 | isa = XCConfigurationList; 319 | buildConfigurations = ( 320 | 1D6058940D05DD3E006BFB54 /* Debug */, 321 | 1D6058950D05DD3E006BFB54 /* Release */, 322 | ); 323 | defaultConfigurationIsVisible = 0; 324 | defaultConfigurationName = Release; 325 | }; 326 | C01FCF4E08A954540054247B /* Build configuration list for PBXProject "MobileSignal" */ = { 327 | isa = XCConfigurationList; 328 | buildConfigurations = ( 329 | C01FCF4F08A954540054247B /* Debug */, 330 | C01FCF5008A954540054247B /* Release */, 331 | ); 332 | defaultConfigurationIsVisible = 0; 333 | defaultConfigurationName = Release; 334 | }; 335 | /* End XCConfigurationList section */ 336 | }; 337 | rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; 338 | } 339 | -------------------------------------------------------------------------------- /MainView.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1536 5 | 12A269 6 | 2818 7 | 1187 8 | 624.00 9 | 10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 11 | 1900 12 | 13 | 14 | YES 15 | IBMKMapView 16 | IBProxyObject 17 | IBUIButton 18 | IBUILabel 19 | IBUIView 20 | 21 | 22 | YES 23 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 24 | 25 | 26 | PluginDependencyRecalculationVersion 27 | 28 | 29 | 30 | YES 31 | 32 | IBFilesOwner 33 | IBCocoaTouchFramework 34 | 35 | 36 | IBFirstResponder 37 | IBCocoaTouchFramework 38 | 39 | 40 | 41 | 274 42 | 43 | YES 44 | 45 | 46 | 292 47 | {{20, 18}, {61, 21}} 48 | 49 | 50 | NO 51 | YES 52 | 7 53 | NO 54 | IBCocoaTouchFramework 55 | 56 | 3 57 | MQA 58 | 59 | 1 60 | 10 61 | name 62 | 63 | 1 64 | MCAwIDAAA 65 | 66 | 67 | 1 68 | 17 69 | 70 | 71 | Helvetica 72 | 17 73 | 16 74 | 75 | 2 76 | 77 | 78 | 79 | 292 80 | {{89, 18}, {52, 21}} 81 | 82 | 83 | NO 84 | YES 85 | 7 86 | NO 87 | IBCocoaTouchFramework 88 | 89 | 1 90 | 10 91 | net 92 | 93 | 94 | 95 | 2 96 | 97 | 98 | 99 | 292 100 | {{149, 18}, {76, 21}} 101 | 102 | 103 | NO 104 | YES 105 | 7 106 | NO 107 | IBCocoaTouchFramework 108 | 109 | 1 110 | 10 111 | signal 112 | 113 | 114 | 115 | 2 116 | 117 | 118 | 119 | 292 120 | {{20, 46}, {134, 21}} 121 | 122 | 123 | NO 124 | YES 125 | 7 126 | NO 127 | IBCocoaTouchFramework 128 | 129 | 1 130 | 10 131 | start date 132 | 133 | 134 | 135 | 2 136 | 137 | 138 | 139 | 292 140 | {{233, 18}, {44, 21}} 141 | 142 | 143 | NO 144 | YES 145 | 7 146 | NO 147 | IBCocoaTouchFramework 148 | 149 | 1 150 | 10 151 | N 152 | 153 | 154 | 155 | 2 156 | 157 | 158 | 159 | 268 160 | {{20, 316}, {280, 79}} 161 | 162 | 163 | 164 | 1 165 | MSAxIDAuNDAwMDAwMDA2AA 166 | 167 | IBCocoaTouchFramework 168 | 169 | 170 | 171 | 292 172 | {{162, 46}, {138, 21}} 173 | 174 | 175 | NO 176 | YES 177 | 7 178 | NO 179 | IBCocoaTouchFramework 180 | 181 | 1 182 | 10 183 | last date 184 | 185 | 186 | 187 | 2 188 | 189 | 190 | 191 | 268 192 | {{20, 403}, {61, 37}} 193 | 194 | 195 | NO 196 | IBCocoaTouchFramework 197 | 0 198 | 0 199 | 1 200 | Edge 201 | 202 | 203 | 1 204 | MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA 205 | 206 | 207 | 3 208 | MC41AA 209 | 210 | 211 | Helvetica-Bold 212 | Helvetica 213 | 2 214 | 15 215 | 216 | 217 | Helvetica-Bold 218 | 15 219 | 16 220 | 221 | 222 | 223 | 224 | 268 225 | {{89, 403}, {52, 37}} 226 | 227 | 228 | NO 229 | IBCocoaTouchFramework 230 | 0 231 | 0 232 | 1 233 | 3G 234 | 235 | 236 | 1 237 | MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 268 246 | {{149, 403}, {65, 37}} 247 | 248 | 249 | NO 250 | IBCocoaTouchFramework 251 | 0 252 | 0 253 | 1 254 | Clear 255 | 256 | 257 | 1 258 | MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 268 267 | {{222, 403}, {78, 37}} 268 | 269 | 270 | NO 271 | IBCocoaTouchFramework 272 | 0 273 | 0 274 | 1 275 | Display 276 | 277 | 278 | 1 279 | MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 278 288 | {{20, 75}, {280, 233}} 289 | 290 | 291 | YES 292 | YES 293 | IBCocoaTouchFramework 294 | 295 | 296 | {{0, 20}, {320, 460}} 297 | 298 | 299 | 300 | 1 301 | MSAxIDEAA 302 | 303 | NO 304 | 305 | IBCocoaTouchFramework 306 | 307 | 308 | 309 | 310 | YES 311 | 312 | 313 | view 314 | 315 | 316 | 317 | 35 318 | 319 | 320 | 321 | networkNameLabel 322 | 323 | 324 | 325 | 46 326 | 327 | 328 | 329 | networkTypeLabel 330 | 331 | 332 | 333 | 47 334 | 335 | 336 | 337 | signalStrengthLabel 338 | 339 | 340 | 341 | 48 342 | 343 | 344 | 345 | nbMeasuresLabel 346 | 347 | 348 | 349 | 56 350 | 351 | 352 | 353 | chartView 354 | 355 | 356 | 357 | 59 358 | 359 | 360 | 361 | startDateLabel 362 | 363 | 364 | 365 | 62 366 | 367 | 368 | 369 | lastDateLabel 370 | 371 | 372 | 373 | 63 374 | 375 | 376 | 377 | mapView 378 | 379 | 380 | 381 | 79 382 | 383 | 384 | 385 | dataSource 386 | 387 | 388 | 389 | 58 390 | 391 | 392 | 393 | addMeasureType1: 394 | 395 | 396 | 7 397 | 398 | 66 399 | 400 | 401 | 402 | addMeasureType2: 403 | 404 | 405 | 7 406 | 407 | 67 408 | 409 | 410 | 411 | clear: 412 | 413 | 414 | 7 415 | 416 | 70 417 | 418 | 419 | 420 | updateDisplay: 421 | 422 | 423 | 7 424 | 425 | 74 426 | 427 | 428 | 429 | delegate 430 | 431 | 432 | 433 | 78 434 | 435 | 436 | 437 | 438 | YES 439 | 440 | 0 441 | 442 | YES 443 | 444 | 445 | 446 | 447 | 448 | -1 449 | 450 | 451 | File's Owner 452 | 453 | 454 | -2 455 | 456 | 457 | 458 | 459 | 34 460 | 461 | 462 | YES 463 | 464 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 476 | 477 | 478 | 479 | 39 480 | 481 | 482 | 483 | 484 | 41 485 | 486 | 487 | 488 | 489 | 42 490 | 491 | 492 | 493 | 494 | 49 495 | 496 | 497 | 498 | 499 | 54 500 | 501 | 502 | 503 | 504 | 57 505 | 506 | 507 | 508 | 509 | 60 510 | 511 | 512 | 513 | 514 | 64 515 | 516 | 517 | 518 | 519 | 65 520 | 521 | 522 | 523 | 524 | 68 525 | 526 | 527 | 528 | 529 | 71 530 | 531 | 532 | 533 | 534 | 75 535 | 536 | 537 | 538 | 539 | 540 | 541 | YES 542 | 543 | YES 544 | -1.CustomClassName 545 | -1.IBPluginDependency 546 | -2.CustomClassName 547 | -2.IBPluginDependency 548 | 34.IBPluginDependency 549 | 39.IBPluginDependency 550 | 41.IBPluginDependency 551 | 42.IBPluginDependency 552 | 49.IBPluginDependency 553 | 54.IBPluginDependency 554 | 57.CustomClassName 555 | 57.IBPluginDependency 556 | 60.IBPluginDependency 557 | 64.IBPluginDependency 558 | 65.IBPluginDependency 559 | 68.IBPluginDependency 560 | 71.IBPluginDependency 561 | 75.IBPluginDependency 562 | 563 | 564 | YES 565 | MainViewController 566 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 567 | UIResponder 568 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 569 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 570 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 571 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 572 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 573 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 574 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 575 | MSChartView 576 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 577 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 578 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 579 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 580 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 581 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 582 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 583 | 584 | 585 | 586 | YES 587 | 588 | 589 | 590 | 591 | 592 | YES 593 | 594 | 595 | 596 | 597 | 79 598 | 599 | 600 | 601 | YES 602 | 603 | MSChartView 604 | UIView 605 | 606 | dataSource 607 | NSObject 608 | 609 | 610 | dataSource 611 | 612 | dataSource 613 | NSObject 614 | 615 | 616 | 617 | IBProjectSource 618 | ./Classes/MSChartView.h 619 | 620 | 621 | 622 | MainViewController 623 | UIViewController 624 | 625 | YES 626 | 627 | YES 628 | addMeasureType1: 629 | addMeasureType2: 630 | clear: 631 | showInfo: 632 | updateDisplay: 633 | 634 | 635 | YES 636 | id 637 | id 638 | id 639 | id 640 | id 641 | 642 | 643 | 644 | YES 645 | 646 | YES 647 | addMeasureType1: 648 | addMeasureType2: 649 | clear: 650 | showInfo: 651 | updateDisplay: 652 | 653 | 654 | YES 655 | 656 | addMeasureType1: 657 | id 658 | 659 | 660 | addMeasureType2: 661 | id 662 | 663 | 664 | clear: 665 | id 666 | 667 | 668 | showInfo: 669 | id 670 | 671 | 672 | updateDisplay: 673 | id 674 | 675 | 676 | 677 | 678 | YES 679 | 680 | YES 681 | chartView 682 | lastDateLabel 683 | mapView 684 | nbMeasuresLabel 685 | networkNameLabel 686 | networkTypeLabel 687 | signalStrengthLabel 688 | startDateLabel 689 | 690 | 691 | YES 692 | MSChartView 693 | UILabel 694 | MKMapView 695 | UILabel 696 | UILabel 697 | UILabel 698 | UILabel 699 | UILabel 700 | 701 | 702 | 703 | YES 704 | 705 | YES 706 | chartView 707 | lastDateLabel 708 | mapView 709 | nbMeasuresLabel 710 | networkNameLabel 711 | networkTypeLabel 712 | signalStrengthLabel 713 | startDateLabel 714 | 715 | 716 | YES 717 | 718 | chartView 719 | MSChartView 720 | 721 | 722 | lastDateLabel 723 | UILabel 724 | 725 | 726 | mapView 727 | MKMapView 728 | 729 | 730 | nbMeasuresLabel 731 | UILabel 732 | 733 | 734 | networkNameLabel 735 | UILabel 736 | 737 | 738 | networkTypeLabel 739 | UILabel 740 | 741 | 742 | signalStrengthLabel 743 | UILabel 744 | 745 | 746 | startDateLabel 747 | UILabel 748 | 749 | 750 | 751 | 752 | IBProjectSource 753 | ./Classes/MainViewController.h 754 | 755 | 756 | 757 | 758 | 0 759 | IBCocoaTouchFramework 760 | 761 | com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS 762 | 763 | 764 | 765 | com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 766 | 767 | 768 | YES 769 | 3 770 | 1900 771 | 772 | 773 | -------------------------------------------------------------------------------- /MobileSignal.xcodeproj/nst.perspectivev3: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ActivePerspectiveName 6 | Project 7 | AllowedModules 8 | 9 | 10 | BundleLoadPath 11 | 12 | MaxInstances 13 | n 14 | Module 15 | PBXSmartGroupTreeModule 16 | Name 17 | Groups and Files Outline View 18 | 19 | 20 | BundleLoadPath 21 | 22 | MaxInstances 23 | n 24 | Module 25 | PBXNavigatorGroup 26 | Name 27 | Editor 28 | 29 | 30 | BundleLoadPath 31 | 32 | MaxInstances 33 | n 34 | Module 35 | XCTaskListModule 36 | Name 37 | Task List 38 | 39 | 40 | BundleLoadPath 41 | 42 | MaxInstances 43 | n 44 | Module 45 | XCDetailModule 46 | Name 47 | File and Smart Group Detail Viewer 48 | 49 | 50 | BundleLoadPath 51 | 52 | MaxInstances 53 | 1 54 | Module 55 | PBXBuildResultsModule 56 | Name 57 | Detailed Build Results Viewer 58 | 59 | 60 | BundleLoadPath 61 | 62 | MaxInstances 63 | 1 64 | Module 65 | PBXProjectFindModule 66 | Name 67 | Project Batch Find Tool 68 | 69 | 70 | BundleLoadPath 71 | 72 | MaxInstances 73 | n 74 | Module 75 | XCProjectFormatConflictsModule 76 | Name 77 | Project Format Conflicts List 78 | 79 | 80 | BundleLoadPath 81 | 82 | MaxInstances 83 | n 84 | Module 85 | PBXBookmarksModule 86 | Name 87 | Bookmarks Tool 88 | 89 | 90 | BundleLoadPath 91 | 92 | MaxInstances 93 | n 94 | Module 95 | PBXClassBrowserModule 96 | Name 97 | Class Browser 98 | 99 | 100 | BundleLoadPath 101 | 102 | MaxInstances 103 | n 104 | Module 105 | PBXCVSModule 106 | Name 107 | Source Code Control Tool 108 | 109 | 110 | BundleLoadPath 111 | 112 | MaxInstances 113 | n 114 | Module 115 | PBXDebugBreakpointsModule 116 | Name 117 | Debug Breakpoints Tool 118 | 119 | 120 | BundleLoadPath 121 | 122 | MaxInstances 123 | n 124 | Module 125 | XCDockableInspector 126 | Name 127 | Inspector 128 | 129 | 130 | BundleLoadPath 131 | 132 | MaxInstances 133 | n 134 | Module 135 | PBXOpenQuicklyModule 136 | Name 137 | Open Quickly Tool 138 | 139 | 140 | BundleLoadPath 141 | 142 | MaxInstances 143 | 1 144 | Module 145 | PBXDebugSessionModule 146 | Name 147 | Debugger 148 | 149 | 150 | BundleLoadPath 151 | 152 | MaxInstances 153 | 1 154 | Module 155 | PBXDebugCLIModule 156 | Name 157 | Debug Console 158 | 159 | 160 | BundleLoadPath 161 | 162 | MaxInstances 163 | n 164 | Module 165 | XCSnapshotModule 166 | Name 167 | Snapshots Tool 168 | 169 | 170 | BundlePath 171 | /Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources 172 | Description 173 | AIODescriptionKey 174 | DockingSystemVisible 175 | 176 | Extension 177 | perspectivev3 178 | FavBarConfig 179 | 180 | PBXProjectModuleGUID 181 | 03725B3F1289365700396899 182 | XCBarModuleItemNames 183 | 184 | XCBarModuleItems 185 | 186 | 187 | FirstTimeWindowDisplayed 188 | 189 | Identifier 190 | com.apple.perspectives.project.defaultV3 191 | MajorVersion 192 | 34 193 | MinorVersion 194 | 0 195 | Name 196 | All-In-One 197 | Notifications 198 | 199 | 200 | XCObserverAutoDisconnectKey 201 | 202 | XCObserverDefintionKey 203 | 204 | XCObserverFactoryKey 205 | XCPerspectivesSpecificationIdentifier 206 | XCObserverGUIDKey 207 | XCObserverProjectIdentifier 208 | XCObserverNotificationKey 209 | PBXStatusBuildStateMessageNotification 210 | XCObserverTargetKey 211 | XCMainBuildResultsModuleGUID 212 | XCObserverTriggerKey 213 | awakenModuleWithObserver: 214 | XCObserverValidationKey 215 | 216 | 217 | 218 | OpenEditors 219 | 220 | 221 | Content 222 | 223 | PBXProjectModuleGUID 224 | 03D6C9C412ACD2DA004C7967 225 | PBXProjectModuleLabel 226 | Measure.m 227 | PBXSplitModuleInNavigatorKey 228 | 229 | Split0 230 | 231 | PBXProjectModuleGUID 232 | 03D6C9C512ACD2DA004C7967 233 | PBXProjectModuleLabel 234 | Measure.m 235 | _historyCapacity 236 | 10 237 | bookmark 238 | 03607C6313396C1500B62CA7 239 | history 240 | 241 | 03424FCC1338D235006D254D 242 | 243 | 244 | SplitCount 245 | 1 246 | 247 | StatusBarVisibility 248 | 249 | 250 | Geometry 251 | 252 | Frame 253 | {{0, 20}, {994, 729}} 254 | PBXModuleWindowStatusBarHidden2 255 | 256 | RubberWindowFrame 257 | 233 108 994 770 0 0 1440 878 258 | 259 | 260 | 261 | Content 262 | 263 | PBXProjectModuleGUID 264 | 03D6C9A212ACD24F004C7967 265 | PBXProjectModuleLabel 266 | UIStatusBarServerThread.h 267 | PBXSplitModuleInNavigatorKey 268 | 269 | Split0 270 | 271 | PBXProjectModuleGUID 272 | 03D6C9A312ACD24F004C7967 273 | PBXProjectModuleLabel 274 | UIStatusBarServerThread.h 275 | _historyCapacity 276 | 10 277 | bookmark 278 | 03607C6413396C1500B62CA7 279 | history 280 | 281 | 03424FCD1338D235006D254D 282 | 283 | 284 | SplitCount 285 | 1 286 | 287 | StatusBarVisibility 288 | 289 | 290 | Geometry 291 | 292 | Frame 293 | {{0, 20}, {994, 729}} 294 | PBXModuleWindowStatusBarHidden2 295 | 296 | RubberWindowFrame 297 | 15 108 994 770 0 0 1440 878 298 | 299 | 300 | 301 | Content 302 | 303 | PBXProjectModuleGUID 304 | 03D6C9B812ACD2AD004C7967 305 | PBXProjectModuleLabel 306 | UIStatusBarServer.h 307 | PBXSplitModuleInNavigatorKey 308 | 309 | Split0 310 | 311 | PBXProjectModuleGUID 312 | 03D6C9B912ACD2AD004C7967 313 | PBXProjectModuleLabel 314 | UIStatusBarServer.h 315 | _historyCapacity 316 | 10 317 | bookmark 318 | 03607C6513396C1500B62CA7 319 | history 320 | 321 | 03424FCE1338D235006D254D 322 | 323 | 324 | SplitCount 325 | 1 326 | 327 | StatusBarVisibility 328 | 329 | 330 | Geometry 331 | 332 | Frame 333 | {{0, 20}, {994, 729}} 334 | PBXModuleWindowStatusBarHidden2 335 | 336 | RubberWindowFrame 337 | 15 108 994 770 0 0 1440 878 338 | 339 | 340 | 341 | Content 342 | 343 | PBXProjectModuleGUID 344 | 03D6C98912ACD145004C7967 345 | PBXProjectModuleLabel 346 | MainViewController.m 347 | PBXSplitModuleInNavigatorKey 348 | 349 | Split0 350 | 351 | PBXProjectModuleGUID 352 | 03D6C98A12ACD145004C7967 353 | PBXProjectModuleLabel 354 | MainViewController.m 355 | _historyCapacity 356 | 10 357 | bookmark 358 | 03607C6613396C1500B62CA7 359 | history 360 | 361 | 03424FCF1338D235006D254D 362 | 363 | 364 | SplitCount 365 | 1 366 | 367 | StatusBarVisibility 368 | 369 | 370 | Geometry 371 | 372 | Frame 373 | {{0, 20}, {994, 729}} 374 | PBXModuleWindowStatusBarHidden2 375 | 376 | RubberWindowFrame 377 | 15 108 994 770 0 0 1440 878 378 | 379 | 380 | 381 | PerspectiveWidths 382 | 383 | 1304 384 | 1304 385 | 386 | Perspectives 387 | 388 | 389 | ChosenToolbarItems 390 | 391 | XCToolbarPerspectiveControl 392 | NSToolbarSeparatorItem 393 | active-combo-popup 394 | active-target-popup 395 | action 396 | NSToolbarFlexibleSpaceItem 397 | debugger-enable-breakpoints 398 | build-and-go 399 | com.apple.ide.PBXToolbarStopButton 400 | get-info 401 | toggle-editor 402 | NSToolbarFlexibleSpaceItem 403 | com.apple.pbx.toolbar.searchfield 404 | 405 | ControllerClassBaseName 406 | 407 | IconName 408 | WindowOfProject 409 | Identifier 410 | perspective.project 411 | IsVertical 412 | 413 | Layout 414 | 415 | 416 | ContentConfiguration 417 | 418 | PBXBottomSmartGroupGIDs 419 | 420 | 1C37FBAC04509CD000000102 421 | 1C37FAAC04509CD000000102 422 | 1C37FABC05509CD000000102 423 | 1C37FABC05539CD112110102 424 | E2644B35053B69B200211256 425 | 1C37FABC04509CD000100104 426 | 1CC0EA4004350EF90044410B 427 | 1CC0EA4004350EF90041110B 428 | 1C77FABC04509CD000000102 429 | 430 | PBXProjectModuleGUID 431 | 1CA23ED40692098700951B8B 432 | PBXProjectModuleLabel 433 | Files 434 | PBXProjectStructureProvided 435 | yes 436 | PBXSmartGroupTreeModuleColumnData 437 | 438 | PBXSmartGroupTreeModuleColumnWidthsKey 439 | 440 | 185 441 | 442 | PBXSmartGroupTreeModuleColumnsKey_v4 443 | 444 | MainColumn 445 | 446 | 447 | PBXSmartGroupTreeModuleOutlineStateKey_v7 448 | 449 | PBXSmartGroupTreeModuleOutlineStateExpansionKey 450 | 451 | 29B97314FDCFA39411CA2CEA 452 | 0300AE9A129867A300D87CEE 453 | 289233A00DB2D0730083E9F9 454 | 080E96DDFE201D6D7F000001 455 | 29B97317FDCFA39411CA2CEA 456 | 19C28FACFE9D520D11CA2CBB 457 | 1C37FAAC04509CD000000102 458 | 1C37FABC05509CD000000102 459 | 1C77FABC04509CD000000102 460 | 461 | PBXSmartGroupTreeModuleOutlineStateSelectionKey 462 | 463 | 464 | 16 465 | 14 466 | 0 467 | 468 | 469 | PBXSmartGroupTreeModuleOutlineStateVisibleRectKey 470 | {{0, 0}, {185, 728}} 471 | 472 | PBXTopSmartGroupGIDs 473 | 474 | XCIncludePerspectivesSwitch 475 | 476 | 477 | GeometryConfiguration 478 | 479 | Frame 480 | {{0, 0}, {202, 746}} 481 | GroupTreeTableConfiguration 482 | 483 | MainColumn 484 | 185 485 | 486 | RubberWindowFrame 487 | 16 91 1304 787 0 0 1440 878 488 | 489 | Module 490 | PBXSmartGroupTreeModule 491 | Proportion 492 | 202pt 493 | 494 | 495 | Dock 496 | 497 | 498 | BecomeActive 499 | 500 | ContentConfiguration 501 | 502 | PBXProjectModuleGUID 503 | 03725B3A1289365700396899 504 | PBXProjectModuleLabel 505 | MobileSignalAppDelegate.m 506 | PBXSplitModuleInNavigatorKey 507 | 508 | Split0 509 | 510 | PBXProjectModuleGUID 511 | 03725B3B1289365700396899 512 | PBXProjectModuleLabel 513 | MobileSignalAppDelegate.m 514 | _historyCapacity 515 | 10 516 | bookmark 517 | 03607C6213396C1500B62CA7 518 | history 519 | 520 | 03424F8F1338D177006D254D 521 | 03424F901338D177006D254D 522 | 03424F911338D177006D254D 523 | 03424F941338D177006D254D 524 | 03424FBC1338D1F3006D254D 525 | 03607C3D1338D28C00B62CA7 526 | 03607C431338D2E200B62CA7 527 | 03607C551338D46D00B62CA7 528 | 03607C59133923E200B62CA7 529 | 03607C5A133923E200B62CA7 530 | 531 | 532 | SplitCount 533 | 1 534 | 535 | StatusBarVisibility 536 | 537 | XCSharingToken 538 | com.apple.Xcode.CommonNavigatorGroupSharingToken 539 | 540 | GeometryConfiguration 541 | 542 | Frame 543 | {{0, 0}, {1097, 530}} 544 | RubberWindowFrame 545 | 16 91 1304 787 0 0 1440 878 546 | 547 | Module 548 | PBXNavigatorGroup 549 | Proportion 550 | 530pt 551 | 552 | 553 | Proportion 554 | 211pt 555 | Tabs 556 | 557 | 558 | ContentConfiguration 559 | 560 | PBXProjectModuleGUID 561 | 1CA23EDF0692099D00951B8B 562 | PBXProjectModuleLabel 563 | Detail 564 | 565 | GeometryConfiguration 566 | 567 | Frame 568 | {{10, 27}, {1097, 184}} 569 | RubberWindowFrame 570 | 16 91 1304 787 0 0 1440 878 571 | 572 | Module 573 | XCDetailModule 574 | 575 | 576 | ContentConfiguration 577 | 578 | PBXProjectModuleGUID 579 | 1CA23EE00692099D00951B8B 580 | PBXProjectModuleLabel 581 | Project Find 582 | 583 | GeometryConfiguration 584 | 585 | Frame 586 | {{10, 27}, {1097, 63}} 587 | 588 | Module 589 | PBXProjectFindModule 590 | 591 | 592 | ContentConfiguration 593 | 594 | PBXCVSModuleFilterTypeKey 595 | 1032 596 | PBXProjectModuleGUID 597 | 1CA23EE10692099D00951B8B 598 | PBXProjectModuleLabel 599 | SCM Results 600 | 601 | GeometryConfiguration 602 | 603 | Frame 604 | {{10, 31}, {603, 297}} 605 | 606 | Module 607 | PBXCVSModule 608 | 609 | 610 | ContentConfiguration 611 | 612 | PBXProjectModuleGUID 613 | XCMainBuildResultsModuleGUID 614 | PBXProjectModuleLabel 615 | Build Results 616 | XCBuildResultsTrigger_Collapse 617 | 1021 618 | XCBuildResultsTrigger_Open 619 | 1010 620 | 621 | GeometryConfiguration 622 | 623 | Frame 624 | {{10, 27}, {1097, 184}} 625 | 626 | Module 627 | PBXBuildResultsModule 628 | 629 | 630 | 631 | 632 | Proportion 633 | 1097pt 634 | 635 | 636 | Name 637 | Project 638 | ServiceClasses 639 | 640 | XCModuleDock 641 | PBXSmartGroupTreeModule 642 | XCModuleDock 643 | PBXNavigatorGroup 644 | XCDockableTabModule 645 | XCDetailModule 646 | PBXProjectFindModule 647 | PBXCVSModule 648 | PBXBuildResultsModule 649 | 650 | TableOfContents 651 | 652 | 03607C2B1338D25600B62CA7 653 | 1CA23ED40692098700951B8B 654 | 03607C2C1338D25600B62CA7 655 | 03725B3A1289365700396899 656 | 03607C2D1338D25600B62CA7 657 | 1CA23EDF0692099D00951B8B 658 | 1CA23EE00692099D00951B8B 659 | 1CA23EE10692099D00951B8B 660 | XCMainBuildResultsModuleGUID 661 | 662 | ToolbarConfigUserDefaultsMinorVersion 663 | 2 664 | ToolbarConfiguration 665 | xcode.toolbar.config.defaultV3 666 | 667 | 668 | ChosenToolbarItems 669 | 670 | XCToolbarPerspectiveControl 671 | NSToolbarSeparatorItem 672 | active-combo-popup 673 | NSToolbarFlexibleSpaceItem 674 | debugger-enable-breakpoints 675 | build-and-go 676 | com.apple.ide.PBXToolbarStopButton 677 | debugger-restart-executable 678 | debugger-pause 679 | debugger-step-over 680 | debugger-step-into 681 | debugger-step-out 682 | NSToolbarFlexibleSpaceItem 683 | servicesModulebreakpoints 684 | debugger-show-console-window 685 | 686 | ControllerClassBaseName 687 | PBXDebugSessionModule 688 | IconName 689 | DebugTabIcon 690 | Identifier 691 | perspective.debug 692 | IsVertical 693 | 694 | Layout 695 | 696 | 697 | ContentConfiguration 698 | 699 | PBXProjectModuleGUID 700 | 1CCC7628064C1048000F2A68 701 | PBXProjectModuleLabel 702 | Debugger Console 703 | 704 | GeometryConfiguration 705 | 706 | Frame 707 | {{0, 0}, {1304, 150}} 708 | 709 | Module 710 | PBXDebugCLIModule 711 | Proportion 712 | 150pt 713 | 714 | 715 | ContentConfiguration 716 | 717 | Debugger 718 | 719 | HorizontalSplitView 720 | 721 | _collapsingFrameDimension 722 | 0.0 723 | _indexOfCollapsedView 724 | 0 725 | _percentageOfCollapsedView 726 | 0.0 727 | isCollapsed 728 | yes 729 | sizes 730 | 731 | {{0, 0}, {636, 293}} 732 | {{636, 0}, {668, 293}} 733 | 734 | 735 | VerticalSplitView 736 | 737 | _collapsingFrameDimension 738 | 0.0 739 | _indexOfCollapsedView 740 | 0 741 | _percentageOfCollapsedView 742 | 0.0 743 | isCollapsed 744 | yes 745 | sizes 746 | 747 | {{0, 0}, {1304, 293}} 748 | {{0, 293}, {1304, 298}} 749 | 750 | 751 | 752 | LauncherConfigVersion 753 | 8 754 | PBXProjectModuleGUID 755 | 1CCC7629064C1048000F2A68 756 | PBXProjectModuleLabel 757 | Debug 758 | 759 | GeometryConfiguration 760 | 761 | DebugConsoleVisible 762 | None 763 | DebugConsoleWindowFrame 764 | {{200, 200}, {500, 300}} 765 | DebugSTDIOWindowFrame 766 | {{200, 200}, {500, 300}} 767 | Frame 768 | {{0, 155}, {1304, 591}} 769 | PBXDebugSessionStackFrameViewKey 770 | 771 | DebugVariablesTableConfiguration 772 | 773 | Name 774 | 243 775 | Value 776 | 85 777 | Summary 778 | 315 779 | 780 | Frame 781 | {{636, 0}, {668, 293}} 782 | 783 | 784 | Module 785 | PBXDebugSessionModule 786 | Proportion 787 | 591pt 788 | 789 | 790 | Name 791 | Debug 792 | ServiceClasses 793 | 794 | XCModuleDock 795 | PBXDebugCLIModule 796 | PBXDebugSessionModule 797 | PBXDebugProcessAndThreadModule 798 | PBXDebugProcessViewModule 799 | PBXDebugThreadViewModule 800 | PBXDebugStackFrameViewModule 801 | PBXNavigatorGroup 802 | 803 | TableOfContents 804 | 805 | 03607C2E1338D25600B62CA7 806 | 1CCC7628064C1048000F2A68 807 | 1CCC7629064C1048000F2A68 808 | 03607C2F1338D25600B62CA7 809 | 03607C301338D25600B62CA7 810 | 03607C311338D25600B62CA7 811 | 03607C321338D25600B62CA7 812 | 03725B3A1289365700396899 813 | 814 | ToolbarConfigUserDefaultsMinorVersion 815 | 2 816 | ToolbarConfiguration 817 | xcode.toolbar.config.debugV3 818 | 819 | 820 | PerspectivesBarVisible 821 | 822 | ShelfIsVisible 823 | 824 | SourceDescription 825 | file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecification.xcperspec' 826 | StatusbarIsVisible 827 | 828 | TimeStamp 829 | 322530325.35211003 830 | ToolbarConfigUserDefaultsMinorVersion 831 | 2 832 | ToolbarDisplayMode 833 | 1 834 | ToolbarIsVisible 835 | 836 | ToolbarSizeMode 837 | 1 838 | Type 839 | Perspectives 840 | UpdateMessage 841 | 842 | WindowJustification 843 | 5 844 | WindowOrderList 845 | 846 | 03607C371338D25600B62CA7 847 | 03607C391338D25600B62CA7 848 | 03D6C98912ACD145004C7967 849 | 03D6C9B812ACD2AD004C7967 850 | 03D6C9A212ACD24F004C7967 851 | 03D6C9C412ACD2DA004C7967 852 | /Users/nst/Projects/MobileSignal/MobileSignal.xcodeproj 853 | 854 | WindowString 855 | 16 91 1304 787 0 0 1440 878 856 | WindowToolsV3 857 | 858 | 859 | Identifier 860 | windowTool.debugger 861 | Layout 862 | 863 | 864 | Dock 865 | 866 | 867 | ContentConfiguration 868 | 869 | Debugger 870 | 871 | HorizontalSplitView 872 | 873 | _collapsingFrameDimension 874 | 0.0 875 | _indexOfCollapsedView 876 | 0 877 | _percentageOfCollapsedView 878 | 0.0 879 | isCollapsed 880 | yes 881 | sizes 882 | 883 | {{0, 0}, {317, 164}} 884 | {{317, 0}, {377, 164}} 885 | 886 | 887 | VerticalSplitView 888 | 889 | _collapsingFrameDimension 890 | 0.0 891 | _indexOfCollapsedView 892 | 0 893 | _percentageOfCollapsedView 894 | 0.0 895 | isCollapsed 896 | yes 897 | sizes 898 | 899 | {{0, 0}, {694, 164}} 900 | {{0, 164}, {694, 216}} 901 | 902 | 903 | 904 | LauncherConfigVersion 905 | 8 906 | PBXProjectModuleGUID 907 | 1C162984064C10D400B95A72 908 | PBXProjectModuleLabel 909 | Debug - GLUTExamples (Underwater) 910 | 911 | GeometryConfiguration 912 | 913 | DebugConsoleDrawerSize 914 | {100, 120} 915 | DebugConsoleVisible 916 | None 917 | DebugConsoleWindowFrame 918 | {{200, 200}, {500, 300}} 919 | DebugSTDIOWindowFrame 920 | {{200, 200}, {500, 300}} 921 | Frame 922 | {{0, 0}, {694, 380}} 923 | RubberWindowFrame 924 | 321 238 694 422 0 0 1440 878 925 | 926 | Module 927 | PBXDebugSessionModule 928 | Proportion 929 | 100% 930 | 931 | 932 | Proportion 933 | 100% 934 | 935 | 936 | Name 937 | Debugger 938 | ServiceClasses 939 | 940 | PBXDebugSessionModule 941 | 942 | StatusbarIsVisible 943 | 1 944 | TableOfContents 945 | 946 | 1CD10A99069EF8BA00B06720 947 | 1C0AD2AB069F1E9B00FABCE6 948 | 1C162984064C10D400B95A72 949 | 1C0AD2AC069F1E9B00FABCE6 950 | 951 | ToolbarConfiguration 952 | xcode.toolbar.config.debugV3 953 | WindowString 954 | 321 238 694 422 0 0 1440 878 955 | WindowToolGUID 956 | 1CD10A99069EF8BA00B06720 957 | WindowToolIsVisible 958 | 0 959 | 960 | 961 | Identifier 962 | windowTool.build 963 | Layout 964 | 965 | 966 | Dock 967 | 968 | 969 | ContentConfiguration 970 | 971 | PBXProjectModuleGUID 972 | 1CD0528F0623707200166675 973 | PBXProjectModuleLabel 974 | <No Editor> 975 | PBXSplitModuleInNavigatorKey 976 | 977 | Split0 978 | 979 | PBXProjectModuleGUID 980 | 1CD052900623707200166675 981 | 982 | SplitCount 983 | 1 984 | 985 | StatusBarVisibility 986 | 1 987 | 988 | GeometryConfiguration 989 | 990 | Frame 991 | {{0, 0}, {500, 215}} 992 | RubberWindowFrame 993 | 192 257 500 500 0 0 1280 1002 994 | 995 | Module 996 | PBXNavigatorGroup 997 | Proportion 998 | 218pt 999 | 1000 | 1001 | BecomeActive 1002 | 1 1003 | ContentConfiguration 1004 | 1005 | PBXProjectModuleGUID 1006 | XCMainBuildResultsModuleGUID 1007 | PBXProjectModuleLabel 1008 | Build Results 1009 | 1010 | GeometryConfiguration 1011 | 1012 | Frame 1013 | {{0, 222}, {500, 236}} 1014 | RubberWindowFrame 1015 | 192 257 500 500 0 0 1280 1002 1016 | 1017 | Module 1018 | PBXBuildResultsModule 1019 | Proportion 1020 | 236pt 1021 | 1022 | 1023 | Proportion 1024 | 458pt 1025 | 1026 | 1027 | Name 1028 | Build Results 1029 | ServiceClasses 1030 | 1031 | PBXBuildResultsModule 1032 | 1033 | StatusbarIsVisible 1034 | 1 1035 | TableOfContents 1036 | 1037 | 1C78EAA5065D492600B07095 1038 | 1C78EAA6065D492600B07095 1039 | 1CD0528F0623707200166675 1040 | XCMainBuildResultsModuleGUID 1041 | 1042 | ToolbarConfiguration 1043 | xcode.toolbar.config.buildV3 1044 | WindowString 1045 | 192 257 500 500 0 0 1280 1002 1046 | 1047 | 1048 | Identifier 1049 | windowTool.find 1050 | Layout 1051 | 1052 | 1053 | Dock 1054 | 1055 | 1056 | Dock 1057 | 1058 | 1059 | ContentConfiguration 1060 | 1061 | PBXProjectModuleGUID 1062 | 1CDD528C0622207200134675 1063 | PBXProjectModuleLabel 1064 | <No Editor> 1065 | PBXSplitModuleInNavigatorKey 1066 | 1067 | Split0 1068 | 1069 | PBXProjectModuleGUID 1070 | 1CD0528D0623707200166675 1071 | 1072 | SplitCount 1073 | 1 1074 | 1075 | StatusBarVisibility 1076 | 1 1077 | 1078 | GeometryConfiguration 1079 | 1080 | Frame 1081 | {{0, 0}, {781, 167}} 1082 | RubberWindowFrame 1083 | 62 385 781 470 0 0 1440 878 1084 | 1085 | Module 1086 | PBXNavigatorGroup 1087 | Proportion 1088 | 781pt 1089 | 1090 | 1091 | Proportion 1092 | 50% 1093 | 1094 | 1095 | BecomeActive 1096 | 1 1097 | ContentConfiguration 1098 | 1099 | PBXProjectModuleGUID 1100 | 1CD0528E0623707200166675 1101 | PBXProjectModuleLabel 1102 | Project Find 1103 | 1104 | GeometryConfiguration 1105 | 1106 | Frame 1107 | {{8, 0}, {773, 254}} 1108 | RubberWindowFrame 1109 | 62 385 781 470 0 0 1440 878 1110 | 1111 | Module 1112 | PBXProjectFindModule 1113 | Proportion 1114 | 50% 1115 | 1116 | 1117 | Proportion 1118 | 428pt 1119 | 1120 | 1121 | Name 1122 | Project Find 1123 | ServiceClasses 1124 | 1125 | PBXProjectFindModule 1126 | 1127 | StatusbarIsVisible 1128 | 1 1129 | TableOfContents 1130 | 1131 | 1C530D57069F1CE1000CFCEE 1132 | 1C530D58069F1CE1000CFCEE 1133 | 1C530D59069F1CE1000CFCEE 1134 | 1CDD528C0622207200134675 1135 | 1C530D5A069F1CE1000CFCEE 1136 | 1CE0B1FE06471DED0097A5F4 1137 | 1CD0528E0623707200166675 1138 | 1139 | WindowString 1140 | 62 385 781 470 0 0 1440 878 1141 | WindowToolGUID 1142 | 1C530D57069F1CE1000CFCEE 1143 | WindowToolIsVisible 1144 | 0 1145 | 1146 | 1147 | Identifier 1148 | windowTool.snapshots 1149 | Layout 1150 | 1151 | 1152 | Dock 1153 | 1154 | 1155 | Module 1156 | XCSnapshotModule 1157 | Proportion 1158 | 100% 1159 | 1160 | 1161 | Proportion 1162 | 100% 1163 | 1164 | 1165 | Name 1166 | Snapshots 1167 | ServiceClasses 1168 | 1169 | XCSnapshotModule 1170 | 1171 | StatusbarIsVisible 1172 | Yes 1173 | ToolbarConfiguration 1174 | xcode.toolbar.config.snapshots 1175 | WindowString 1176 | 315 824 300 550 0 0 1440 878 1177 | WindowToolIsVisible 1178 | Yes 1179 | 1180 | 1181 | FirstTimeWindowDisplayed 1182 | 1183 | Identifier 1184 | windowTool.debuggerConsole 1185 | IsVertical 1186 | 1187 | Layout 1188 | 1189 | 1190 | Dock 1191 | 1192 | 1193 | ContentConfiguration 1194 | 1195 | PBXProjectModuleGUID 1196 | 1C78EAAC065D492600B07095 1197 | PBXProjectModuleLabel 1198 | Debugger Console 1199 | 1200 | GeometryConfiguration 1201 | 1202 | Frame 1203 | {{0, 0}, {440, 359}} 1204 | RubberWindowFrame 1205 | 450 455 440 400 0 0 1440 878 1206 | 1207 | Module 1208 | PBXDebugCLIModule 1209 | Proportion 1210 | 359pt 1211 | 1212 | 1213 | Proportion 1214 | 359pt 1215 | 1216 | 1217 | Name 1218 | Debugger Console 1219 | ServiceClasses 1220 | 1221 | PBXDebugCLIModule 1222 | 1223 | StatusbarIsVisible 1224 | 1225 | TableOfContents 1226 | 1227 | 1C530D5B069F1CE1000CFCEE 1228 | 03E0E29912979B8A000D33D3 1229 | 1C78EAAC065D492600B07095 1230 | 1231 | ToolbarConfiguration 1232 | xcode.toolbar.config.consoleV3 1233 | WindowString 1234 | 450 455 440 400 0 0 1440 878 1235 | WindowToolGUID 1236 | 1C530D5B069F1CE1000CFCEE 1237 | WindowToolIsVisible 1238 | 1239 | 1240 | 1241 | Identifier 1242 | windowTool.scm 1243 | Layout 1244 | 1245 | 1246 | Dock 1247 | 1248 | 1249 | ContentConfiguration 1250 | 1251 | PBXProjectModuleGUID 1252 | 1C78EAB2065D492600B07095 1253 | PBXProjectModuleLabel 1254 | <No Editor> 1255 | PBXSplitModuleInNavigatorKey 1256 | 1257 | Split0 1258 | 1259 | PBXProjectModuleGUID 1260 | 1C78EAB3065D492600B07095 1261 | 1262 | SplitCount 1263 | 1 1264 | 1265 | StatusBarVisibility 1266 | 1 1267 | 1268 | GeometryConfiguration 1269 | 1270 | Frame 1271 | {{0, 0}, {452, 0}} 1272 | RubberWindowFrame 1273 | 743 379 452 308 0 0 1280 1002 1274 | 1275 | Module 1276 | PBXNavigatorGroup 1277 | Proportion 1278 | 0pt 1279 | 1280 | 1281 | BecomeActive 1282 | 1 1283 | ContentConfiguration 1284 | 1285 | PBXProjectModuleGUID 1286 | 1CD052920623707200166675 1287 | PBXProjectModuleLabel 1288 | SCM 1289 | 1290 | GeometryConfiguration 1291 | 1292 | ConsoleFrame 1293 | {{0, 259}, {452, 0}} 1294 | Frame 1295 | {{0, 7}, {452, 259}} 1296 | RubberWindowFrame 1297 | 743 379 452 308 0 0 1280 1002 1298 | TableConfiguration 1299 | 1300 | Status 1301 | 30 1302 | FileName 1303 | 199 1304 | Path 1305 | 197.09500122070312 1306 | 1307 | TableFrame 1308 | {{0, 0}, {452, 250}} 1309 | 1310 | Module 1311 | PBXCVSModule 1312 | Proportion 1313 | 262pt 1314 | 1315 | 1316 | Proportion 1317 | 266pt 1318 | 1319 | 1320 | Name 1321 | SCM 1322 | ServiceClasses 1323 | 1324 | PBXCVSModule 1325 | 1326 | StatusbarIsVisible 1327 | 1 1328 | TableOfContents 1329 | 1330 | 1C78EAB4065D492600B07095 1331 | 1C78EAB5065D492600B07095 1332 | 1C78EAB2065D492600B07095 1333 | 1CD052920623707200166675 1334 | 1335 | ToolbarConfiguration 1336 | xcode.toolbar.config.scmV3 1337 | WindowString 1338 | 743 379 452 308 0 0 1280 1002 1339 | 1340 | 1341 | Identifier 1342 | windowTool.breakpoints 1343 | IsVertical 1344 | 0 1345 | Layout 1346 | 1347 | 1348 | Dock 1349 | 1350 | 1351 | BecomeActive 1352 | 1 1353 | ContentConfiguration 1354 | 1355 | PBXBottomSmartGroupGIDs 1356 | 1357 | 1C77FABC04509CD000000102 1358 | 1359 | PBXProjectModuleGUID 1360 | 1CE0B1FE06471DED0097A5F4 1361 | PBXProjectModuleLabel 1362 | Files 1363 | PBXProjectStructureProvided 1364 | no 1365 | PBXSmartGroupTreeModuleColumnData 1366 | 1367 | PBXSmartGroupTreeModuleColumnWidthsKey 1368 | 1369 | 168 1370 | 1371 | PBXSmartGroupTreeModuleColumnsKey_v4 1372 | 1373 | MainColumn 1374 | 1375 | 1376 | PBXSmartGroupTreeModuleOutlineStateKey_v7 1377 | 1378 | PBXSmartGroupTreeModuleOutlineStateExpansionKey 1379 | 1380 | 1C77FABC04509CD000000102 1381 | 1382 | PBXSmartGroupTreeModuleOutlineStateSelectionKey 1383 | 1384 | 1385 | 0 1386 | 1387 | 1388 | PBXSmartGroupTreeModuleOutlineStateVisibleRectKey 1389 | {{0, 0}, {168, 350}} 1390 | 1391 | PBXTopSmartGroupGIDs 1392 | 1393 | XCIncludePerspectivesSwitch 1394 | 0 1395 | 1396 | GeometryConfiguration 1397 | 1398 | Frame 1399 | {{0, 0}, {185, 368}} 1400 | GroupTreeTableConfiguration 1401 | 1402 | MainColumn 1403 | 168 1404 | 1405 | RubberWindowFrame 1406 | 315 424 744 409 0 0 1440 878 1407 | 1408 | Module 1409 | PBXSmartGroupTreeModule 1410 | Proportion 1411 | 185pt 1412 | 1413 | 1414 | ContentConfiguration 1415 | 1416 | PBXProjectModuleGUID 1417 | 1CA1AED706398EBD00589147 1418 | PBXProjectModuleLabel 1419 | Detail 1420 | 1421 | GeometryConfiguration 1422 | 1423 | Frame 1424 | {{190, 0}, {554, 368}} 1425 | RubberWindowFrame 1426 | 315 424 744 409 0 0 1440 878 1427 | 1428 | Module 1429 | XCDetailModule 1430 | Proportion 1431 | 554pt 1432 | 1433 | 1434 | Proportion 1435 | 368pt 1436 | 1437 | 1438 | MajorVersion 1439 | 3 1440 | MinorVersion 1441 | 0 1442 | Name 1443 | Breakpoints 1444 | ServiceClasses 1445 | 1446 | PBXSmartGroupTreeModule 1447 | XCDetailModule 1448 | 1449 | StatusbarIsVisible 1450 | 1 1451 | TableOfContents 1452 | 1453 | 1CDDB66807F98D9800BB5817 1454 | 1CDDB66907F98D9800BB5817 1455 | 1CE0B1FE06471DED0097A5F4 1456 | 1CA1AED706398EBD00589147 1457 | 1458 | ToolbarConfiguration 1459 | xcode.toolbar.config.breakpointsV3 1460 | WindowString 1461 | 315 424 744 409 0 0 1440 878 1462 | WindowToolGUID 1463 | 1CDDB66807F98D9800BB5817 1464 | WindowToolIsVisible 1465 | 1 1466 | 1467 | 1468 | Identifier 1469 | windowTool.debugAnimator 1470 | Layout 1471 | 1472 | 1473 | Dock 1474 | 1475 | 1476 | Module 1477 | PBXNavigatorGroup 1478 | Proportion 1479 | 100% 1480 | 1481 | 1482 | Proportion 1483 | 100% 1484 | 1485 | 1486 | Name 1487 | Debug Visualizer 1488 | ServiceClasses 1489 | 1490 | PBXNavigatorGroup 1491 | 1492 | StatusbarIsVisible 1493 | 1 1494 | ToolbarConfiguration 1495 | xcode.toolbar.config.debugAnimatorV3 1496 | WindowString 1497 | 100 100 700 500 0 0 1280 1002 1498 | 1499 | 1500 | Identifier 1501 | windowTool.bookmarks 1502 | Layout 1503 | 1504 | 1505 | Dock 1506 | 1507 | 1508 | Module 1509 | PBXBookmarksModule 1510 | Proportion 1511 | 166pt 1512 | 1513 | 1514 | Proportion 1515 | 166pt 1516 | 1517 | 1518 | Name 1519 | Bookmarks 1520 | ServiceClasses 1521 | 1522 | PBXBookmarksModule 1523 | 1524 | StatusbarIsVisible 1525 | 0 1526 | WindowString 1527 | 538 42 401 187 0 0 1280 1002 1528 | 1529 | 1530 | Identifier 1531 | windowTool.projectFormatConflicts 1532 | Layout 1533 | 1534 | 1535 | Dock 1536 | 1537 | 1538 | Module 1539 | XCProjectFormatConflictsModule 1540 | Proportion 1541 | 100% 1542 | 1543 | 1544 | Proportion 1545 | 100% 1546 | 1547 | 1548 | Name 1549 | Project Format Conflicts 1550 | ServiceClasses 1551 | 1552 | XCProjectFormatConflictsModule 1553 | 1554 | StatusbarIsVisible 1555 | 0 1556 | WindowContentMinSize 1557 | 450 300 1558 | WindowString 1559 | 50 850 472 307 0 0 1440 877 1560 | 1561 | 1562 | Identifier 1563 | windowTool.classBrowser 1564 | Layout 1565 | 1566 | 1567 | Dock 1568 | 1569 | 1570 | BecomeActive 1571 | 1 1572 | ContentConfiguration 1573 | 1574 | OptionsSetName 1575 | Hierarchy, all classes 1576 | PBXProjectModuleGUID 1577 | 1CA6456E063B45B4001379D8 1578 | PBXProjectModuleLabel 1579 | Class Browser - NSObject 1580 | 1581 | GeometryConfiguration 1582 | 1583 | ClassesFrame 1584 | {{0, 0}, {369, 96}} 1585 | ClassesTreeTableConfiguration 1586 | 1587 | PBXClassNameColumnIdentifier 1588 | 208 1589 | PBXClassBookColumnIdentifier 1590 | 22 1591 | 1592 | Frame 1593 | {{0, 0}, {616, 353}} 1594 | MembersFrame 1595 | {{0, 105}, {369, 395}} 1596 | MembersTreeTableConfiguration 1597 | 1598 | PBXMemberTypeIconColumnIdentifier 1599 | 22 1600 | PBXMemberNameColumnIdentifier 1601 | 216 1602 | PBXMemberTypeColumnIdentifier 1603 | 94 1604 | PBXMemberBookColumnIdentifier 1605 | 22 1606 | 1607 | PBXModuleWindowStatusBarHidden2 1608 | 1 1609 | RubberWindowFrame 1610 | 597 125 616 374 0 0 1280 1002 1611 | 1612 | Module 1613 | PBXClassBrowserModule 1614 | Proportion 1615 | 354pt 1616 | 1617 | 1618 | Proportion 1619 | 354pt 1620 | 1621 | 1622 | Name 1623 | Class Browser 1624 | ServiceClasses 1625 | 1626 | PBXClassBrowserModule 1627 | 1628 | StatusbarIsVisible 1629 | 0 1630 | TableOfContents 1631 | 1632 | 1C78EABA065D492600B07095 1633 | 1C78EABB065D492600B07095 1634 | 1CA6456E063B45B4001379D8 1635 | 1636 | ToolbarConfiguration 1637 | xcode.toolbar.config.classbrowser 1638 | WindowString 1639 | 597 125 616 374 0 0 1280 1002 1640 | 1641 | 1642 | FirstTimeWindowDisplayed 1643 | 1644 | Identifier 1645 | windowTool.refactoring 1646 | IncludeInToolsMenu 1647 | 0 1648 | IsVertical 1649 | 1650 | Layout 1651 | 1652 | 1653 | Dock 1654 | 1655 | 1656 | ContentConfiguration 1657 | 1658 | PBXProjectModuleGUID 1659 | 03725B831289BC7300396899 1660 | 1661 | GeometryConfiguration 1662 | 1663 | Frame 1664 | {{0, 0}, {500, 315}} 1665 | RubberWindowFrame 1666 | 514 499 500 356 0 0 1440 878 1667 | 1668 | Module 1669 | XCRefactoringModule 1670 | Proportion 1671 | 315pt 1672 | 1673 | 1674 | Proportion 1675 | 315pt 1676 | 1677 | 1678 | Name 1679 | Refactoring 1680 | ServiceClasses 1681 | 1682 | XCRefactoringModule 1683 | 1684 | StatusbarIsVisible 1685 | 1686 | TableOfContents 1687 | 1688 | 03725B841289BC7300396899 1689 | 03C79B0012ABF8F70081BD3A 1690 | 03725B831289BC7300396899 1691 | 1692 | WindowString 1693 | 514 499 500 356 0 0 1440 878 1694 | WindowToolGUID 1695 | 03725B841289BC7300396899 1696 | WindowToolIsVisible 1697 | 1698 | 1699 | 1700 | 1701 | 1702 | --------------------------------------------------------------------------------