changeset 42:3d627dce8bf0

Tidied up startup logic.
author Robert Tubb <rt300@eecs.qmul.ac.uk>
date Wed, 17 Apr 2013 13:44:05 +0100
parents 79c129e500e1
children b91a1859829a
files HelpViewController.xib TopButtonViewController.xib UsernameAlertViewController.h UsernameAlertViewController.mm eventLogger.h eventLogger.mm testApp.h testApp.mm
diffstat 8 files changed, 235 insertions(+), 216 deletions(-) [+]
line wrap: on
line diff
--- a/HelpViewController.xib	Fri Apr 12 17:50:25 2013 +0100
+++ b/HelpViewController.xib	Wed Apr 17 13:44:05 2013 +0100
@@ -13,7 +13,7 @@
 		<array key="IBDocument.IntegratedClassDependencies">
 			<string>IBProxyObject</string>
 			<string>IBUIButton</string>
-			<string>IBUITextView</string>
+			<string>IBUILabel</string>
 			<string>IBUIView</string>
 		</array>
 		<array key="IBDocument.PluginDependencies">
@@ -36,105 +36,12 @@
 				<reference key="NSNextResponder"/>
 				<int key="NSvFlags">292</int>
 				<array class="NSMutableArray" key="NSSubviews">
-					<object class="IBUITextView" id="992119782">
-						<reference key="NSNextResponder" ref="766721923"/>
-						<int key="NSvFlags">274</int>
-						<string key="NSFrameSize">{768, 933}</string>
-						<reference key="NSSuperview" ref="766721923"/>
-						<reference key="NSWindow"/>
-						<reference key="NSNextKeyView" ref="519426224"/>
-						<string key="NSReuseIdentifierKey">_NS:9</string>
-						<object class="NSColor" key="IBUIBackgroundColor" id="972792113">
-							<int key="NSColorSpace">1</int>
-							<bytes key="NSRGB">MCAwIDAAA</bytes>
-						</object>
-						<bool key="IBUIClipsSubviews">YES</bool>
-						<bool key="IBUIMultipleTouchEnabled">YES</bool>
-						<string key="targetRuntimeIdentifier">IBIPadFramework</string>
-						<bool key="IBUIShowsHorizontalScrollIndicator">NO</bool>
-						<bool key="IBUIUsesAttributedText">YES</bool>
-						<object class="NSAttributedString" key="IBUIAttributedText">
-							<string type="base64-UTF8" key="NSString">UHJlc3MgdGhlIHBsYXkgYnV0dG9uIGF0IHRoZSB0b3AgdG8gc3RhcnQgdGhlIHNlcXVlbmNlci4gUHJl
-c3MgcGF1c2UgdG8gc3RvcC4NWW91IHdpbGwgYmUgdXNpbmcgYWxsIHRocmVlIG1vZGVzOiB0aGUgU0xJ
-REVSUywgdGhlIFpPT01FUiBhbmQgQk9USCBmb3IgYWJvdXQgNSBtaW51dGVzIGVhY2gsIGluIGEgcmFu
-ZG9tIG9yZGVyLiANDU9QRVJBVElORyBUSEUgWk9PTUVS4oCoDVRoZSByZWQgY3Jvc3NoYWlycyBpbiB0
-aGUgY2VudHJlIG9mIHRoZSBzY3JlZW4gcmVwcmVzZW50IHRoZSBwb2ludCBvbiB0aGUgc3VyZmFjZSB0
-aGF0IHlvdSBhcmUgbGlzdGVuaW5nIHRvLiBTY3JvbGwgdGhlIHN1cmZhY2UgdW5kZXIgdGhpcyBwb2lu
-dCB0byBtb3ZlIHRvIGEgZGlmZmVyZW50IHNvdW5kLiBJbiBCT1RIIG1vZGUgeW91IHdpbGwgYmUgYWJs
-ZSB0byBzZWUgdGhlIGVmZmVjdCBvZiB0aGlzIG9uIHRoZSBzbGlkZXJzLiBMaWtld2lzZSBpZiB5b3Ug
-bW92ZSBhIHNsaWRlciB5b3Ugd2lsbCBob3AgdG8gYSBkaWZmZXJlbnQgcG9pbnQgb24gdGhlIHN1cmZh
-Y2UuIFlvdXIgcGF0aCB0aHJvdWdoIHRoZSBzcGFjZSB3aWxsIHNob3cgYXMgYSB3aGl0ZSBsaW5lLCBh
-bnkgcG9pbnRzIHlvdSBoYXZlIGhvdmVyZWQgb3ZlciB3aWxsIHNob3cgYXMgYmx1ZSBjaXJjbGVzLuKA
-qA1TYXZlIGFueSBzb3VuZHMvc2VxdWVuY2VzIHRoYXQgeW91IGxpa2UgdXNpbmcgdGhlIOKAnHNhdmUg
-cHJlc2V04oCdIGJ1dHRvbi4gQSBtYXJrZXIgd2lsbCBhcHBlYXIgb24gdGhlIHpvb20gc3VyZmFjZS4g
-SWYgeW91IG1vdmUgdG8gdGhlIHZpY2luaXR5IG9mIGEgcHJlc2V0IG1hcmtlciwgdGhlIGNyb3NzaGFp
-cnMgd2lsbCBzbmFwIHRvIHRoZSBwcmVzZXQsIGl0cyBkZXRhaWxzIHdpbGwgYXBwZWFyIGFuZCB0aGF0
-IHNvdW5kIHdpbGwgcGxheS4N4oCoVHdvIGZpbmdlciBwaW5jaCBtb3ZlbWVudHMgem9vbSB0aGUgc3Vy
-ZmFjZSBqdXN0IGFzIGluIGEgbWFwcyBhcHAuIFRoZSBmdXJ0aGVyIHlvdSB6b29tIGluLCB0aGUgbGVz
-cyB0aGUgc291bmQgd2lsbCBjaGFuZ2UgYXMgeW91IHNjcm9sbCBhcm91bmQuIEZvciBleGFtcGxlIHRo
-ZSB5ZWxsb3cgbGluZXMgdGhhdCBhcHBlYXIgYXQgdGhlIGxhcmdlc3Qgc2NhbGUgY29ycmVzcG9uZCB0
-byB0aGUgc2xpZGVycyBqdW1waW5nIDY0IHVuaXRzLiBUaGUgd2hpdGUgbGluZXMgYXQgdGhlIHNtYWxs
-ZXN0IHNjYWxlIGNvcnJlc3BvbmQgdG8ganVtcHMgb2Ygb25lIHVuaXQuIFRoZXJlIGFyZSA3IGxldmVs
-czrigKjigKhZZWxsb3cgPSA2NCwgVGVhbCA9IDMyLCBQdXJwbGUgPSAxNiwgR3JlZW4gPSA4LCBEYXJr
-IEJsdWUgPSA0LCBSZWQgPSAyLCBXaGl0ZSA9IDHigKjigKhMT0NL4oCo4oCoSWYgeW91IGZpbmQgYSBz
-ZXF1ZW5jZSB5b3UgbGlrZSBidXQgd2FudCB0byBjaGFuZ2UgdGhlIHN5bnRoIHNvdW5kIHVzZSB0aGUg
-IkxvY2sgWCIgYnV0dG9uLiBUaGlzIHdpbGwgcHJldmVudCB5b3UgYWNjaWRlbnRhbGx5IG1vdmluZyBp
-biBmcm9tIGxlZnQgdG8gcmlnaHQgYW5kIG1lc3NpbmcgdXAgeW91ciBub3RlIHBhdHRlcm4uIFNpbWls
-YXJseSBpZiB5b3UgZmluZCBhIHN5bnRoIHNvdW5kIHRoYXQgeW91IGxpa2UsIGJ1dCB3YW50IHRvIGNo
-YW5nZSB0aGUgbm90ZSBzZXF1ZW5jZSwgdXNlIHRoZSAiTG9jayBZIiBidXR0b24uIOKAqOKAqFJBTkRP
-TUlTReKAqOKAqFVzZSB0aGUgcmFuZG9taXNlIGJ1dHRvbiB0byBqdW1wIHRvIGEgcmFuZG9tIHBvaW50
-IG9uIHRoZSBncmlkLiDigKjigKhFWFRSQSBGRUFUVVJFU+KAqOKAqEFmdGVyIHlvdSBjb21wbGV0ZSB0
-aGUgdGltZWQgc2Vzc2lvbnMgYW5kIHRoZSBxdWVzdGlvbm5haXJlLCB5b3UgY2FuIHR1cm4gdGhlIHNs
-aWRlcnMgYW5kIHRoZSB6b29tZXIgb24vb2ZmIHVzaW5nIHRoZSB0YWJzIGF0IHRoZSBib3R0b20gb2Yg
-dGhlIHNjcmVlbi4gVGhlc2UgZnVydGhlciBmZWF0dXJlcyB3aWxsIGJlIGVuYWJsZWQ64oCo4oCoU01P
-T1RISU5H4oCo4oCoV2hlbiB5b3UgaGF2ZSBmaW5pc2hlZCB0aGUgZXhwZXJpbWVudCwgYSAic21vb3Ro
-IiBzd2l0Y2ggd2lsbCBhcHBlYXIuIFRoaXMgd2lsbCBpbnRlcnBvbGF0ZSB0aGUgZ3JpZCBzbyB0aGF0
-IHRoZSBzbGlkZXJzIGNoYW5nZSBtb3JlIHNtb290aGx5LiBOb3RlIHRoaXMgd2lsbCBicmVhayB0aGUg
-b25lIHRvIG9uZSBtYXBwaW5nIGJldHdlZW4gc2xpZGVycyBhbmQgc3VyZmFjZTogcHJldmlvdXNseSBz
-YXZlZCBwcmVzZXRzIHdpbGwgbm90IGFwcGVhciwgYW5kIGFueSBzYXZlZCBpbiB0aGlzIG1vZGUgd2ls
-bCB0ZW5kIHRvIGFwcGVhciBpbiBhIHNsaWdodGx5IGRpZmZlcmVudCBwb3NpdGlvbiB3aGVuIHNtb290
-aCBpcyB0dXJuZWQgb2ZmLg0NA</string>
-							<array class="NSMutableArray" key="NSAttributes">
-								<dictionary>
-									<object class="NSColor" key="NSColor">
-										<int key="NSColorSpace">1</int>
-										<bytes key="NSRGB">MC4zMzgyNjY5OTg0IDAuOTA1MzMyMjM5OSAxAA</bytes>
-									</object>
-									<object class="NSFont" key="NSFont" id="897351317">
-										<string key="NSName">Helvetica</string>
-										<double key="NSSize">15</double>
-										<int key="NSfFlags">16</int>
-									</object>
-									<object class="NSMutableParagraphStyle" key="NSParagraphStyle" id="310792247">
-										<nil key="NSTabStops"/>
-									</object>
-								</dictionary>
-								<dictionary>
-									<object class="NSColor" key="NSColor">
-										<int key="NSColorSpace">1</int>
-										<bytes key="NSRGB">MC4zMzcyNTQ5MDIgMC45MDU4ODIzNTI5IDEAA</bytes>
-									</object>
-									<reference key="NSFont" ref="897351317"/>
-									<reference key="NSParagraphStyle" ref="310792247"/>
-								</dictionary>
-							</array>
-							<object class="NSMutableData" key="NSAttributeInfo">
-								<bytes key="NS.bytes">zQ0AwAEB+wIAA</bytes>
-							</object>
-						</object>
-						<bool key="IBUIEditable">NO</bool>
-						<object class="IBUITextInputTraits" key="IBUITextInputTraits">
-							<int key="IBUIAutocapitalizationType">2</int>
-							<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
-						</object>
-					</object>
 					<object class="IBUIButton" id="519426224">
 						<reference key="NSNextResponder" ref="766721923"/>
 						<int key="NSvFlags">292</int>
 						<string key="NSFrame">{{319, 941}, {130, 44}}</string>
 						<reference key="NSSuperview" ref="766721923"/>
 						<reference key="NSWindow"/>
