Skip to content
Browse files

Implemented iterating through potential backup folders. Fixed up disp…

…lay issues and added documentation
  • Loading branch information...
1 parent 66d4234 commit d17613cbf7861cd4b43c42dcda0e2d7e49275f11 @petewarden committed Apr 16, 2011
View
18 English.lproj/Credits.html
@@ -0,0 +1,18 @@
+<html>
+<head>
+</head>
+<body>
+<center>
+<div>
+iPhoneTracker is an <a href="http://github.com/petewarden/iPhoneTracking">open-source project</a> that visualizes the location data that your iOS device is recording.
+</div>
+<div>
+<a href="http://github.com/petewarden/iPhoneTracking">http://github.com/petewarden/iPhoneTracking</a>
+</div>
+<br/>
+<div>
+Created by <a href="http://twitter.com/aallan">Alasdair Allan</a> and <a href="http://twitter.com/petewarden">Pete Warden</a> using the <a href="http://www.openstreetmap.org">OpenStreetMap</a> and <a href="http://www.openheatmap.com">OpenHeatMap</a> frameworks.
+</div>
+</body>
+</center>
+</html>
View
4,160 English.lproj/MainMenu.xib
777 additions, 3,383 deletions not shown because the diff is too large. Please use a local Git client to view these changes.
View
151 iPhoneTracking.xcodeproj/petewarden.mode1v3
@@ -229,6 +229,8 @@
<key>Layout</key>
<array>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -267,18 +269,20 @@
<string>59F0A32B13593AA200098746</string>
<string>080E96DDFE201D6D7F000001</string>
<string>29B97317FDCFA39411CA2CEA</string>
+ <string>089C165CFE840E0CC02AAC07</string>
<string>29B97323FDCFA39411CA2CEA</string>
<string>1058C7A0FEA54F0111CA2CBB</string>
<string>1058C7A2FEA54F0111CA2CBB</string>
+ <string>19C28FACFE9D520D11CA2CBB</string>
<string>1C37FBAC04509CD000000102</string>
+ <string>1C37FAAC04509CD000000102</string>
<string>1C37FABC05509CD000000102</string>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>16</integer>
- <integer>14</integer>
- <integer>0</integer>
+ <integer>33</integer>
+ <integer>32</integer>
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
@@ -315,36 +319,33 @@
<key>Dock</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>1CE0B20306471E060097A5F4</string>
<key>PBXProjectModuleLabel</key>
- <string>iPhoneTrackingAppDelegate.m</string>
+ <string>Credits.html</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>1CE0B20406471E060097A5F4</string>
<key>PBXProjectModuleLabel</key>
- <string>iPhoneTrackingAppDelegate.m</string>
+ <string>Credits.html</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>59F0A5BE135A346100098746</string>
+ <string>59C0BD5C135A536000378314</string>
<key>history</key>
<array>
- <string>59F0A34B13593DD300098746</string>
- <string>59F0A34C13593DD300098746</string>
- <string>59F0A34D13593DD300098746</string>
<string>59F0A34E13593DD300098746</string>
<string>59F0A37213593F3100098746</string>
<string>59F0A4911359770A00098746</string>
<string>59F0A51D135A037F00098746</string>
- <string>59F0A59C135A17E700098746</string>
+ <string>59F0A657135A534500098746</string>
+ <string>59F0A658135A534500098746</string>
+ <string>59F0A6A7135A534900098746</string>
</array>
</dict>
<key>SplitCount</key>
@@ -356,46 +357,44 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {642, 658}}</string>
+ <string>{{0, 0}, {617, 653}}</string>
<key>RubberWindowFrame</key>
<string>66 288 1645 890 0 0 1920 1178 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>642pt</string>
+ <string>617pt</string>
</dict>
<dict>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>1CE0B20306471E060097A5F4</string>
<key>PBXProjectModuleLabel</key>
- <string>index.html</string>
+ <string>iPhoneTrackingAppDelegate.h</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>1CE0B20406471E060097A5F4</string>
<key>PBXProjectModuleLabel</key>
- <string>index.html</string>
+ <string>iPhoneTrackingAppDelegate.h</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>59F0A5BF135A346100098746</string>
+ <string>59C0BD5D135A536000378314</string>
<key>history</key>
<array>
- <string>59F0A34B13593DD300098746</string>
<string>59F0A34C13593DD300098746</string>
<string>59F0A34E13593DD300098746</string>
<string>59F0A37513593F3100098746</string>
<string>59F0A3E1135950C000098746</string>
- <string>59F0A4961359770A00098746</string>
- <string>59F0A4981359770A00098746</string>
<string>59F0A523135A046B00098746</string>
- <string>59F0A54B135A099200098746</string>
- <string>59F0A59D135A17E700098746</string>
+ <string>59F0A5C9135A35CE00098746</string>
+ <string>59F0A5F7135A4B3700098746</string>
+ <string>59F0A6A8135A534900098746</string>
</array>
</dict>
<key>SplitCount</key>
@@ -407,18 +406,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{647, 0}, {642, 658}}</string>
+ <string>{{622, 0}, {667, 653}}</string>
<key>RubberWindowFrame</key>
<string>66 288 1645 890 0 0 1920 1178 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>642pt</string>
+ <string>667pt</string>
</dict>
</array>
<key>Proportion</key>
- <string>658pt</string>
+ <string>653pt</string>
</dict>
<dict>
<key>ContentConfiguration</key>
@@ -431,14 +430,14 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 663}, {1289, 186}}</string>
+ <string>{{0, 658}, {1289, 191}}</string>
<key>RubberWindowFrame</key>
<string>66 288 1645 890 0 0 1920 1178 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
<key>Proportion</key>
- <string>186pt</string>
+ <string>191pt</string>
</dict>
</array>
<key>Proportion</key>
@@ -459,10 +458,10 @@
</array>
<key>TableOfContents</key>
<array>
- <string>59F0A5A9135A180A00098746</string>
+ <string>59C0BD5E135A536000378314</string>
<string>1CE0B1FE06471DED0097A5F4</string>
- <string>59F0A5AA135A180A00098746</string>
- <string>59F0A5AB135A180A00098746</string>
+ <string>59C0BD5F135A536000378314</string>
+ <string>59C0BD60135A536000378314</string>
<string>1CE0B20306471E060097A5F4</string>
<string>1CE0B20306471E060097A5F4</string>
<string>1CE0B20506471E060097A5F4</string>
@@ -601,13 +600,13 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>59F0A5BB135A222100098746</string>
- <string>59F0A5B5135A180A00098746</string>
- <string>59F0A5B6135A180A00098746</string>
+ <string>59C0BD69135A536000378314</string>
+ <string>59C0BD6A135A536000378314</string>
+ <string>59C0BD6B135A536000378314</string>
<string>1C78EAAD065D492600B07095</string>
- <string>59F0A2C413591AB500098746</string>
<string>1CD10A99069EF8BA00B06720</string>
<string>/Users/petewarden/Projects/iPhoneTracking/iPhoneTracking.xcodeproj</string>
+ <string>59F0A2C413591AB500098746</string>
</array>
<key>WindowString</key>
<string>66 288 1645 890 0 0 1920 1178 </string>
@@ -640,14 +639,16 @@
<key>Frame</key>
<string>{{0, 0}, {1218, 466}}</string>
<key>RubberWindowFrame</key>
- <string>767 303 1218 748 0 0 1920 1178 </string>
+ <string>702 303 1218 748 0 0 1920 1178 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
<string>466pt</string>
</dict>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
@@ -664,7 +665,7 @@
<key>Frame</key>
<string>{{0, 471}, {1218, 236}}</string>
<key>RubberWindowFrame</key>
- <string>767 303 1218 748 0 0 1920 1178 </string>
+ <string>702 303 1218 748 0 0 1920 1178 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -687,7 +688,7 @@
<key>TableOfContents</key>
<array>
<string>59F0A2C413591AB500098746</string>
- <string>59F0A5AC135A180A00098746</string>
+ <string>59C0BD61135A536000378314</string>
<string>1CD0528F0623707200166675</string>
<string>XCMainBuildResultsModuleGUID</string>
</array>
@@ -696,11 +697,11 @@
<key>WindowContentMinSize</key>
<string>486 300</string>
<key>WindowString</key>
- <string>767 303 1218 748 0 0 1920 1178 </string>
+ <string>702 303 1218 748 0 0 1920 1178 </string>
<key>WindowToolGUID</key>
<string>59F0A2C413591AB500098746</string>
<key>WindowToolIsVisible</key>
- <false/>
+ <true/>
</dict>
<dict>
<key>FirstTimeWindowDisplayed</key>
@@ -731,8 +732,8 @@
<string>yes</string>
<key>sizes</key>
<array>
- <string>{{0, 0}, {397, 313}}</string>
- <string>{{397, 0}, {478, 313}}</string>
+ <string>{{0, 0}, {397, 319}}</string>
+ <string>{{397, 0}, {478, 319}}</string>
</array>
</dict>
<key>VerticalSplitView</key>
@@ -747,8 +748,8 @@
<string>yes</string>
<key>sizes</key>
<array>
- <string>{{0, 0}, {875, 313}}</string>
- <string>{{0, 313}, {875, 302}}</string>
+ <string>{{0, 0}, {875, 319}}</string>
+ <string>{{0, 319}, {875, 296}}</string>
</array>
</dict>
</dict>
@@ -781,7 +782,7 @@
<real>248</real>
</array>
<key>Frame</key>
- <string>{{397, 0}, {478, 313}}</string>
+ <string>{{397, 0}, {478, 319}}</string>
<key>RubberWindowFrame</key>
<string>905 289 875 656 0 0 1920 1178 </string>
</dict>
@@ -809,13 +810,13 @@
<key>TableOfContents</key>
<array>
<string>1CD10A99069EF8BA00B06720</string>
- <string>59F0A5AD135A180A00098746</string>
+ <string>59C0BD62135A536000378314</string>
<string>1C162984064C10D400B95A72</string>
- <string>59F0A5AE135A180A00098746</string>
- <string>59F0A5AF135A180A00098746</string>
- <string>59F0A5B0135A180A00098746</string>
- <string>59F0A5B1135A180A00098746</string>
- <string>59F0A5B2135A180A00098746</string>
+ <string>59C0BD63135A536000378314</string>
+ <string>59C0BD64135A536000378314</string>
+ <string>59C0BD65135A536000378314</string>
+ <string>59C0BD66135A536000378314</string>
+ <string>59C0BD67135A536000378314</string>
</array>
<key>ToolbarConfiguration</key>
<string>xcode.toolbar.config.debugV3</string>
@@ -824,11 +825,15 @@
<key>WindowToolGUID</key>
<string>1CD10A99069EF8BA00B06720</string>
<key>WindowToolIsVisible</key>
- <true/>
+ <false/>
</dict>
<dict>
+ <key>FirstTimeWindowDisplayed</key>
+ <false/>
<key>Identifier</key>
<string>windowTool.find</string>
+ <key>IsVertical</key>
+ <true/>
<key>Layout</key>
<array>
<dict>
@@ -843,26 +848,16 @@
<key>PBXProjectModuleGUID</key>
<string>1CDD528C0622207200134675</string>
<key>PBXProjectModuleLabel</key>
- <string>&lt;No Editor&gt;</string>
- <key>PBXSplitModuleInNavigatorKey</key>
- <dict>
- <key>Split0</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>1CD0528D0623707200166675</string>
- </dict>
- <key>SplitCount</key>
- <string>1</string>
- </dict>
+ <string></string>
<key>StatusBarVisibility</key>
- <integer>1</integer>
+ <true/>
</dict>
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {781, 167}}</string>
+ <string>{{0, 0}, {781, 212}}</string>
<key>RubberWindowFrame</key>
- <string>62 385 781 470 0 0 1440 878 </string>
+ <string>723 558 781 470 0 0 1920 1178 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
@@ -871,11 +866,11 @@
</dict>
</array>
<key>Proportion</key>
- <string>50%</string>
+ <string>212pt</string>
</dict>
<dict>
<key>BecomeActive</key>
- <integer>1</integer>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
@@ -886,18 +881,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{8, 0}, {773, 254}}</string>
+ <string>{{0, 217}, {781, 212}}</string>
<key>RubberWindowFrame</key>
- <string>62 385 781 470 0 0 1440 878 </string>
+ <string>723 558 781 470 0 0 1920 1178 </string>
</dict>
<key>Module</key>
<string>PBXProjectFindModule</string>
<key>Proportion</key>
- <string>50%</string>
+ <string>212pt</string>
</dict>
</array>
<key>Proportion</key>
- <string>428pt</string>
+ <string>429pt</string>
</dict>
</array>
<key>Name</key>
@@ -907,23 +902,21 @@
<string>PBXProjectFindModule</string>
</array>
<key>StatusbarIsVisible</key>
- <integer>1</integer>
+ <true/>
<key>TableOfContents</key>
<array>
<string>1C530D57069F1CE1000CFCEE</string>
- <string>1C530D58069F1CE1000CFCEE</string>
- <string>1C530D59069F1CE1000CFCEE</string>
+ <string>59F0A62D135A4E4C00098746</string>
+ <string>59F0A62E135A4E4C00098746</string>
<string>1CDD528C0622207200134675</string>
- <string>1C530D5A069F1CE1000CFCEE</string>
- <string>1CE0B1FE06471DED0097A5F4</string>
<string>1CD0528E0623707200166675</string>
</array>
<key>WindowString</key>
- <string>62 385 781 470 0 0 1440 878 </string>
+ <string>723 558 781 470 0 0 1920 1178 </string>
<key>WindowToolGUID</key>
<string>1C530D57069F1CE1000CFCEE</string>
<key>WindowToolIsVisible</key>
- <integer>0</integer>
+ <true/>
</dict>
<dict>
<key>Identifier</key>
@@ -977,7 +970,7 @@
<key>TableOfContents</key>
<array>
<string>1C78EAAD065D492600B07095</string>
- <string>59F0A5B3135A180A00098746</string>
+ <string>59C0BD68135A536000378314</string>
<string>1C78EAAC065D492600B07095</string>
</array>
<key>ToolbarConfiguration</key>
View
314 iPhoneTracking.xcodeproj/petewarden.pbxuser
@@ -2,40 +2,54 @@
{
089C165DFE840E0CC02AAC07 /* English */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1169, 411}}";
- sepNavSelRange = "{0, 0}";
+ sepNavIntBoundsRect = "{{0, 0}, {568, 603}}";
+ sepNavSelRange = "{45, 0}";
sepNavVisRange = "{0, 45}";
};
};
256AC3D80F4B6AC300CF3369 /* iPhoneTrackingAppDelegate.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {593, 608}}";
- sepNavSelRange = "{332, 0}";
- sepNavVisRange = "{0, 535}";
+ sepNavIntBoundsRect = "{{0, 0}, {628, 598}}";
+ sepNavSelRange = "{311, 0}";
+ sepNavVisRange = "{0, 592}";
};
};
256AC3D90F4B6AC300CF3369 /* iPhoneTrackingAppDelegate.m */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 2925}}";
- sepNavSelRange = "{5879, 0}";
- sepNavVisRange = "{5089, 1471}";
+ sepNavIntBoundsRect = "{{0, 0}, {1169, 3600}}";
+ sepNavSelRange = "{4287, 0}";
+ sepNavVisRange = "{3627, 823}";
};
};
29B97313FDCFA39411CA2CEA /* Project object */ = {
activeBuildConfigurationName = Debug;
- activeExecutable = 59F0A2AE13591A8200098746 /* iPhoneTracking */;
- activeTarget = 8D1107260486CEB800E47090 /* iPhoneTracking */;
+ activeExecutable = 59F0A2AE13591A8200098746 /* iPhoneTracker */;
+ activeTarget = 8D1107260486CEB800E47090 /* iPhoneTracker */;
addToTargets = (
- 8D1107260486CEB800E47090 /* iPhoneTracking */,
+ 8D1107260486CEB800E47090 /* iPhoneTracker */,
);
breakpoints = (
59F0A4B61359799100098746 /* objc_exception_throw */,
);
codeSenseManager = 59F0A2BD13591AA200098746 /* Code sense */;
executables = (
- 59F0A2AE13591A8200098746 /* iPhoneTracking */,
+ 59F0A2AE13591A8200098746 /* iPhoneTracker */,
);
perUserDictionary = {
+ PBXConfiguration.PBXFileTableDataSource3.PBXExecutablesDataSource = {
+ PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
+ PBXFileTableDataSourceColumnSortingKey = PBXExecutablesDataSource_NameID;
+ PBXFileTableDataSourceColumnWidthsKey = (
+ 22,
+ 300,
+ 938,
+ );
+ PBXFileTableDataSourceColumnsKey = (
+ PBXExecutablesDataSource_ActiveFlagID,
+ PBXExecutablesDataSource_NameID,
+ PBXExecutablesDataSource_CommentsID,
+ );
+ };
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
@@ -63,10 +77,10 @@
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
- 661,
+ 1010,
60,
20,
- 48.16259765625,
+ 48,
43,
43,
);
@@ -80,41 +94,54 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 324671491;
- PBXWorkspaceStateSaveDate = 324671491;
+ PBXPerProjectTemplateStateSaveDate = 324686678;
+ PBXWorkspaceStateSaveDate = 324686678;
};
perUserProjectItems = {
- 59F0A34B13593DD300098746 = 59F0A34B13593DD300098746 /* PBXTextBookmark */;
+ 59C0BD5C135A536000378314 /* PBXTextBookmark */ = 59C0BD5C135A536000378314 /* PBXTextBookmark */;
+ 59C0BD5D135A536000378314 /* PBXTextBookmark */ = 59C0BD5D135A536000378314 /* PBXTextBookmark */;
59F0A34C13593DD300098746 = 59F0A34C13593DD300098746 /* PlistBookmark */;
- 59F0A34D13593DD300098746 = 59F0A34D13593DD300098746 /* PBXTextBookmark */;
59F0A34E13593DD300098746 = 59F0A34E13593DD300098746 /* PBXTextBookmark */;
59F0A37213593F3100098746 = 59F0A37213593F3100098746 /* PBXTextBookmark */;
59F0A37513593F3100098746 = 59F0A37513593F3100098746 /* PBXTextBookmark */;
59F0A3E1135950C000098746 = 59F0A3E1135950C000098746 /* PBXTextBookmark */;
59F0A4911359770A00098746 = 59F0A4911359770A00098746 /* PBXTextBookmark */;
- 59F0A4961359770A00098746 = 59F0A4961359770A00098746 /* PBXTextBookmark */;
- 59F0A4981359770A00098746 = 59F0A4981359770A00098746 /* PBXTextBookmark */;
59F0A51D135A037F00098746 = 59F0A51D135A037F00098746 /* PBXTextBookmark */;
59F0A523135A046B00098746 = 59F0A523135A046B00098746 /* PBXTextBookmark */;
- 59F0A52C135A05BD00098746 = 59F0A52C135A05BD00098746 /* PBXTextBookmark */;
- 59F0A54B135A099200098746 = 59F0A54B135A099200098746 /* PBXTextBookmark */;
- 59F0A54C135A099200098746 = 59F0A54C135A099200098746 /* PBXTextBookmark */;
- 59F0A59C135A17E700098746 = 59F0A59C135A17E700098746 /* PBXTextBookmark */;
- 59F0A59D135A17E700098746 = 59F0A59D135A17E700098746 /* PBXTextBookmark */;
- 59F0A5A7135A180A00098746 /* PBXTextBookmark */ = 59F0A5A7135A180A00098746 /* PBXTextBookmark */;
- 59F0A5A8135A180A00098746 /* PBXTextBookmark */ = 59F0A5A8135A180A00098746 /* PBXTextBookmark */;
- 59F0A5B9135A222100098746 /* PBXTextBookmark */ = 59F0A5B9135A222100098746 /* PBXTextBookmark */;
- 59F0A5BA135A222100098746 /* PBXTextBookmark */ = 59F0A5BA135A222100098746 /* PBXTextBookmark */;
- 59F0A5BC135A344200098746 /* PBXTextBookmark */ = 59F0A5BC135A344200098746 /* PBXTextBookmark */;
- 59F0A5BD135A344200098746 /* PBXTextBookmark */ = 59F0A5BD135A344200098746 /* PBXTextBookmark */;
- 59F0A5BE135A346100098746 /* PBXTextBookmark */ = 59F0A5BE135A346100098746 /* PBXTextBookmark */;
- 59F0A5BF135A346100098746 /* PBXTextBookmark */ = 59F0A5BF135A346100098746 /* PBXTextBookmark */;
+ 59F0A5C9135A35CE00098746 = 59F0A5C9135A35CE00098746 /* PBXTextBookmark */;
+ 59F0A5F7135A4B3700098746 = 59F0A5F7135A4B3700098746 /* PBXTextBookmark */;
+ 59F0A638135A4F0C00098746 = 59F0A638135A4F0C00098746 /* PBXTextBookmark */;
+ 59F0A657135A534500098746 = 59F0A657135A534500098746 /* PBXTextBookmark */;
+ 59F0A658135A534500098746 = 59F0A658135A534500098746 /* PlistBookmark */;
+ 59F0A659135A534500098746 = 59F0A659135A534500098746 /* PBXTextBookmark */;
+ 59F0A6A7135A534900098746 = 59F0A6A7135A534900098746 /* PBXTextBookmark */;
+ 59F0A6A8135A534900098746 = 59F0A6A8135A534900098746 /* PBXTextBookmark */;
};
sourceControlManager = 59F0A2BC13591AA200098746 /* Source Control */;
userBuildSettings = {
};
};
- 59F0A2AE13591A8200098746 /* iPhoneTracking */ = {
+ 59C0BD5C135A536000378314 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 59F0A63C135A4FDC00098746 /* English */;
+ name = "Credits.html: 14";
+ rLen = 0;
+ rLoc = 605;
+ rType = 0;
+ vrLen = 639;
+ vrLoc = 0;
+ };
+ 59C0BD5D135A536000378314 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 256AC3D80F4B6AC300CF3369 /* iPhoneTrackingAppDelegate.h */;
+ name = "iPhoneTrackingAppDelegate.h: 17";
+ rLen = 0;
+ rLoc = 311;
+ rType = 0;
+ vrLen = 592;
+ vrLoc = 0;
+ };
+ 59F0A2AE13591A8200098746 /* iPhoneTracker */ = {
isa = PBXExecutable;
activeArgIndices = (
);
@@ -137,7 +164,7 @@
executableSystemSymbolLevel = 0;
executableUserSymbolLevel = 0;
libgmallocEnabled = 0;
- name = iPhoneTracking;
+ name = iPhoneTracker;
savedGlobals = {
};
showTypeColumn = 0;
@@ -162,9 +189,9 @@
};
59F0A3071359237800098746 /* index.html */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {782, 1245}}";
- sepNavSelRange = "{2156, 0}";
- sepNavVisRange = "{596, 883}";
+ sepNavIntBoundsRect = "{{0, 0}, {817, 1260}}";
+ sepNavSelRange = "{1401, 0}";
+ sepNavVisRange = "{1156, 1050}";
};
};
59F0A32C13593AA200098746 /* FMDatabase.h */ = {
@@ -188,16 +215,6 @@
sepNavVisRange = "{519, 1099}";
};
};
- 59F0A34B13593DD300098746 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 089C165DFE840E0CC02AAC07 /* English */;
- name = "InfoPlist.strings: 1";
- rLen = 0;
- rLoc = 0;
- rType = 0;
- vrLen = 45;
- vrLoc = 0;
- };
59F0A34C13593DD300098746 /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D1107310486CEB800E47090 /* iPhoneTracking-Info.plist */;
@@ -209,16 +226,6 @@
rLen = 0;
rLoc = 9223372036854775808;
};
- 59F0A34D13593DD300098746 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 59F0A3071359237800098746 /* index.html */;
- name = "index.html: 7";
- rLen = 0;
- rLoc = 1018;
- rType = 0;
- vrLen = 684;
- vrLoc = 0;
- };
59F0A34E13593DD300098746 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 59F0A32D13593AA200098746 /* FMDatabase.m */;
@@ -261,16 +268,16 @@
};
59F0A48E1359662F00098746 /* parsembdb.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {593, 608}}";
+ sepNavIntBoundsRect = "{{0, 0}, {618, 603}}";
sepNavSelRange = "{190, 0}";
sepNavVisRange = "{0, 190}";
};
};
59F0A48F1359662F00098746 /* parsembdb.m */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1169, 2775}}";
- sepNavSelRange = "{1932, 40}";
- sepNavVisRange = "{1359, 826}";
+ sepNavIntBoundsRect = "{{0, 0}, {826, 2910}}";
+ sepNavSelRange = "{2654, 0}";
+ sepNavVisRange = "{2242, 575}";
};
};
59F0A4911359770A00098746 /* PBXTextBookmark */ = {
@@ -283,26 +290,6 @@
vrLen = 456;
vrLoc = 0;
};
- 59F0A4961359770A00098746 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 59F0A48F1359662F00098746 /* parsembdb.m */;
- name = "parsembdb.m: 9";
- rLen = 0;
- rLoc = 92;
- rType = 0;
- vrLen = 200;
- vrLoc = 0;
- };
- 59F0A4981359770A00098746 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 59F0A48E1359662F00098746 /* parsembdb.h */;
- name = "parsembdb.h: 15";
- rLen = 0;
- rLoc = 190;
- rType = 0;
- vrLen = 190;
- vrLoc = 0;
- };
59F0A4B61359799100098746 /* objc_exception_throw */ = {
isa = PBXSymbolicBreakpoint;
actions = (
@@ -324,7 +311,7 @@
fRef = 59F0A48F1359662F00098746 /* parsembdb.m */;
name = "parsembdb.m: 64";
rLen = 0;
- rLoc = 1835;
+ rLoc = 1890;
rType = 0;
vrLen = 1289;
vrLoc = 1359;
@@ -339,140 +326,103 @@
vrLen = 1397;
vrLoc = 991;
};
- 59F0A52C135A05BD00098746 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 256AC3D90F4B6AC300CF3369 /* iPhoneTrackingAppDelegate.m */;
- name = "iPhoneTrackingAppDelegate.m: 140";
- rLen = 0;
- rLoc = 3701;
- rType = 0;
- vrLen = 1714;
- vrLoc = 3329;
- };
- 59F0A54B135A099200098746 /* PBXTextBookmark */ = {
+ 59F0A5C9135A35CE00098746 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 256AC3D80F4B6AC300CF3369 /* iPhoneTrackingAppDelegate.h */;
- name = "iPhoneTrackingAppDelegate.h: 17";
+ fRef = 59F0A48E1359662F00098746 /* parsembdb.h */;
+ name = "parsembdb.h: 15";
rLen = 0;
- rLoc = 332;
+ rLoc = 190;
rType = 0;
- vrLen = 535;
+ vrLen = 190;
vrLoc = 0;
};
- 59F0A54C135A099200098746 /* PBXTextBookmark */ = {
+ 59F0A5F7135A4B3700098746 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 59F0A3071359237800098746 /* index.html */;
- name = "index.html: 38";
- rLen = 0;
- rLoc = 1134;
- rType = 0;
- vrLen = 796;
- vrLoc = 890;
- };
- 59F0A59C135A17E700098746 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 256AC3D90F4B6AC300CF3369 /* iPhoneTrackingAppDelegate.m */;
- name = "iPhoneTrackingAppDelegate.m: 122";
- rLen = 0;
- rLoc = 3590;
- rType = 0;
- vrLen = 1625;
- vrLoc = 3026;
- };
- 59F0A59D135A17E700098746 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 59F0A3071359237800098746 /* index.html */;
- name = "index.html: 37";
+ fRef = 59F0A48F1359662F00098746 /* parsembdb.m */;
+ name = "parsembdb.m: 138";
rLen = 0;
- rLoc = 1124;
+ rLoc = 4709;
rType = 0;
- vrLen = 950;
- vrLoc = 596;
+ vrLen = 1573;
+ vrLoc = 3716;
};
- 59F0A5A7135A180A00098746 /* PBXTextBookmark */ = {
+ 59F0A638135A4F0C00098746 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 256AC3D90F4B6AC300CF3369 /* iPhoneTrackingAppDelegate.m */;
- name = "iPhoneTrackingAppDelegate.m: 123";
+ fRef = 256AC3D80F4B6AC300CF3369 /* iPhoneTrackingAppDelegate.h */;
+ name = "iPhoneTrackingAppDelegate.h: 16";
rLen = 0;
- rLoc = 3590;
+ rLoc = 300;
rType = 0;
- vrLen = 1568;
- vrLoc = 3024;
+ vrLen = 592;
+ vrLoc = 0;
};
- 59F0A5A8135A180A00098746 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 59F0A3071359237800098746 /* index.html */;
- name = "index.html: 37";
- rLen = 0;
- rLoc = 1124;
- rType = 0;
- vrLen = 883;
- vrLoc = 596;
+ 59F0A63C135A4FDC00098746 /* English */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {1839, 598}}";
+ sepNavSelRange = "{338, 0}";
+ sepNavVisRange = "{0, 639}";
+ };
};
- 59F0A5B9135A222100098746 /* PBXTextBookmark */ = {
+ 59F0A657135A534500098746 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 256AC3D90F4B6AC300CF3369 /* iPhoneTrackingAppDelegate.m */;
- name = "iPhoneTrackingAppDelegate.m: 123";
+ name = "iPhoneTrackingAppDelegate.m: 174";
rLen = 0;
- rLoc = 3590;
+ rLoc = 5754;
rType = 0;
- vrLen = 1568;
- vrLoc = 3024;
+ vrLen = 1785;
+ vrLoc = 5103;
};
- 59F0A5BA135A222100098746 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 59F0A3071359237800098746 /* index.html */;
- name = "index.html: 82";
- rLen = 0;
- rLoc = 2156;
- rType = 0;
- vrLen = 883;
- vrLoc = 596;
- };
- 59F0A5BC135A344200098746 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 256AC3D90F4B6AC300CF3369 /* iPhoneTrackingAppDelegate.m */;
- name = "iPhoneTrackingAppDelegate.m: 192";
+ 59F0A658135A534500098746 /* PlistBookmark */ = {
+ isa = PlistBookmark;
+ fRef = 8D1107310486CEB800E47090 /* iPhoneTracking-Info.plist */;
+ fallbackIsa = PBXBookmark;
+ isK = 0;
+ kPath = (
+ );
+ name = "/Users/petewarden/Projects/iPhoneTracking/iPhoneTracking-Info.plist";
rLen = 0;
- rLoc = 6418;
- rType = 0;
- vrLen = 1471;
- vrLoc = 5089;
+ rLoc = 9223372036854775808;
};
- 59F0A5BD135A344200098746 /* PBXTextBookmark */ = {
+ 59F0A659135A534500098746 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 59F0A3071359237800098746 /* index.html */;
- name = "index.html: 82";
+ fRef = 59F0A63C135A4FDC00098746 /* English */;
+ name = "Credits.html: 1";
rLen = 0;
- rLoc = 2156;
+ rLoc = 0;
rType = 0;
- vrLen = 883;
- vrLoc = 596;
+ vrLen = 639;
+ vrLoc = 0;
};
- 59F0A5BE135A346100098746 /* PBXTextBookmark */ = {
+ 59F0A6A7135A534900098746 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 256AC3D90F4B6AC300CF3369 /* iPhoneTrackingAppDelegate.m */;
- name = "iPhoneTrackingAppDelegate.m: 176";
+ fRef = 59F0A63C135A4FDC00098746 /* English */;
+ name = "Credits.html: 14";
rLen = 0;
- rLoc = 5879;
+ rLoc = 605;
rType = 0;
- vrLen = 1471;
- vrLoc = 5089;
+ vrLen = 639;
+ vrLoc = 0;
};
- 59F0A5BF135A346100098746 /* PBXTextBookmark */ = {
+ 59F0A6A8135A534900098746 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 59F0A3071359237800098746 /* index.html */;
- name = "index.html: 82";
+ fRef = 256AC3D80F4B6AC300CF3369 /* iPhoneTrackingAppDelegate.h */;
+ name = "iPhoneTrackingAppDelegate.h: 17";
rLen = 0;
- rLoc = 2156;
+ rLoc = 311;
rType = 0;
- vrLen = 883;
- vrLoc = 596;
+ vrLen = 592;
+ vrLoc = 0;
};
- 8D1107260486CEB800E47090 /* iPhoneTracking */ = {
+ 8D1107260486CEB800E47090 /* iPhoneTracker */ = {
activeExec = 0;
executables = (
- 59F0A2AE13591A8200098746 /* iPhoneTracking */,
+ 59F0A2AE13591A8200098746 /* iPhoneTracker */,
);
};
+ 8D1107310486CEB800E47090 /* iPhoneTracking-Info.plist */ = {
+ uiCtxt = {
+ sepNavWindowFrame = "{{38, 472}, {1279, 680}}";
+ };
+ };
}
View
39 iPhoneTracking.xcodeproj/project.pbxproj
@@ -9,13 +9,15 @@
/* Begin PBXBuildFile section */
1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58140DA1D0A300B32029 /* MainMenu.xib */; };
256AC3DA0F4B6AC300CF3369 /* iPhoneTrackingAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 256AC3D90F4B6AC300CF3369 /* iPhoneTrackingAppDelegate.m */; };
+ 59C0BD6D135A545200378314 /* readme.asciidoc in Resources */ = {isa = PBXBuildFile; fileRef = 59C0BD6C135A545200378314 /* readme.asciidoc */; };
59F0A2FF135922A600098746 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 59F0A2FE135922A500098746 /* WebKit.framework */; };
59F0A3081359237800098746 /* index.html in Resources */ = {isa = PBXBuildFile; fileRef = 59F0A3071359237800098746 /* index.html */; };
59F0A33213593AA200098746 /* FMDatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = 59F0A32D13593AA200098746 /* FMDatabase.m */; };
59F0A33313593AA200098746 /* FMDatabaseAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 59F0A32F13593AA200098746 /* FMDatabaseAdditions.m */; };
59F0A33413593AA200098746 /* FMResultSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 59F0A33113593AA200098746 /* FMResultSet.m */; };
59F0A34013593B0000098746 /* libsqlite3.0.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 59F0A33F13593B0000098746 /* libsqlite3.0.dylib */; };
59F0A4901359662F00098746 /* parsembdb.m in Sources */ = {isa = PBXBuildFile; fileRef = 59F0A48F1359662F00098746 /* parsembdb.m */; };
+ 59F0A63D135A4FDC00098746 /* Credits.html in Resources */ = {isa = PBXBuildFile; fileRef = 59F0A63B135A4FDB00098746 /* Credits.html */; };
8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; };
8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; };
8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
@@ -32,6 +34,7 @@
29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
+ 59C0BD6C135A545200378314 /* readme.asciidoc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = readme.asciidoc; sourceTree = "<group>"; wrapsLines = 1; };
59F0A2FE135922A500098746 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; };
59F0A3071359237800098746 /* index.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = index.html; sourceTree = "<group>"; };
59F0A32C13593AA200098746 /* FMDatabase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FMDatabase.h; sourceTree = "<group>"; };
@@ -43,8 +46,9 @@
59F0A33F13593B0000098746 /* libsqlite3.0.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsqlite3.0.dylib; path = usr/lib/libsqlite3.0.dylib; sourceTree = SDKROOT; };
59F0A48E1359662F00098746 /* parsembdb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = parsembdb.h; sourceTree = "<group>"; };
59F0A48F1359662F00098746 /* parsembdb.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = parsembdb.m; sourceTree = "<group>"; };
+ 59F0A63C135A4FDC00098746 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = English; path = English.lproj/Credits.html; sourceTree = "<group>"; };
8D1107310486CEB800E47090 /* iPhoneTracking-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "iPhoneTracking-Info.plist"; sourceTree = "<group>"; };
- 8D1107320486CEB800E47090 /* iPhoneTracking.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iPhoneTracking.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 8D1107320486CEB800E47090 /* iPhoneTracker.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iPhoneTracker.app; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -95,14 +99,15 @@
19C28FACFE9D520D11CA2CBB /* Products */ = {
isa = PBXGroup;
children = (
- 8D1107320486CEB800E47090 /* iPhoneTracking.app */,
+ 8D1107320486CEB800E47090 /* iPhoneTracker.app */,
);
name = Products;
sourceTree = "<group>";
};
29B97314FDCFA39411CA2CEA /* iPhoneTracking */ = {
isa = PBXGroup;
children = (
+ 59C0BD6C135A545200378314 /* readme.asciidoc */,
59F0A32B13593AA200098746 /* fmdb */,
080E96DDFE201D6D7F000001 /* Classes */,
29B97315FDCFA39411CA2CEA /* Other Sources */,
@@ -125,6 +130,7 @@
29B97317FDCFA39411CA2CEA /* Resources */ = {
isa = PBXGroup;
children = (
+ 59F0A63B135A4FDB00098746 /* Credits.html */,
8D1107310486CEB800E47090 /* iPhoneTracking-Info.plist */,
59F0A3071359237800098746 /* index.html */,
089C165CFE840E0CC02AAC07 /* InfoPlist.strings */,
@@ -158,9 +164,9 @@
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
- 8D1107260486CEB800E47090 /* iPhoneTracking */ = {
+ 8D1107260486CEB800E47090 /* iPhoneTracker */ = {
isa = PBXNativeTarget;
- buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "iPhoneTracking" */;
+ buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "iPhoneTracker" */;
buildPhases = (
8D1107290486CEB800E47090 /* Resources */,
8D11072C0486CEB800E47090 /* Sources */,
@@ -170,17 +176,20 @@
);
dependencies = (
);
- name = iPhoneTracking;
+ name = iPhoneTracker;
productInstallPath = "$(HOME)/Applications";
productName = iPhoneTracking;
- productReference = 8D1107320486CEB800E47090 /* iPhoneTracking.app */;
+ productReference = 8D1107320486CEB800E47090 /* iPhoneTracker.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
29B97313FDCFA39411CA2CEA /* Project object */ = {
isa = PBXProject;
+ attributes = {
+ ORGANIZATIONNAME = None;
+ };
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "iPhoneTracking" */;
compatibilityVersion = "Xcode 3.1";
developmentRegion = English;
@@ -195,7 +204,7 @@
projectDirPath = "";
projectRoot = "";
targets = (
- 8D1107260486CEB800E47090 /* iPhoneTracking */,
+ 8D1107260486CEB800E47090 /* iPhoneTracker */,
);
};
/* End PBXProject section */
@@ -208,6 +217,8 @@
8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */,
1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */,
59F0A3081359237800098746 /* index.html in Resources */,
+ 59F0A63D135A4FDC00098746 /* Credits.html in Resources */,
+ 59C0BD6D135A545200378314 /* readme.asciidoc in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -246,6 +257,14 @@
name = MainMenu.xib;
sourceTree = "<group>";
};
+ 59F0A63B135A4FDB00098746 /* Credits.html */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 59F0A63C135A4FDC00098746 /* English */,
+ );
+ name = Credits.html;
+ sourceTree = "<group>";
+ };
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
@@ -262,7 +281,7 @@
GCC_PREFIX_HEADER = iPhoneTracking_Prefix.pch;
INFOPLIST_FILE = "iPhoneTracking-Info.plist";
INSTALL_PATH = "$(HOME)/Applications";
- PRODUCT_NAME = iPhoneTracking;
+ PRODUCT_NAME = iPhoneTracker;
};
name = Debug;
};
@@ -276,7 +295,7 @@
GCC_PREFIX_HEADER = iPhoneTracking_Prefix.pch;
INFOPLIST_FILE = "iPhoneTracking-Info.plist";
INSTALL_PATH = "$(HOME)/Applications";
- PRODUCT_NAME = iPhoneTracking;
+ PRODUCT_NAME = iPhoneTracker;
};
name = Release;
};
@@ -309,7 +328,7 @@
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
- C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "iPhoneTracking" */ = {
+ C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "iPhoneTracker" */ = {
isa = XCConfigurationList;
buildConfigurations = (
C01FCF4B08A954540054247B /* Debug */,
View
2 iPhoneTrackingAppDelegate.h
@@ -14,8 +14,8 @@
WebScriptObject* scriptObject;
}
-- (NSString*)getLocationDBPath;
- (void)loadLocationDB;
+- (BOOL)tryToLoadLocationDB:(NSString*) locationDBPath forDevice:(NSString*) deviceName;
- (void) incrementBuckets:(NSMutableDictionary*)buckets forKey:(NSString*)key;
@property (assign) IBOutlet NSWindow *window;
View
87 iPhoneTrackingAppDelegate.m
@@ -59,59 +59,86 @@ - (void)loadLocationDB
NSFileManager *fm = [NSFileManager defaultManager];
NSArray* backupContents = [[NSFileManager defaultManager] directoryContentsAtPath:backupPath];
- NSString* newestFolder = nil;
- NSDate* newestDate = nil;
+ NSMutableArray* fileInfoList = [NSMutableArray array];
for (NSString *childName in backupContents) {
NSString* childPath = [backupPath stringByAppendingPathComponent:childName];
NSString *plistFile = [childPath stringByAppendingPathComponent:@"Info.plist"];
- NSDictionary *plist = [NSDictionary dictionaryWithContentsOfFile:plistFile];
- NSLog(@"file = %@, device = %@", plistFile, [plist objectForKey:@"Device Name"]);
NSError* error;
NSDictionary *childInfo = [fm attributesOfItemAtPath:childPath error:&error];
NSDate* modificationDate = [childInfo objectForKey:@"NSFileModificationDate"];
- if ((newestDate==nil)||([newestDate compare:modificationDate]==NSOrderedAscending)) {
- newestDate = modificationDate;
- newestFolder = childPath;
- }
+ NSDictionary* fileInfo = [NSDictionary dictionaryWithObjectsAndKeys:
+ childPath, @"fileName",
+ modificationDate, @"modificationDate",
+ plistFile, @"plistFile",
+ nil];
+ [fileInfoList addObject: fileInfo];
}
+
+ NSSortDescriptor* sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"modificationDate" ascending:NO] autorelease];
+ [fileInfoList sortUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
+
+ BOOL loadWorked = NO;
+ for (NSDictionary* fileInfo in fileInfoList) {
+ @try {
+ NSString* newestFolder = [fileInfo objectForKey:@"fileName"];
+ NSString* plistFile = [fileInfo objectForKey:@"plistFile"];
+
+ NSDictionary *plist = [NSDictionary dictionaryWithContentsOfFile:plistFile];
+ if (plist==nil) {
+ NSLog(@"No plist file found at '%@'", plistFile);
+ continue;
+ }
+ NSString* deviceName = [plist objectForKey:@"Device Name"];
+ NSLog(@"file = %@, device = %@", plistFile, deviceName);
- if (newestFolder==nil) {
- [self displayErrorAndQuit:[NSString stringWithFormat: @"Couldn't find backup files at '%@'", backupPath]];
- }
+ NSDictionary* mbdb = [ParseMBDB getFileListForPath: newestFolder];
+ if (mbdb==nil) {
+ NSLog(@"No MBDB file found at '%@'", newestFolder);
+ continue;
+ }
+
+ NSString* wantedFileName = @"Library/Caches/locationd/consolidated.db";
+ NSString* dbFileName = nil;
+ for (NSNumber* offset in mbdb) {
+ NSDictionary* fileInfo = [mbdb objectForKey:offset];
+ NSString* fileName = [fileInfo objectForKey:@"filename"];
+ if ([wantedFileName compare:fileName]==NSOrderedSame) {
+ dbFileName = [fileInfo objectForKey:@"fileID"];
+ }
+ }
- NSDictionary* mbdb = [ParseMBDB getFileListForPath: newestFolder];
+ if (dbFileName==nil) {
+ NSLog(@"No consolidated.db file found in '%@'", newestFolder);
+ continue;
+ }
- NSString* wantedFileName = @"Library/Caches/locationd/consolidated.db";
- NSString* dbFileName = nil;
- for (NSNumber* offset in mbdb) {
- NSDictionary* fileInfo = [mbdb objectForKey:offset];
- NSString* fileName = [fileInfo objectForKey:@"filename"];
- if ([wantedFileName compare:fileName]==NSOrderedSame) {
- dbFileName = [fileInfo objectForKey:@"fileID"];
+ NSString* dbFilePath = [newestFolder stringByAppendingPathComponent:dbFileName];
+
+ loadWorked = [self tryToLoadLocationDB: dbFilePath forDevice:deviceName];
+ if (loadWorked) {
+ break;
+ }
+ }
+ @catch (NSException *exception) {
+ NSLog(@"Exception: %@", [exception reason]);
}
}
- if (dbFileName==nil) {
- [self displayErrorAndQuit: [NSString stringWithFormat: @"No consolidated.db file found in '%@'", newestFolder]];
+ if (!loadWorked) {
+ [self displayErrorAndQuit: [NSString stringWithFormat: @"Couldn't load consolidated.db file from '%@'", backupPath]];
}
-
- NSString* dbFilePath = [newestFolder stringByAppendingPathComponent:dbFileName];
-
- return dbFilePath;
}
-- (BOOL)tryToLoadLocationDB:(NSString*) locationDBPath
+- (BOOL)tryToLoadLocationDB:(NSString*) locationDBPath forDevice:(NSString*) deviceName
{
[scriptObject setValue:self forKey:@"cocoaApp"];
- NSString* locationDBPath = [self getLocationDBPath];
-
FMDatabase* database = [FMDatabase databaseWithPath: locationDBPath];
[database setLogsErrors: YES];
BOOL openWorked = [database open];
@@ -182,13 +209,13 @@ - (BOOL)tryToLoadLocationDB:(NSString*) locationDBPath
[csvArray addObject: rowString];
}
- if ([csvArray length]<10) {
+ if ([csvArray count]<10) {
return NO;
}
NSString* csvText = [csvArray componentsJoinedByString:@"\n"];
- id scriptResult = [scriptObject callWebScriptMethod: @"storeLocationData" withArguments:[NSArray arrayWithObject:csvText]];
+ id scriptResult = [scriptObject callWebScriptMethod: @"storeLocationData" withArguments:[NSArray arrayWithObjects:csvText,deviceName,nil]];
if(![scriptResult isMemberOfClass:[WebUndefined class]]) {
NSLog(@"scriptResult='%@'", scriptResult);
}
View
8 index.html
@@ -7,6 +7,7 @@
g_isMapCreated = false;
g_csvString = null;
+g_deviceName = null;
g_mapSettings = {
"zoom_slider_power":5,
@@ -46,7 +47,7 @@
openHeatMap.setSetting(key, value);
}
- openHeatMap.setColorGradient(["#eaf8b800","#eae40f16","#ea2d00dd"]);
+ openHeatMap.setColorGradient(["#eaf8b800","#eae40f16","#4f2d00dd"]);
g_isMapCreated = true;
@@ -55,8 +56,9 @@
}
}
-function storeLocationData(csvString) {
+function storeLocationData(csvString, deviceName) {
g_csvString = csvString;
+ g_deviceName = deviceName;
if (g_isMapCreated) {
loadLocationData();
}
@@ -66,7 +68,7 @@
var openHeatMap = $.getOpenHeatMap();
openHeatMap.loadValuesFromCSVString(g_csvString);
- $('#message').html('');
+ $('#message').text(g_deviceName);
openHeatMap.setAnimationTime('All Time');
}
View
14 parsembdb.m
@@ -20,6 +20,10 @@ + (NSDictionary*) getFileListForPath:(NSString*)path
NSDictionary* mbdb = process_mbdb_file([path stringByAppendingPathComponent:@"Manifest.mbdb"]);
NSDictionary* mbdx = process_mbdx_file([path stringByAppendingPathComponent:@"Manifest.mbdx"]);
+ if ((mbdb==nil)||(mbdx==nil)) {
+ return nil;
+ }
+
for (NSNumber* offset in mbdb) {
NSMutableDictionary* fileinfo = [mbdb objectForKey:offset];
NSString* fileID = [mbdx objectForKey:offset];
@@ -83,6 +87,11 @@ + (NSDictionary*) getFileListForPath:(NSString*)path
size_t dataLength = [fileData length];
uint8_t* data = (uint8_t*)[fileData bytes];
+ if (data==NULL) {
+ NSLog(@"No MBDB file found at '%@'", filename);
+ return nil;
+ }
+
if ((data[0]!='m')||
(data[1]!='b')||
(data[2]!='d')||
@@ -134,6 +143,11 @@ + (NSDictionary*) getFileListForPath:(NSString*)path
size_t dataLength = [fileData length];
uint8_t* data = (uint8_t*)[fileData bytes];
+ if (data==NULL) {
+ NSLog(@"No MBDX file found at '%@'", filename);
+ return nil;
+ }
+
if ((data[0]!='m')||
(data[1]!='b')||
(data[2]!='d')||
View
11 readme.asciidoc
@@ -0,0 +1,11 @@
+iPhone Tracking
+===============
+
+= iPhone Tracking
+By http://twitter.com/aallan[Alasdair Allan] and http://twitter.com/petewarden[Pete Warden].
+
+This tool scans through the backup files that are automatically created when you sync your iPhone with your OS X computer, extracts any recorded location information, and displays it as an animatable map.
+
+It *doesn't* record or share any of this information, it's purely a tool for visualizing the data on your machine. It's open source, so feel free to check the code and compile it yourself if you're concerned.
+
+The goal is to demonstrate how much data your iPhone is collecting on your movements, and how easy it is for any program on your computer to access that information. The coordinates and time periods are deliberately shown with low accuracy to make this application less useful as a snooping tool, but the underlying data has a lot more detail.

0 comments on commit d17613c

Please sign in to comment.
Something went wrong with that request. Please try again.