-						<reference key="NSNextKeyView"/>
 						<string key="NSReuseIdentifierKey">_NS:9</string>
 						<bool key="IBUIOpaque">NO</bool>
 						<string key="targetRuntimeIdentifier">IBIPadFramework</string>
@@ -164,12 +71,89 @@
 							<int key="NSfFlags">16</int>
 						</object>
 					</object>
+					<object class="IBUILabel" id="623791900">
+						<reference key="NSNextResponder" ref="766721923"/>
+						<int key="NSvFlags">292</int>
+						<string key="NSFrame">{{64, 53}, {640, 872}}</string>
+						<reference key="NSSuperview" ref="766721923"/>
+						<reference key="NSWindow"/>
+						<reference key="NSNextKeyView" ref="519426224"/>
+						<string key="NSReuseIdentifierKey">_NS:9</string>
+						<bool key="IBUIOpaque">NO</bool>
+						<bool key="IBUIClipsSubviews">YES</bool>
+						<int key="IBUIContentMode">7</int>
+						<bool key="IBUIUserInteractionEnabled">NO</bool>
+						<string key="targetRuntimeIdentifier">IBIPadFramework</string>
+						<object class="NSMutableString" key="IBUIText">
+							<bytes key="NS.bytes">SEVMUOKAqOKAqOKAqFByZXNzIHRoZSBwbGF5IGJ1dHRvbiBhdCB0aGUgdG9wIHRvIHN0YXJ0IHRoZSBz
+ZXF1ZW5jZXIuIFByZXNzIHBhdXNlIHRvIHN0b3AuDVlvdSB3aWxsIGJlIHVzaW5nIGFsbCB0aHJlZSBt
+b2RlczogdGhlIFNMSURFUlMsIHRoZSBaT09NRVIgYW5kIEJPVEggZm9yIGFib3V0IDUgbWludXRlcyBl
+YWNoLCBpbiBhIHJhbmRvbSBvcmRlci4gDQ1PUEVSQVRJTkcgVEhFIFpPT01FUuKAqA1UaGUgcmVkIGNy
+b3NzaGFpcnMgaW4gdGhlIGNlbnRyZSBvZiB0aGUgc2NyZWVuIHJlcHJlc2VudCB0aGUgcG9pbnQgb24g
+dGhlIHN1cmZhY2UgdGhhdCB5b3UgYXJlIGxpc3RlbmluZyB0by4gU2Nyb2xsIHRoZSBzdXJmYWNlIHVu
+ZGVyIHRoaXMgcG9pbnQgdG8gbW92ZSB0byBhIGRpZmZlcmVudCBzb3VuZC4gSW4gQk9USCBtb2RlIHlv
+dSB3aWxsIGJlIGFibGUgdG8gc2VlIHRoZSBlZmZlY3Qgb2YgdGhpcyBvbiB0aGUgc2xpZGVycy4gTGlr
+ZXdpc2UgaWYgeW91IG1vdmUgYSBzbGlkZXIgeW91IHdpbGwgaG9wIHRvIGEgZGlmZmVyZW50IHBvaW50
+IG9uIHRoZSBzdXJmYWNlLiBZb3VyIHBhdGggdGhyb3VnaCB0aGUgc3BhY2Ugd2lsbCBzaG93IGFzIGEg
+d2hpdGUgbGluZSwgYW55IHBvaW50cyB5b3UgaGF2ZSBob3ZlcmVkIG92ZXIgd2lsbCBzaG93IGFzIGJs
+dWUgY2lyY2xlcy7igKgNU2F2ZSBhbnkgc291bmRzL3NlcXVlbmNlcyB0aGF0IHlvdSBsaWtlIHVzaW5n
+IHRoZSDigJxzYXZlIHByZXNldOKAnSBidXR0b24uIEEgbWFya2VyIHdpbGwgYXBwZWFyIG9uIHRoZSB6
+b29tIHN1cmZhY2UuIElmIHlvdSBtb3ZlIHRvIHRoZSB2aWNpbml0eSBvZiBhIHByZXNldCBtYXJrZXIs
+IHRoZSBjcm9zc2hhaXJzIHdpbGwgc25hcCB0byB0aGUgcHJlc2V0LCBpdHMgZGV0YWlscyB3aWxsIGFw
+cGVhciBhbmQgdGhhdCBzb3VuZCB3aWxsIHBsYXkuDeKAqFR3byBmaW5nZXIgcGluY2ggbW92ZW1lbnRz
+IHpvb20gdGhlIHN1cmZhY2UganVzdCBhcyBpbiBhIG1hcHMgYXBwLiBUaGUgZnVydGhlciB5b3Ugem9v
+bSBpbiwgdGhlIGxlc3MgdGhlIHNvdW5kIHdpbGwgY2hhbmdlIGFzIHlvdSBzY3JvbGwgYXJvdW5kLiBG
+b3IgZXhhbXBsZSB0aGUgeWVsbG93IGxpbmVzIHRoYXQgYXBwZWFyIGF0IHRoZSBsYXJnZXN0IHNjYWxl
+IGNvcnJlc3BvbmQgdG8gdGhlIHNsaWRlcnMganVtcGluZyA2NCB1bml0cy4gVGhlIHdoaXRlIGxpbmVz
+IGF0IHRoZSBzbWFsbGVzdCBzY2FsZSBjb3JyZXNwb25kIHRvIGp1bXBzIG9mIG9uZSB1bml0LiBUaGVy
+ZSBhcmUgNyBsZXZlbHM64oCo4oCoWWVsbG93ID0gNjQsIFRlYWwgPSAzMiwgUHVycGxlID0gMTYsIEdy
+ZWVuID0gOCwgRGFyayBCbHVlID0gNCwgUmVkID0gMiwgV2hpdGUgPSAx4oCo4oCoTE9DS+KAqOKAqOKA
+qElmIHlvdSBmaW5kIGEgc2VxdWVuY2UgeW91IGxpa2UgYnV0IHdhbnQgdG8gY2hhbmdlIHRoZSBzeW50
+aCBzb3VuZCB1c2UgdGhlICJMb2NrIFgiIGJ1dHRvbi4gVGhpcyB3aWxsIHByZXZlbnQgeW91IGFjY2lk
+ZW50YWxseSBtb3ZpbmcgaW4gZnJvbSBsZWZ0IHRvIHJpZ2h0IGFuZCBtZXNzaW5nIHVwIHlvdXIgbm90
+ZSBwYXR0ZXJuLiBTaW1pbGFybHkgaWYgeW91IGZpbmQgYSBzeW50aCBzb3VuZCB0aGF0IHlvdSBsaWtl
+LCBidXQgd2FudCB0byBjaGFuZ2UgdGhlIG5vdGUgc2VxdWVuY2UsIHVzZSB0aGUgIkxvY2sgWSIgYnV0
+dG9uLiDigKjigKjigKhFWFRSQSBGRUFUVVJFU+KAqOKAqEFmdGVyIHlvdSBjb21wbGV0ZSB0aGUgdGlt
+ZWQgc2Vzc2lvbnMgYW5kIHRoZSBxdWVzdGlvbm5haXJlLCB5b3UgY2FuIHR1cm4gdGhlIHNsaWRlcnMg
+YW5kIHRoZSB6b29tZXIgb24vb2ZmIHVzaW5nIHRoZSB0YWJzIGF0IHRoZSBib3R0b20gb2YgdGhlIHNj
+cmVlbi4gVGhlc2UgZnVydGhlciBmZWF0dXJlcyB3aWxsIGJlIGVuYWJsZWQ64oCo4oCoV2hlbiB5b3Ug
+aGF2ZSBmaW5pc2hlZCB0aGUgZXhwZXJpbWVudCwgYSAic21vb3RoIiBzd2l0Y2ggd2lsbCBhcHBlYXIu
+IFRoaXMgd2lsbCBpbnRlcnBvbGF0ZSB0aGUgZ3JpZCBzbyB0aGF0IHRoZSBzbGlkZXJzIGNoYW5nZSBt
+b3JlIHNtb290aGx5LiBOb3RlIHRoaXMgd2lsbCBicmVhayB0aGUgb25lIHRvIG9uZSBtYXBwaW5nIGJl
+dHdlZW4gc2xpZGVycyBhbmQgc3VyZmFjZTogcHJldmlvdXNseSBzYXZlZCBwcmVzZXRzIHdpbGwgbm90
+IGFwcGVhciwgYW5kIGFueSBzYXZlZCBpbiB0aGlzIG1vZGUgd2lsbCB0ZW5kIHRvIGFwcGVhciBpbiBh
+IHNsaWdodGx5IGRpZmZlcmVudCBwb3NpdGlvbiB3aGVuIHNtb290aCBpcyB0dXJuZWQgb2ZmLg3igKhN
+SURJIENDIHZhbHVlcyAobnVtYmVycyAwLTkpIHdpbGwgYmUgc2VudCBmcm9tIHRoZSBzbGlkZXJzLCBv
+biBjaGFubmVsIDcuIOKAqA0</bytes>
+						</object>
+						<object class="NSColor" key="IBUITextColor">
+							<int key="NSColorSpace">1</int>
+							<bytes key="NSRGB">MCAxIDAuOTc2NDI2Mjc5OAA</bytes>
+						</object>
+						<nil key="IBUIHighlightedColor"/>
+						<int key="IBUIBaselineAdjustment">0</int>
+						<int key="IBUINumberOfLines">300</int>
+						<object class="IBUIFontDescription" key="IBUIFontDescription">
+							<int key="type">1</int>
+							<double key="pointSize">16</double>
+						</object>
+						<object class="NSFont" key="IBUIFont">
+							<string key="NSName">Helvetica</string>
+							<double key="NSSize">16</double>
+							<int key="NSfFlags">16</int>
+						</object>
+						<bool key="IBUIAdjustsFontSizeToFit">NO</bool>
+						<double key="preferredMaxLayoutWidth">640</double>
+					</object>
 				</array>
 				<string key="NSFrameSize">{768, 1024}</string>
 				<reference key="NSSuperview"/>
 				<reference key="NSWindow"/>
-				<reference key="NSNextKeyView" ref="992119782"/>
-				<reference key="IBUIBackgroundColor" ref="972792113"/>
+				<reference key="NSNextKeyView" ref="623791900"/>
+				<object class="NSColor" key="IBUIBackgroundColor">
+					<int key="NSColorSpace">1</int>
+					<bytes key="NSRGB">MCAwIDAAA</bytes>
+				</object>
 				<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
 				<object class="IBUIScreenMetrics" key="IBUISimulatedDestinationMetrics">
 					<string key="IBUISimulatedSizeMetricsClass">IBUIScreenMetrics</string>
@@ -235,22 +219,21 @@
 						<reference key="object" ref="766721923"/>
 						<array class="NSMutableArray" key="children">
 							<reference ref="519426224"/>
-							<reference ref="992119782"/>
+							<reference ref="623791900"/>
 						</array>
 						<reference key="parent" ref="0"/>
 					</object>
 					<object class="IBObjectRecord">
-						<int key="objectID">4</int>
-						<reference key="object" ref="992119782"/>
-						<array class="NSMutableArray" key="children"/>
-						<reference key="parent" ref="766721923"/>
-					</object>
-					<object class="IBObjectRecord">
 						<int key="objectID">14</int>
 						<reference key="object" ref="519426224"/>
 						<array class="NSMutableArray" key="children"/>
 						<reference key="parent" ref="766721923"/>
 					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">26</int>
+						<reference key="object" ref="623791900"/>
+						<reference key="parent" ref="766721923"/>
+					</object>
 				</array>
 			</object>
 			<dictionary class="NSMutableDictionary" key="flattenedProperties">
@@ -260,13 +243,13 @@
 				<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
 				<string key="14.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
 				<string key="2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-				<string key="4.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+				<string key="26.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
 			</dictionary>
 			<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
 			<nil key="activeLocalization"/>
 			<dictionary class="NSMutableDictionary" key="localizations"/>
 			<nil key="sourceID"/>
-			<int key="maxID">24</int>
+			<int key="maxID">26</int>
 		</object>
 		<object class="IBClassDescriber" key="IBDocument.Classes">
 			<array class="NSMutableArray" key="referencedPartialClassDescriptions">
--- a/TopButtonViewController.xib	Fri Apr 12 17:50:25 2013 +0100
+++ b/TopButtonViewController.xib	Wed Apr 17 13:44:05 2013 +0100
@@ -45,7 +45,7 @@
 							<object class="IBUISwitch" id="150228020">
 								<reference key="NSNextResponder" ref="358683122"/>
 								<int key="NSvFlags">-2147483356</int>
-								<string key="NSFrame">{{106, 9}, {94, 27}}</string>
+								<string key="NSFrame">{{108, 9}, {94, 27}}</string>
 								<reference key="NSSuperview" ref="358683122"/>
 								<reference key="NSWindow"/>
 								<reference key="NSNextKeyView" ref="459236656"/>
@@ -71,10 +71,11 @@
 								<int key="IBUIStyle">1</int>
 								<reference key="IBUIToolbar" ref="358683122"/>
 							</object>
-							<object class="IBUIBarButtonItem" id="1052071507">
+							<object class="IBUIBarButtonItem" id="101764627">
 								<string key="targetRuntimeIdentifier">IBIPadFramework</string>
+								<float key="IBUIWidth">59</float>
 								<reference key="IBUIToolbar" ref="358683122"/>
-								<int key="IBUISystemItemIdentifier">5</int>
+								<int key="IBUISystemItemIdentifier">6</int>
 							</object>
 							<object class="IBUIBarButtonItem" id="1056681435">
 								<string key="targetRuntimeIdentifier">IBIPadFramework</string>
@@ -110,6 +111,11 @@
 								<int key="IBUIStyle">1</int>
 								<reference key="IBUIToolbar" ref="358683122"/>
 							</object>
+							<object class="IBUIBarButtonItem" id="1052071507">
+								<string key="targetRuntimeIdentifier">IBIPadFramework</string>
+								<reference key="IBUIToolbar" ref="358683122"/>
+								<int key="IBUISystemItemIdentifier">5</int>
+							</object>
 							<object class="IBUIBarButtonItem" id="189059998">
 								<string key="IBUITitle">Lock X</string>
 								<string key="targetRuntimeIdentifier">IBIPadFramework</string>
@@ -138,9 +144,10 @@
 					<object class="IBUILabel" id="459236656">
 						<reference key="NSNextResponder" ref="766721923"/>
 						<int key="NSvFlags">-2147483356</int>
-						<string key="NSFrame">{{60, 11}, {59, 21}}</string>
+						<string key="NSFrame">{{59, 11}, {59, 21}}</string>
 						<reference key="NSSuperview" ref="766721923"/>
 						<reference key="NSWindow"/>
+						<reference key="NSNextKeyView"/>
 						<string key="NSReuseIdentifierKey">_NS:9</string>
 						<bool key="IBUIOpaque">NO</bool>
 						<bool key="IBUIClipsSubviews">YES</bool>
@@ -393,7 +400,6 @@
 							<reference ref="680653375"/>
 							<reference ref="528026433"/>
 							<reference ref="924591997"/>
-							<reference ref="1052071507"/>
 							<reference ref="379344923"/>
 							<reference ref="898331149"/>
 							<reference ref="180077124"/>
@@ -402,6 +408,8 @@
 							<reference ref="552018169"/>
 							<reference ref="996249183"/>
 							<reference ref="1056681435"/>
+							<reference ref="1052071507"/>
+							<reference ref="101764627"/>
 						</array>
 						<reference key="parent" ref="766721923"/>
 					</object>
@@ -456,11 +464,6 @@
 						<reference key="parent" ref="0"/>
 					</object>
 					<object class="IBObjectRecord">
-						<int key="objectID">40</int>
-						<reference key="object" ref="1052071507"/>
-						<reference key="parent" ref="358683122"/>
-					</object>
-					<object class="IBObjectRecord">
 						<int key="objectID">35</int>
 						<reference key="object" ref="319053509"/>
 						<reference key="parent" ref="0"/>
@@ -488,6 +491,16 @@
 						<reference key="object" ref="459236656"/>
 						<reference key="parent" ref="766721923"/>
 					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">54</int>
+						<reference key="object" ref="1052071507"/>
+						<reference key="parent" ref="358683122"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">55</int>
+						<reference key="object" ref="101764627"/>
+						<reference key="parent" ref="358683122"/>
+					</object>
 				</array>
 			</object>
 			<dictionary class="NSMutableDictionary" key="flattenedProperties">
@@ -506,19 +519,20 @@
 				<string key="33.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
 				<string key="35.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
 				<string key="4.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-				<string key="40.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
 				<string key="41.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
 				<string key="44.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
 				<string key="45.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
 				<string key="46.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
 				<string key="5.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+				<string key="54.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+				<string key="55.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
 				<string key="9.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
 			</dictionary>
 			<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
 			<nil key="activeLocalization"/>
 			<dictionary class="NSMutableDictionary" key="localizations"/>
 			<nil key="sourceID"/>
-			<int key="maxID">52</int>
+			<int key="maxID">55</int>
 		</object>
 		<object class="IBClassDescriber" key="IBDocument.Classes">
 			<array class="NSMutableArray" key="referencedPartialClassDescriptions">
--- a/UsernameAlertViewController.h	Fri Apr 12 17:50:25 2013 +0100
+++ b/UsernameAlertViewController.h	Wed Apr 17 13:44:05 2013 +0100
@@ -11,6 +11,9 @@
 @interface UsernameAlertViewController : NSObject <UIAlertViewDelegate, UITextFieldDelegate>
 
 @property (strong,nonatomic) UIAlertView * alert;
+@property (nonatomic, assign)       id theOFAppRef;
 -(void)showUserNamePrompt;
+-(void)setAppRef:(id)theAppRef;
+
 @end
 
--- a/UsernameAlertViewController.mm	Fri Apr 12 17:50:25 2013 +0100
+++ b/UsernameAlertViewController.mm	Wed Apr 17 13:44:05 2013 +0100
@@ -32,7 +32,9 @@
 
     
 }
-
+-(void)setAppRef:(id)theAppRef{
+    self.theOFAppRef = theAppRef;
+}
 
 - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
     
@@ -43,6 +45,7 @@
         return;
     }
     eventLogger.setUsername([userName cStringUsingEncoding:NSASCIIStringEncoding]);
+    ((testApp *)self.theOFAppRef)->startTimedSession();
     
 
 }
--- a/eventLogger.h	Fri Apr 12 17:50:25 2013 +0100
+++ b/eventLogger.h	Wed Apr 17 13:44:05 2013 +0100
@@ -30,7 +30,7 @@
 
 #define EVENT_THIN_FACTOR 12
 #define EVENT_LOG_FILENAME "log.json"
-#define UPLOAD_CHUNK_SIZE 10
+#define UPLOAD_CHUNK_SIZE 1000
 #define APP_CREATION_TIME 381429000000   // milliseconds to the time i wrote this wee blighter. saves digits
 #define SCROLL_TRAIL_LENGTH 200
 #define PROGRAM_VERSION 0.5 // NOW USES NEW HILBERT CURVE. ALL OLD PRESETS WILL BE INVALID :(
@@ -156,7 +156,7 @@
     EventLogger();
     
 // public methods:
-    void init();
+    void startLoadAll();
     void exitAndSave();
     void setUsername(const char *u);
     void newUser();
@@ -193,16 +193,17 @@
     
     ofxiPhoneDeviceType iOSdeviceType;
     
-    void testConnection();
+
     vector<int> questionnaireAnswers;
     int interfaceOrder;
 
 // private methods
+    void testConnection();
     void checkLogFile();
     void deleteLogs(); // new user
     bool uploadEventLog(bool async);
     void firstEverAppOpen();
-    void checkExistingLogFile(const string &jsonFile);
+    void loadExistingLogFile(const string &jsonFile);
     void uploadQuestionnaire();
     bool sendToServer(string functionName, Json::Value jsonData, bool async);
     
--- a/eventLogger.mm	Fri Apr 12 17:50:25 2013 +0100
+++ b/eventLogger.mm	Wed Apr 17 13:44:05 2013 +0100
@@ -46,19 +46,38 @@
     cout << "Device: " << iOSdeviceType << '\n';
     
     nextUploadQty = UPLOAD_CHUNK_SIZE; // amount of data uploaded is always more than UPLOAD_CHUNK_SIZE events
+    serverComms = [[ServerComms alloc] init];
     
 }
-
-void EventLogger::init(){
+//---------------------------------------------------------------------------
+void EventLogger::startLoadAll(){
     
-    checkExistingLogFile(ofxiPhoneGetDocumentsDirectory() + EVENT_LOG_FILENAME);
+    loadExistingLogFile(ofxiPhoneGetDocumentsDirectory() + EVENT_LOG_FILENAME);
+    
+    
     sessionStartTime = ofGetSystemTime();
-
-    logEvent(APP_STARTED);
-
-    serverComms = [[ServerComms alloc] init];
+    testConnection();
     
-    testConnection();
+    // if we have a back log of events upload them
+    if(theEvents.size() > nextUploadQty && ! logUploadInProgress){
+        //try to upload
+        uploadEventLog(true);
+    }
+    
+    if(questionnaireCompleted && !questionnaireUploaded){
+        uploadQuestionnaire();
+    }
+    
+    //TODO if questionnaire wasn't reached but still opened then set the timer to something sensible
+    
+    //timer.setInteractionTime(savedInteractionTime);
+    //timer.setOrderFromPrevious(interfaceOrder);
+    
+   // for now sod it, start from scratch
+    if(!questionnaireCompleted){
+        cout<<"Questionnaire NOT completed - first APP open called\n";
+        firstEverAppOpen();
+    }
 
 }
 //---------------------------------------------------------------------------
@@ -73,8 +92,9 @@
 // this reads the persistent log file , checks if we've used the app before and
 // if we've answered questionnaire or not
 
-// this function is horrible
-void EventLogger::checkExistingLogFile(const string &jsonFile){
+// should just store stuff. the start up state should be handled by testAPp
+
+void EventLogger::loadExistingLogFile(const string &jsonFile){
     Json::Value root;
     Json::Reader reader;
     
@@ -85,7 +105,7 @@
     stringstream fileText;
     string line;
     if(!theFile){
-        
+        cout<<"No event log file found - first APP open called\n";
         firstEverAppOpen();
         return;
     }else{
@@ -96,11 +116,7 @@
         }
         theFile.close();
     }
-    
-    // otherwise, we've been in here before
-    
-    /////////////
-    // Parse json
+
     cout << "size of log JSON string:" << fileText.str().length() << "BYTES \n";
     
     bool parsingSuccessful = reader.parse( fileText.str(), root );
@@ -129,13 +145,9 @@
     const Json::Value jlogs = root["events"];
     
     for ( int index = 0; index < jlogs.size(); ++index ) theEvents.push_back(lEvent(jlogs[index]));
-    if(theEvents.size() > nextUploadQty && ! logUploadInProgress){
-        //try to upload
-        uploadEventLog(true);
-    }
+
     
     //////////////
-    // what stage is the experiment at??
     
     if(questionnaireCompleted && !questionnaireUploaded){
         // then read it in and upload it
@@ -149,40 +161,23 @@
             questionnaireAnswers.push_back(JArray[i].asInt());
         }
         questionnaireComments = JQ["comments"].toStyledString();
-        uploadQuestionnaire();
+        //uploadQuestionnaire();
     }
-    //TODO if questionnaire wasn't reached but still opened then set the timer to something sensible
-    
-    if(!questionnaireCompleted){
-        // for now sod it, start from scratch
-        firstEverAppOpen();
-        return;
-    }
+
     cout << "Total interaction time: " << savedInteractionTime << '\n';
-    
-    //timer.setInteractionTime(savedInteractionTime);
-    //timer.setOrderFromPrevious(interfaceOrder);
-    
-    // otherwise just start
-    ((testApp *)ofGetAppPtr())->justStart();
-    
+   
 }
 
 //---------------------------------------------------------------------------
 
 void EventLogger::firstEverAppOpen(){
-    cout<<"no event log file - first APP open\n";
+    
     nextUploadNumber = 0;
     deviceID = ofGetSystemTimeMicros();
     savedInteractionTime = 0;
     questionnaireCompleted = false;
     questionnaireUploaded = false;
     
-    //((testApp *)ofGetAppPtr())->showIntro();
-    //consentGiven = false;
-    //((testApp *)ofGetAppPtr())->justStart();
-    
-    
 }
 
 
@@ -379,12 +374,7 @@
 // called from alertView OK in iViewController
 void EventLogger::setUsername(const char *u){
     userName = u;
-    // start interaction clock
     
-    //timer.startInteractionClock();
-    [((testApp *)ofGetAppPtr())->tsc startTimer];
-    
-    // press play??
 }
 //---------------------------------------------------------------------------
 void EventLogger::thinnedScrollEvent(lEvent newEvent){
--- a/testApp.h	Fri Apr 12 17:50:25 2013 +0100
+++ b/testApp.h	Wed Apr 17 13:44:05 2013 +0100
@@ -92,6 +92,11 @@
     void draw();
     void exit();
     
+    void initialiseVariables();
+    void initialiseGUIs();
+    void initialiseMIDI();
+
+    
     float getWidth();
     float getHeight();
     
@@ -129,6 +134,7 @@
     void seqStartStop(bool go);
     void showHelp();
     void helpHidden();
+    void startTimedSession();
     // shortcut function for testing
     void justStart();
     void loadSequences();
--- a/testApp.mm	Fri Apr 12 17:50:25 2013 +0100
+++ b/testApp.mm	Wed Apr 17 13:44:05 2013 +0100
@@ -15,8 +15,7 @@
 
 
 //DeviceID3523537000
-//--------------------------------------------------------------
-void testApp::setup(){
+void testApp::initialiseVariables(){
     paused = true;
     sendMIDIAndOSC = false;
     
@@ -55,14 +54,10 @@
     freqIndexes.push_back(8);
     
     
-    ofxiPhoneSetOrientation( OFXIPHONE_ORIENTATION_PORTRAIT ); // do this before setting up all the other objects
-    /*
-    sliderViewController	= [[SliderViewController alloc] initWithNibName:@"SliderViewController" bundle:nil];
-    [ofxiPhoneGetGLParentView() addSubview:sliderViewController.view];
-    [sliderViewController setAppRef:(id)this];
-    sliderViewController.view.frame = CGRectMake(0,getHeight()-43 - 363,getWidth(),363);
-    */
-    // initialise the interfaces
+    ofxiPhoneSetOrientation( OFXIPHONE_ORIENTATION_PORTRAIT );
+    ofxiPhoneExternalDisplay::mirrorOn();
+}
+void testApp::initialiseGUIs(){
     theGridView.init();
     
     setupSliderGui();
@@ -73,17 +68,6 @@
         sliderVals.push_back(64);
     }
     
-    // initialise PD
-    
-	int ticksPerBuffer = 8;	// 8 * 64 = buffer len of 512
-	
-	// setup the app core
-	core.setup(2, 1, 44100, ticksPerBuffer);
-    
-	// setup OF sound stream
-	ofSoundStreamSetup(2, 1, this, 44100, ofxPd::blockSize()*ticksPerBuffer, 3);
-    
-    
     
     // set up iOS gui stuff
     bottomTabViewController	= [[BottomTabViewController alloc] initWithNibName:@"BottomTabViewController" bundle:nil];
@@ -102,39 +86,26 @@
     topButtonViewController.view.frame = CGRectMake(0,0,getWidth(),44);
     
     usernameAlertViewController = [[UsernameAlertViewController alloc] init];
+    [usernameAlertViewController setAppRef:(id)this];
     
     helpViewController	= [[HelpViewController alloc] initWithNibName:@"HelpViewController" bundle:nil];
     [ofxiPhoneGetGLParentView() addSubview:helpViewController.view];
     [helpViewController setAppRef:(id)this];
     helpViewController.view.hidden = YES;
     
+    /*
+     sliderViewController	= [[SliderViewController alloc] initWithNibName:@"SliderViewController" bundle:nil];
+     [ofxiPhoneGetGLParentView() addSubview:sliderViewController.view];
+     [sliderViewController setAppRef:(id)this];
+     sliderViewController.view.frame = CGRectMake(0,getHeight()-43 - 363,getWidth(),363);
+     //[sliderViewController show:(id)this];
+     */
     
+    setAllGUISliders(theGridView.getParams());
     
-    // load preset sequences
-    loadSequences();
-    
-    // initialise user logging stuff
-    presetManager.startLoadAll();
-    tsc = [[TimedSessionController alloc] init];
-    [tsc setAppRef:(id)this];
-    eventLogger.init();
-    
-    // timer.init();
-	whichInterfaceShowing = BOTH; // but timer will change this
-    
-    
-    if(eventLogger.questionnaireCompleted){
-        [bottomTabViewController show:(id)this withSelection:1];
-    }
-    setAllGUISliders(theGridView.getParams());
-    // GO
-    paused = false;
-    
-    randomise(); // everyone starts from random position (or where they left off??)
-    
-    ofxiPhoneExternalDisplay::mirrorOn();
-    
-    //[sliderViewController show:(id)this];
+}
+
+void testApp::initialiseMIDI(){
     
     /////////////////////////
     // MIDI
@@ -182,7 +153,50 @@
 	ofxMidi::setConnectionListener(this);
     
     // END MIDI
+
+}
+//--------------------------------------------------------------
+void testApp::setup(){
     
+    // initilaise
+    
+    initialiseVariables();
+    initialiseGUIs();
+       
+    // initialise PD
+    
+	int ticksPerBuffer = 8;	// 8 * 64 = buffer len of 512
+	core.setup(2, 1, 44100, ticksPerBuffer);
+    
+	// setup OF sound stream
+	ofSoundStreamSetup(2, 1, this, 44100, ofxPd::blockSize()*ticksPerBuffer, 3);
+
+    tsc = [[TimedSessionController alloc] init];
+    [tsc setAppRef:(id)this];
+    
+    //--------------------------------------
+    // load stuff
+    loadSequences();
+    
+    // load presets
+    presetManager.startLoadAll();
+
+    eventLogger.startLoadAll();
+    //--------------------------------------
+
+   // now do things that will affect the start up state of the app
+    
+    if(eventLogger.questionnaireCompleted){ // then we go into do-what-you-like mode
+
+        freeUseMode();
+    }else{
+        // then we're in timed session mode
+        showIntro();
+    }
+    
+    // GO
+    paused = false;
+    eventLogger.logEvent(APP_STARTED);
 }
 
 
@@ -351,6 +365,11 @@
     // no unOK
 }
 //--------------------------------------------------------------
+void testApp::startTimedSession(){
+    [tsc startTimer];
+    // timer will show alert and set interface
+}
+//--------------------------------------------------------------
 // called from BottomTabViewController iOS segmented thing, also timed session controller
 void testApp::interfaceSelected(int which){
     switch (which){
@@ -394,7 +413,7 @@
 
     float dim = (height-10.0*OFX_UI_GLOBAL_WIDGET_SPACING)/10.0;
     // LEFT GUI
-    sliderGUI = new ofxUICanvas(0,160,SLIDER_GUI_WIDTH,getHeight());
+    sliderGUI = new ofxUICanvas(10,160,SLIDER_GUI_WIDTH,getHeight());
     
     // Uh.. loop this
     for(int i = 1; i<=10;i++){