Mercurial > hg > soniczoomios
changeset 33:92dba082d957
Added trail and EVALUATION_POINT event type.
author | Robert Tubb <rt300@eecs.qmul.ac.uk> |
---|---|
date | Tue, 26 Mar 2013 18:41:42 +0000 |
parents | ab7c86d0f3d8 |
children | 94df2cd72d7b |
files | HelpViewController.xib IntroViewController.xib QuestionnaireViewController.mm QuestionnaireViewController.xib TimedSessionController.mm eventLogger.h eventLogger.mm grid.mm testApp.h testApp.mm |
diffstat | 10 files changed, 368 insertions(+), 101 deletions(-) [+] |
line wrap: on
line diff
--- a/HelpViewController.xib Fri Mar 08 14:54:55 2013 +0000 +++ b/HelpViewController.xib Tue Mar 26 18:41:42 2013 +0000 @@ -56,37 +56,37 @@ <object class="NSAttributedString" key="IBUIAttributedText"> <string type="base64-UTF8" key="NSString">SU5TVFJVQ1RJT05TDQ1QcmVzcyB0aGUgcGxheSBidXR0b24gYXQgdGhlIHRvcCB0byBzdGFydCB0aGUg c2VxdWVuY2VyLiBQcmVzcyBwYXVzZSB0byBzdG9wLg1Zb3Ugd2lsbCBiZSB1c2luZyBhbGwgdGhyZWUg -bW9kZXM6IGZpcnN0IHRoZSBTTElERVJTLCB0aGVuIHRoZSBaT09NRVIgYW5kIHRoZW4gQk9USCBmb3Ig -YWJvdXQgNiBtaW51dGVzIGVhY2guIEFmdGVyIHlvdSBjb21wbGV0ZSB0aGUgdGltZWQgc2Vzc2lvbnMg -YW5kIHRoZSBxdWVzdGlvbm5haXJlLCB5b3UgY2FuIGFjY2VzcyB0aGVzZSB1c2luZyB0aGUgdGFicyBh -dCB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4uIA0NT1BFUkFUSU5HIFRIRSBaT09NRVLigKgNVGhlIHJl -ZCBjcm9zc2hhaXJzIGluIHRoZSBjZW50cmUgb2YgdGhlIHNjcmVlbiByZXByZXNlbnQgdGhlIHBvaW50 -IG9uIHRoZSBzdXJmYWNlIHRoYXQgeW91IGFyZSBsaXN0ZW5pbmcgdG8uIFNjcm9sbCB0aGUgc3VyZmFj -ZSB1bmRlciB0aGlzIHBvaW50IHRvIG1vdmUgdG8gYSBkaWZmZXJlbnQgc291bmQuIEluIEJPVEggbW9k -ZSB5b3Ugd2lsbCBiZSBhYmxlIHRvIHNlZSB0aGUgZWZmZWN0IG9mIHRoaXMgb24gdGhlIHNsaWRlcnMu -IExpa2V3aXNlIGlmIHlvdSBtb3ZlIGEgc2xpZGVyIHlvdSB3aWxsIGhvcCB0byBhIGRpZmZlcmVudCBw -b2ludCBvbiB0aGUgc3VyZmFjZS7igKgNU2F2ZSBhbnkgc291bmRzL3NlcXVlbmNlcyB0aGF0IHlvdSBs -aWtlIHVzaW5nIHRoZSDigJxzYXZlIHByZXNldOKAnSBidXR0b24uIEEgbWFya2VyIHdpbGwgYXBwZWFy -IG9uIHRoZSB6b29tIHN1cmZhY2UuIElmIHlvdSBtb3ZlIHRvIHRoZSB2aWNpbml0eSBvZiBhIHByZXNl -dCBtYXJrZXIsIHRoZSBjcm9zc2hhaXJzIHdpbGwgc25hcCB0byB0aGUgcHJlc2V0LCBpdHMgZGV0YWls -cyB3aWxsIGFwcGVhciBhbmQgdGhlIHNvdW5kIHdpbGwgcGxheS4N4oCoVXNpbmcgdHdvIGZpbmdlciBw -aW5jaCBtb3ZlbWVudCB6b29tcyB0aGUgc3VyZmFjZSBqdXN0IGFzIGluIGEgbWFwcyBhcHAuIFRoZSBm -dXJ0aGVyIHlvdSB6b29tIGluLCB0aGUgbGVzcyB0aGUgc291bmQgd2lsbCBjaGFuZ2UgYXMgeW91IHNj -cm9sbCBhcm91bmQuIEZvciBleGFtcGxlIHRoZSB5ZWxsb3cgbGluZXMgdGhhdCBhcHBlYXIgYXQgdGhl -IGxhcmdlc3Qgc2NhbGUgY29ycmVzcG9uZCB0byB0aGUgc2xpZGVycyBqdW1waW5nIDY0IHVuaXRzLiBU -aGUgd2hpdGUgbGluZXMgYXQgdGhlIHNtYWxsZXN0IHNjYWxlIGNvcnJlc3BvbmQgdG8ganVtcHMgb2Yg -b25lIHVuaXQuIFRoZXJlIGFyZSA3IGxldmVsczrigKjigKhZZWxsb3cgPSA2NOKAqFRlYWwgPSAzMuKA -qFB1cnBsZSA9IDE24oCoR3JlZW4gPSA44oCoRGFyayBCbHVlID0gNOKAqFJlZCA9IDLigKhXaGl0ZSA9 -IDHigKjigKhMT0NL4oCo4oCoSWYgeW91IGZpbmQgYSBzZXF1ZW5jZSB5b3UgbGlrZSBidXQgd2FudCB0 -byBjaGFuZ2UgdGhlIHN5bnRoIHNvdW5kIHVzZSB0aGUgIkxvY2sgU2VxdWVuY2UgKFgpIiBidXR0b24u -IFRoaXMgd2lsbCBwcmV2ZW50IHlvdSBhY2NpZGVudGFsbHkgbW92aW5nIGluIGZyb20gbGVmdCB0byBy -aWdodCBhbmQgbWVzc2luZyB1cCB5b3VyIG5vdGUgcGF0dGVybi4gU2ltaWxhcmx5IGlmIHlvdSBmaW5k -IGEgc3ludGggc291bmQgdGhhdCB5b3UgbGlrZSwgYnV0IHdhbnQgdG8gY2hhbmdlIHRoZSBub3RlIHNl -cXVlbmNlLCB1c2UgdGhlICJMb2NrIFN5bnRoIChZKSIgYnV0dG9uLiDigKjigKhSQU5ET01JU0XigKji -gKhVc2UgdGhlIHJhbmRvbWlzZSB0byBqdW1wIHRvIGEgcmFuZG9tIHBvaW50IG9uIHRoZSBncmlkLiDi -gKjigKhUSEUgUVVFU1RJT05OQUlSReKAqOKAqFRoZXJlIGFyZSBhcm91bmQgMTcgc2ltcGxlIG11bHRp -cGxlIGNob2ljZSBxdWVzdGlvbnMgdG8gYW5zd2VyLCBhbmQgYSB0ZXh0IGZlZWRiYWNrIGJveC4gWW91 -ciBmZWVkYmFjayBpcyBhcHByZWNpYXRlZCENDQ</string> +bW9kZXM6IHRoZSBTTElERVJTLCB0aGUgWk9PTUVSIGFuZCBCT1RIIGZvciBhYm91dCA1IG1pbnV0ZXMg +ZWFjaCwgaW4gYSByYW5kb20gb3JkZXIuIEFmdGVyIHlvdSBjb21wbGV0ZSB0aGUgdGltZWQgc2Vzc2lv +bnMgYW5kIHRoZSBxdWVzdGlvbm5haXJlLCB5b3UgY2FuIGFjY2VzcyB0aGVzZSB1c2luZyB0aGUgdGFi +cyBhdCB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4uIA0NT1BFUkFUSU5HIFRIRSBaT09NRVLigKgNVGhl +IHJlZCBjcm9zc2hhaXJzIGluIHRoZSBjZW50cmUgb2YgdGhlIHNjcmVlbiByZXByZXNlbnQgdGhlIHBv +aW50IG9uIHRoZSBzdXJmYWNlIHRoYXQgeW91IGFyZSBsaXN0ZW5pbmcgdG8uIFNjcm9sbCB0aGUgc3Vy +ZmFjZSB1bmRlciB0aGlzIHBvaW50IHRvIG1vdmUgdG8gYSBkaWZmZXJlbnQgc291bmQuIEluIEJPVEgg +bW9kZSB5b3Ugd2lsbCBiZSBhYmxlIHRvIHNlZSB0aGUgZWZmZWN0IG9mIHRoaXMgb24gdGhlIHNsaWRl +cnMuIExpa2V3aXNlIGlmIHlvdSBtb3ZlIGEgc2xpZGVyIHlvdSB3aWxsIGhvcCB0byBhIGRpZmZlcmVu +dCBwb2ludCBvbiB0aGUgc3VyZmFjZS7igKgNU2F2ZSBhbnkgc291bmRzL3NlcXVlbmNlcyB0aGF0IHlv +dSBsaWtlIHVzaW5nIHRoZSDigJxzYXZlIHByZXNldOKAnSBidXR0b24uIEEgbWFya2VyIHdpbGwgYXBw +ZWFyIG9uIHRoZSB6b29tIHN1cmZhY2UuIElmIHlvdSBtb3ZlIHRvIHRoZSB2aWNpbml0eSBvZiBhIHBy +ZXNldCBtYXJrZXIsIHRoZSBjcm9zc2hhaXJzIHdpbGwgc25hcCB0byB0aGUgcHJlc2V0LCBpdHMgZGV0 +YWlscyB3aWxsIGFwcGVhciBhbmQgdGhhdCBzb3VuZCB3aWxsIHBsYXkuDeKAqFVzaW5nIHR3byBmaW5n +ZXIgcGluY2ggbW92ZW1lbnQgem9vbXMgdGhlIHN1cmZhY2UganVzdCBhcyBpbiBhIG1hcHMgYXBwLiBU +aGUgZnVydGhlciB5b3Ugem9vbSBpbiwgdGhlIGxlc3MgdGhlIHNvdW5kIHdpbGwgY2hhbmdlIGFzIHlv +dSBzY3JvbGwgYXJvdW5kLiBGb3IgZXhhbXBsZSB0aGUgeWVsbG93IGxpbmVzIHRoYXQgYXBwZWFyIGF0 +IHRoZSBsYXJnZXN0IHNjYWxlIGNvcnJlc3BvbmQgdG8gdGhlIHNsaWRlcnMganVtcGluZyA2NCB1bml0 +cy4gVGhlIHdoaXRlIGxpbmVzIGF0IHRoZSBzbWFsbGVzdCBzY2FsZSBjb3JyZXNwb25kIHRvIGp1bXBz +IG9mIG9uZSB1bml0LiBUaGVyZSBhcmUgNyBsZXZlbHM64oCo4oCoWWVsbG93ID0gNjTigKhUZWFsID0g +MzLigKhQdXJwbGUgPSAxNuKAqEdyZWVuID0gOOKAqERhcmsgQmx1ZSA9IDTigKhSZWQgPSAy4oCoV2hp +dGUgPSAx4oCo4oCoTE9DS+KAqOKAqElmIHlvdSBmaW5kIGEgc2VxdWVuY2UgeW91IGxpa2UgYnV0IHdh +bnQgdG8gY2hhbmdlIHRoZSBzeW50aCBzb3VuZCB1c2UgdGhlICJMb2NrIFNlcXVlbmNlIChYKSIgYnV0 +dG9uLiBUaGlzIHdpbGwgcHJldmVudCB5b3UgYWNjaWRlbnRhbGx5IG1vdmluZyBpbiBmcm9tIGxlZnQg +dG8gcmlnaHQgYW5kIG1lc3NpbmcgdXAgeW91ciBub3RlIHBhdHRlcm4uIFNpbWlsYXJseSBpZiB5b3Ug +ZmluZCBhIHN5bnRoIHNvdW5kIHRoYXQgeW91IGxpa2UsIGJ1dCB3YW50IHRvIGNoYW5nZSB0aGUgbm90 +ZSBzZXF1ZW5jZSwgdXNlIHRoZSAiTG9jayBTeW50aCAoWSkiIGJ1dHRvbi4g4oCo4oCoUkFORE9NSVNF +4oCo4oCoVXNlIHRoZSByYW5kb21pc2UgdG8ganVtcCB0byBhIHJhbmRvbSBwb2ludCBvbiB0aGUgZ3Jp +ZC4g4oCo4oCoVEhFIFFVRVNUSU9OTkFJUkXigKjigKhUaGVyZSBhcmUgYXJvdW5kIDE1IHNpbXBsZSBt +dWx0aXBsZSBjaG9pY2UgcXVlc3Rpb25zIHRvIGFuc3dlciwgYW5kIGEgdGV4dCBmZWVkYmFjayBib3gu +IFlvdXIgZmVlZGJhY2sgaXMgYXBwcmVjaWF0ZWQhDQ0</string> <dictionary key="NSAttributes"> <object class="NSColor" key="NSColor"> <int key="NSColorSpace">1</int> @@ -114,7 +114,6 @@ <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>
--- a/IntroViewController.xib Fri Mar 08 14:54:55 2013 +0000 +++ b/IntroViewController.xib Tue Mar 26 18:41:42 2013 +0000 @@ -98,36 +98,36 @@ dXNlIHRoZSBkYXRhIHRvIGNyZWF0ZSBzeW50aHMgdGhhdCBhcmUgZWFzaWVyIHRvIG5hdmlnYXRlLCBh bmQgaG9wZWZ1bGx5IGVuY291cmFnZSBjcmVhdGl2aXR5Lg0NVGhlcmUgYXJlIHR3byBpbnRlcmZhY2Vz IHByZXNlbnRlZCBoZXJlLiBUaGUgZmlyc3QgaXMgb25lIHlvdSB3aWxsIHByb2JhYmx5IGJlIHVzZWQg -dG8gaWYgeW91IGFyZSBhIG11c2ljaWFuOiAxMCBzbGlkZXJzIGZvciBlYWNoIG9mIHRoZSBwYXJhbWV0 -ZXJzLiBUaGUgc2Vjb25kIGlzIHNvbWV3aGF0IG5ldzogZXZlcnkgb25lIG9mIHRoZSBiaWxsaW9uIHRy -aWxsaW9uIHBvaW50cyBoYXMgYmVlbiBtYXBwZWQgdG8gYSAyRCBzdXJmYWNlLiBCdXQgYmFzaWNhbGx5 -LCB0aGUgZnVydGhlciB5b3UgdHJhdmVsIGFsb25nIHRoaXMgMkQgc3VyZmFjZSwgdGhlIG1vcmUgZGlm -ZmVyZW50IHRoZSBzb3VuZCB3aWxsIGJlY29tZS4NDVVwIGRvd24gbW92ZW1lbnQgY29udHJvbHMgdGhl -IHN5bnRoIHRpbWJyZSwgbGVmdCByaWdodCBjb250cm9scyB0aGUgc2VxdWVuY2VyLiBXaGVuIHlvdSBj -bGljayDigJxzYXZlIHByZXNldOKAnSB5b3Ugd2lsbCBkcm9wIGEgcGluIG9udG8gdGhlIHN1cmZhY2Us -IGFuZCB5b3UgY2FuIHJldmlzaXQgdGhpcyBwb2ludCBhdCBhbnl0aW1lIGJ5IHNjcm9sbGluZyB0byBp -dC4gVGhpbmsgb2YgaXQgbGlrZSBhICJHb29nbGUgTWFwcyIgZm9yIHN5bnRoIHNvdW5kcy4uLg0NWW91 -IGNhbiB1c2UgYSBwaW5jaCBnZXN0dXJlIHRvIHpvb20gaW4gYW5kIG91dCBvZiB0aGUgc3VyZmFjZS4g -SW4gdGhpcyB3YXksIHlvdSBjYW4gZXhwbG9yZSB0aGUgIm5laWdoYm91cmhvb2QiIG9mIGEgcGFydGlj -dWxhciBzb3VuZC4gWm9vbWluZyBpbiB3aWxsIGVuYWJsZSB5b3UgdG8gZXhwbG9yZSBzbWFsbGVyIGxv -Y2FsaXRpZXMgb2YgdGhlIHNvdW5kIHNwYWNlLiBab29taW5nIG91dCB3aWxsIGdpdmUgeW91IGEgYmln -Z2VyIHBlcnNwZWN0aXZlLCBidXQgb2YgY291cnNlIHRoZSB0cmFuc2l0aW9ucyB3aWxsIGJlY29tZSBt -b3JlIHN1ZGRlbiBhbmQgcmFuZG9tIGFzIHlvdSBtb3ZlIGJpZ2dlciBkaXN0YW5jZXMuDQ1XaGF0IHdl -IGFyZSBhc2tpbmcgeW91LCB0aGUgcGFydGljaXBhbnQsIHRvIGRvIGlzIHVzZSB0aGUgem9vbWVyLCB0 -aGUgc2xpZGVycyBhbmQgYSBjb21iaW5hdGlvbiBvZiBib3RoIGZvciA1IG1pbnV0ZXMgZWFjaCwgYW5k -IHNhdmUgYW55IHNvdW5kcyB0aGF0IHlvdSBsaWtlLiBBbHNvIGNoZWNrIG91dCB0aGUgInJhbmRvbWlz -ZSIgYW5kICJsb2NrIiBidXR0b25zLiBBZnRlciB0aGlzIGEgc2hvcnQgcXVlc3Rpb25uYWlyZSB3aWxs -IGFwcGVhciB0aGF0IHdpbGwgaGVscCB1cyBhc3Nlc3MgdGhlIGludGVyZmFjZSBmdXJ0aGVyLiBBZnRl -ciB0aGF0LCBwbGVhc2UgZmVlbCBmcmVlIHRvIHVzZSBpdCBzb21lIG1vcmU6IHRoZSBtb3JlIGRhdGEg -d2UgZ2V0IHRoZSBiZXR0ZXIuIEZ1cnRoZXIgZXhjaXRpbmcgZmVhdHVyZXMgYXJlIHBsYW5uZWQgZm9y -IHRoaXMgYXBwLCBzbyBwbGVhc2Ugd2F0Y2ggb3V0IGZvciB1cGRhdGVzLg0NTk9URTogWW91ciBhY3Rp -b25zIHdpbGwgYmUgbG9nZ2VkLCBhbmQgc2VudCB0byBhIHNlY3VyZSBzZXJ2ZXIgaGVyZSBhdCBRdWVl -biBNYXJ5IFVuaXZlcnNpdHkuICBIb3dldmVyIG5vIHBlcnNvbmFsIGRhdGEgKG5hbWUsIGVtYWlsIGV0 -Yy4pIHdpbGwgYmUgY29sbGVjdGVkLCBhc3NvY2lhdGVkIHdpdGggdGhpcyBJRCBvciBzdG9yZWQgaW4g -dGhlIGRhdGFiYXNlLiBJdCBpcyBoaWdobHkgcmVjb21tZW5kZWQgdGhhdCB5b3UgYXJlIGNvbm5lY3Rl -ZCB0byBXaUZpIGludGVybmV0IHdoaWxzdCB1c2luZyB0aGlzIEFwcCwgb3RoZXJ3aXNlIHRoZSBsb2cg -ZGF0YSB3aWxsIHRha2UgdXAgc3BhY2Ugb24geW91ciBkZXZpY2UuDVRvIGNvbnNlbnQgdG8gdGhpcyBw -bGVhc2UgcHJlc3MgIkFncmVlIiBiZWxvdy4gVG8gZGVjbGluZSBqdXN0IGV4aXQgdGhlIGFwcC4NA</bytes> +dG8gaWYgeW91IGFyZSBhbiBlbGVjdHJvbmljIG11c2ljaWFuOiAxMCBzbGlkZXJzIGZvciBlYWNoIG9m +IHRoZSBwYXJhbWV0ZXJzLiBUaGUgc2Vjb25kIGlzIHNvbWV3aGF0IG5ldzogZXZlcnkgb25lIG9mIHRo +ZSBiaWxsaW9uIHRyaWxsaW9uIHBvaW50cyBoYXMgYmVlbiBtYXBwZWQgdG8gYSAyRCBzdXJmYWNlLiBC +dXQgYmFzaWNhbGx5LCB0aGUgZnVydGhlciB5b3UgdHJhdmVsIGFsb25nIHRoaXMgMkQgc3VyZmFjZSwg +dGhlIG1vcmUgZGlmZmVyZW50IHRoZSBzb3VuZCB3aWxsIGJlY29tZS4NDVVwIGRvd24gbW92ZW1lbnQg +Y29udHJvbHMgdGhlIHN5bnRoIHRpbWJyZSwgbGVmdCByaWdodCBjb250cm9scyB0aGUgc2VxdWVuY2Vy +LiBXaGVuIHlvdSBjbGljayDigJxzYXZlIHByZXNldOKAnSB5b3Ugd2lsbCBkcm9wIGEgcGluIG9udG8g +dGhlIHN1cmZhY2UsIGFuZCB5b3UgY2FuIHJldmlzaXQgdGhpcyBwb2ludCBhdCBhbnl0aW1lIGJ5IHNj +cm9sbGluZyB0byBpdC4gVGhpbmsgb2YgaXQgbGlrZSBhICJHb29nbGUgTWFwcyIgZm9yIHN5bnRoIHNv +dW5kcy4uLg0NWW91IGNhbiB1c2UgYSBwaW5jaCBnZXN0dXJlIHRvIHpvb20gaW4gYW5kIG91dCBvZiB0 +aGUgc3VyZmFjZS4gSW4gdGhpcyB3YXksIHlvdSBjYW4gZXhwbG9yZSB0aGUgIm5laWdoYm91cmhvb2Qi +IG9mIGEgcGFydGljdWxhciBzb3VuZC4gWm9vbWluZyBpbiB3aWxsIGVuYWJsZSB5b3UgdG8gZXhwbG9y +ZSBzbWFsbGVyIGxvY2FsaXRpZXMgb2YgdGhlIHNvdW5kIHNwYWNlLiBab29taW5nIG91dCB3aWxsIGdp +dmUgeW91IGEgYmlnZ2VyIHBlcnNwZWN0aXZlLCBidXQgb2YgY291cnNlIHRoZSB0cmFuc2l0aW9ucyB3 +aWxsIGJlY29tZSBtb3JlIHN1ZGRlbiBhbmQgcmFuZG9tIGFzIHlvdSBtb3ZlIGJpZ2dlciBkaXN0YW5j +ZXMuDQ1XaGF0IHdlIGFyZSBhc2tpbmcgeW91LCB0aGUgcGFydGljaXBhbnQsIHRvIGRvIGlzIHVzZSB0 +aGUgem9vbWVyLCB0aGUgc2xpZGVycyBhbmQgYSBjb21iaW5hdGlvbiBvZiBib3RoIGZvciA1IG1pbnV0 +ZXMgZWFjaCwgYW5kIHNhdmUgYW55IHNvdW5kcyB0aGF0IHlvdSBsaWtlLiBUaGUgaW50ZXJmYWNlcyB3 +aWxsIHN3YXAgYXV0b21hdGljYWxseS4gQWxzbyBjaGVjayBvdXQgdGhlICJyYW5kb21pc2UiIGFuZCAi +bG9jayIgYnV0dG9ucy4gQWZ0ZXIgdGhpcyBhIHNob3J0IHF1ZXN0aW9ubmFpcmUgd2lsbCBhcHBlYXIg +dGhhdCB3aWxsIGhlbHAgdXMgYXNzZXNzIHRoZSBpbnRlcmZhY2UgZnVydGhlci4gQWZ0ZXIgdGhhdCwg +cGxlYXNlIGZlZWwgZnJlZSB0byB1c2UgaXQgc29tZSBtb3JlOiB0aGUgbW9yZSBkYXRhIHdlIGdldCB0 +aGUgYmV0dGVyLiDigKjigKhQTEVBU0UgTk9URTogWW91ciBhY3Rpb25zIHdpbGwgYmUgbG9nZ2VkLCBh +bmQgc2VudCB0byBhIHNlY3VyZSBzZXJ2ZXIgaGVyZSBhdCBRdWVlbiBNYXJ5IFVuaXZlcnNpdHkuICBI +b3dldmVyIG5vIHBlcnNvbmFsIGRhdGEgKG5hbWUsIGVtYWlsIGV0Yy4pIHdpbGwgYmUgY29sbGVjdGVk +LCBhc3NvY2lhdGVkIHdpdGggdGhpcyBJRCBvciBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLiBJdCBpcyBo +aWdobHkgcmVjb21tZW5kZWQgdGhhdCB5b3UgYXJlIGNvbm5lY3RlZCB0byBXaUZpIGludGVybmV0IHdo +aWxzdCB1c2luZyB0aGlzIEFwcCwgb3RoZXJ3aXNlIHRoZSBsb2cgZGF0YSB3aWxsIHRha2UgdXAgc3Bh +Y2Ugb24geW91ciBkZXZpY2UuDVRvIGNvbnNlbnQgdG8gdGhpcyBwbGVhc2UgcHJlc3MgIkFncmVlIiBi +ZWxvdy4gVG8gZGVjbGluZSBqdXN0IGV4aXQgdGhlIGFwcC4NA</bytes> </object> <object class="NSColor" key="IBUITextColor"> <int key="NSColorSpace">1</int>
--- a/QuestionnaireViewController.mm Fri Mar 08 14:54:55 2013 +0000 +++ b/QuestionnaireViewController.mm Tue Mar 26 18:41:42 2013 +0000 @@ -59,7 +59,7 @@ // load question 1 [self loadQuestion:self.currentQuestionIndex]; - self.previousButton.hidden = YES; // dont bother + self.previousButton.hidden = NO; // bother self.commentText.hidden = YES; self.finishButton.hidden = YES; self.nextButton.hidden = YES; @@ -171,7 +171,7 @@ self.numberChooser.hidden = YES; self.commentText.hidden = NO; - self.questionText.text = @"Thanks for helping science help you. Feel free to add further comments in the text box below, and then press 'finish' to go back and use the app, unhassled."; + self.questionText.text = @"Thanks for helping science help you. Feel free to add further comments in the text box below, and then press 'finish' to go back and use the app."; } //---------------------------------------------------------------- @@ -187,7 +187,7 @@ // refresh picker view content - [picker reloadComponent:0]; + //[picker reloadComponent:0]; // show correct option number labels if(curQ.questionType == AGREE_DISAGREE){ @@ -199,7 +199,9 @@ } //NSLog(@"Prev answer answerInt %d", curQ.answer); - [picker selectRow:2 inComponent:0 animated:YES]; + //[picker selectRow:2 inComponent:0 animated:YES]; + + // what about unselecting segment? } // 1/3/13 removed q 6 and 15. now only 15 qs @@ -220,7 +222,6 @@ [[Question alloc] initWithTextAndType:@"The interface better for generating new ideas was...":SLIDERS_ZOOMER], [[Question alloc] initWithTextAndType:@"The interface better for performing live would be...":SLIDERS_ZOOMER], [[Question alloc] initWithTextAndType:@"The Zoomer was an improvement on just using a randomiser.":AGREE_DISAGREE], - [[Question alloc] initWithTextAndType:@"The combination of Zoomer and Sliders was better than either individually.":AGREE_DISAGREE], [[Question alloc] initWithTextAndType:@"Overall, the interface I preferred using was...":SLIDERS_ZOOMER], // ?????? nil];
--- a/QuestionnaireViewController.xib Fri Mar 08 14:54:55 2013 +0000 +++ b/QuestionnaireViewController.xib Tue Mar 26 18:41:42 2013 +0000 @@ -44,6 +44,7 @@ <int key="NSvFlags">292</int> <string key="NSFrame">{{324, 706}, {121, 44}}</string> <reference key="NSSuperview" ref="766721923"/> + <reference key="NSWindow"/> <reference key="NSNextKeyView" ref="960474577"/> <string key="NSReuseIdentifierKey">_NS:9</string> <bool key="IBUIOpaque">NO</bool> @@ -79,6 +80,7 @@ <int key="NSvFlags">292</int> <string key="NSFrame">{{143, 220}, {275, 53}}</string> <reference key="NSSuperview" ref="766721923"/> + <reference key="NSWindow"/> <reference key="NSNextKeyView" ref="692955189"/> <string key="NSReuseIdentifierKey">_NS:9</string> <bool key="IBUIOpaque">NO</bool> @@ -111,6 +113,7 @@ <int key="NSvFlags">292</int> <string key="NSFrame">{{144, 281}, {472, 138}}</string> <reference key="NSSuperview" ref="766721923"/> + <reference key="NSWindow"/> <reference key="NSNextKeyView" ref="660724550"/> <string key="NSReuseIdentifierKey">_NS:9</string> <bool key="IBUIOpaque">NO</bool> @@ -143,6 +146,7 @@ <int key="NSvFlags">292</int> <string key="NSFrame">{{425, 706}, {121, 44}}</string> <reference key="NSSuperview" ref="766721923"/> + <reference key="NSWindow"/> <reference key="NSNextKeyView" ref="791686696"/> <string key="NSReuseIdentifierKey">_NS:9</string> <bool key="IBUIOpaque">NO</bool> @@ -163,13 +167,13 @@ <object class="IBUIButton" id="356964106"> <reference key="NSNextResponder" ref="766721923"/> <int key="NSvFlags">292</int> - <string key="NSFrame">{{212, 706}, {157, 44}}</string> + <string key="NSFrame">{{51, 706}, {157, 44}}</string> <reference key="NSSuperview" ref="766721923"/> + <reference key="NSWindow"/> <reference key="NSNextKeyView" ref="871929113"/> <string key="NSReuseIdentifierKey">_NS:9</string> <bool key="IBUIOpaque">NO</bool> <string key="targetRuntimeIdentifier">IBIPadFramework</string> - <bool key="IBUIEnabled">NO</bool> <int key="IBUIContentHorizontalAlignment">0</int> <int key="IBUIContentVerticalAlignment">0</int> <int key="IBUIButtonType">1</int> @@ -188,6 +192,7 @@ <int key="NSvFlags">-2147483358</int> <string key="NSFrame">{{413, 788}, {334, 216}}</string> <reference key="NSSuperview" ref="766721923"/> + <reference key="NSWindow"/> <string key="NSReuseIdentifierKey">_NS:9</string> <string key="targetRuntimeIdentifier">IBIPadFramework</string> <bool key="IBUIShowsSelectionIndicator">YES</bool> @@ -197,6 +202,7 @@ <int key="NSvFlags">292</int> <string key="NSFrame">{{212, 468}, {334, 230}}</string> <reference key="NSSuperview" ref="766721923"/> + <reference key="NSWindow"/> <reference key="NSNextKeyView" ref="356964106"/> <string key="NSReuseIdentifierKey">_NS:9</string> <object class="NSColor" key="IBUIBackgroundColor"> @@ -227,6 +233,7 @@ <int key="NSvFlags">292</int> <string key="NSFrame">{{51, 533}, {667, 44}}</string> <reference key="NSSuperview" ref="766721923"/> + <reference key="NSWindow"/> <reference key="NSNextKeyView" ref="960632081"/> <string key="NSReuseIdentifierKey">_NS:9</string> <bool key="IBUIOpaque">NO</bool> @@ -278,6 +285,7 @@ <int key="NSvFlags">292</int> <string key="NSFrame">{{7, 29}, {132, 69}}</string> <reference key="NSSuperview" ref="638395666"/> + <reference key="NSWindow"/> <reference key="NSNextKeyView" ref="340544853"/> <string key="NSReuseIdentifierKey">_NS:9</string> <bool key="IBUIOpaque">NO</bool> @@ -314,6 +322,7 @@ <int key="NSvFlags">292</int> <string key="NSFrame">{{139, 29}, {132, 69}}</string> <reference key="NSSuperview" ref="638395666"/> + <reference key="NSWindow"/> <reference key="NSNextKeyView" ref="674807401"/> <string key="NSReuseIdentifierKey">_NS:9</string> <bool key="IBUIOpaque">NO</bool> @@ -341,6 +350,7 @@ <int key="NSvFlags">292</int> <string key="NSFrame">{{267, 29}, {132, 69}}</string> <reference key="NSSuperview" ref="638395666"/> + <reference key="NSWindow"/> <reference key="NSNextKeyView" ref="85392105"/> <string key="NSReuseIdentifierKey">_NS:9</string> <bool key="IBUIOpaque">NO</bool> @@ -368,6 +378,7 @@ <int key="NSvFlags">292</int> <string key="NSFrame">{{399, 29}, {132, 69}}</string> <reference key="NSSuperview" ref="638395666"/> + <reference key="NSWindow"/> <reference key="NSNextKeyView" ref="36668958"/> <string key="NSReuseIdentifierKey">_NS:9</string> <bool key="IBUIOpaque">NO</bool> @@ -395,6 +406,7 @@ <int key="NSvFlags">292</int> <string key="NSFrame">{{535, 29}, {132, 69}}</string> <reference key="NSSuperview" ref="638395666"/> + <reference key="NSWindow"/> <reference key="NSNextKeyView" ref="838658605"/> <string key="NSReuseIdentifierKey">_NS:9</string> <bool key="IBUIOpaque">NO</bool> @@ -420,6 +432,7 @@ </array> <string key="NSFrame">{{51, 416}, {667, 118}}</string> <reference key="NSSuperview" ref="766721923"/> + <reference key="NSWindow"/> <reference key="NSNextKeyView" ref="316486170"/> <string key="NSReuseIdentifierKey">_NS:9</string> <object class="NSColor" key="IBUIBackgroundColor"> @@ -437,6 +450,7 @@ <int key="NSvFlags">292</int> <string key="NSFrame">{{7, 29}, {132, 69}}</string> <reference key="NSSuperview" ref="692955189"/> + <reference key="NSWindow"/> <reference key="NSNextKeyView" ref="790263268"/> <string key="NSReuseIdentifierKey">_NS:9</string> <bool key="IBUIOpaque">NO</bool> @@ -464,6 +478,7 @@ <int key="NSvFlags">292</int> <string key="NSFrame">{{139, 29}, {132, 69}}</string> <reference key="NSSuperview" ref="692955189"/> + <reference key="NSWindow"/> <reference key="NSNextKeyView" ref="355647270"/> <string key="NSReuseIdentifierKey">_NS:9</string> <bool key="IBUIOpaque">NO</bool> @@ -491,6 +506,7 @@ <int key="NSvFlags">292</int> <string key="NSFrame">{{267, 29}, {132, 69}}</string> <reference key="NSSuperview" ref="692955189"/> + <reference key="NSWindow"/> <reference key="NSNextKeyView" ref="404206660"/> <string key="NSReuseIdentifierKey">_NS:9</string> <bool key="IBUIOpaque">NO</bool> @@ -518,6 +534,7 @@ <int key="NSvFlags">292</int> <string key="NSFrame">{{399, 29}, {132, 69}}</string> <reference key="NSSuperview" ref="692955189"/> + <reference key="NSWindow"/> <reference key="NSNextKeyView" ref="78723594"/> <string key="NSReuseIdentifierKey">_NS:9</string> <bool key="IBUIOpaque">NO</bool> @@ -545,6 +562,7 @@ <int key="NSvFlags">292</int> <string key="NSFrame">{{535, 29}, {132, 69}}</string> <reference key="NSSuperview" ref="692955189"/> + <reference key="NSWindow"/> <reference key="NSNextKeyView" ref="638395666"/> <string key="NSReuseIdentifierKey">_NS:9</string> <bool key="IBUIOpaque">NO</bool> @@ -570,6 +588,7 @@ </array> <string key="NSFrame">{{50, 416}, {667, 118}}</string> <reference key="NSSuperview" ref="766721923"/> + <reference key="NSWindow"/> <reference key="NSNextKeyView" ref="353586444"/> <string key="NSReuseIdentifierKey">_NS:9</string> <object class="NSColor" key="IBUIBackgroundColor"> @@ -583,6 +602,7 @@ <int key="NSvFlags">292</int> <string key="NSFrame">{{143, 104}, {434, 21}}</string> <reference key="NSSuperview" ref="766721923"/> + <reference key="NSWindow"/> <reference key="NSNextKeyView" ref="783180915"/> <string key="NSReuseIdentifierKey">_NS:9</string> <bool key="IBUIOpaque">NO</bool> @@ -605,6 +625,7 @@ </array> <string key="NSFrameSize">{768, 1024}</string> <reference key="NSSuperview"/> + <reference key="NSWindow"/> <reference key="NSNextKeyView" ref="831894070"/> <object class="NSColor" key="IBUIBackgroundColor"> <int key="NSColorSpace">1</int> @@ -806,7 +827,6 @@ <int key="objectID">2</int> <reference key="object" ref="766721923"/> <array class="NSMutableArray" key="children"> - <reference ref="356964106"/> <reference ref="960474577"/> <reference ref="871929113"/> <reference ref="791686696"/> @@ -817,6 +837,7 @@ <reference ref="838658605"/> <reference ref="783180915"/> <reference ref="831894070"/> + <reference ref="356964106"/> </array> <reference key="parent" ref="0"/> </object> @@ -979,7 +1000,106 @@ <nil key="sourceID"/> <int key="maxID">91</int> </object> - <object class="IBClassDescriber" key="IBDocument.Classes"/> + <object class="IBClassDescriber" key="IBDocument.Classes"> + <array class="NSMutableArray" key="referencedPartialClassDescriptions"> + <object class="IBPartialClassDescription"> + <string key="className">QuestionnaireViewController</string> + <string key="superclassName">UIViewController</string> + <dictionary class="NSMutableDictionary" key="actions"> + <string key="answerChosen:">id</string> + <string key="hide:">id</string> + <string key="nextQuestionPressed:">id</string> + <string key="previousQuestionPressed:">id</string> + <string key="show:">id</string> + </dictionary> + <dictionary class="NSMutableDictionary" key="actionInfosByName"> + <object class="IBActionInfo" key="answerChosen:"> + <string key="name">answerChosen:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo" key="hide:"> + <string key="name">hide:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo" key="nextQuestionPressed:"> + <string key="name">nextQuestionPressed:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo" key="previousQuestionPressed:"> + <string key="name">previousQuestionPressed:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo" key="show:"> + <string key="name">show:</string> + <string key="candidateClassName">id</string> + </object> + </dictionary> + <dictionary class="NSMutableDictionary" key="outlets"> + <string key="commentText">UITextView</string> + <string key="finishButton">UIButton</string> + <string key="interfacePreferenceOptions">UIView</string> + <string key="lickertOptions">UIView</string> + <string key="nextButton">UIButton</string> + <string key="numberChooser">UISegmentedControl</string> + <string key="picker">UIPickerView</string> + <string key="pleaseAnswer">UILabel</string> + <string key="previousButton">UIButton</string> + <string key="questionText">UILabel</string> + <string key="titleText">UILabel</string> + </dictionary> + <dictionary class="NSMutableDictionary" key="toOneOutletInfosByName"> + <object class="IBToOneOutletInfo" key="commentText"> + <string key="name">commentText</string> + <string key="candidateClassName">UITextView</string> + </object> + <object class="IBToOneOutletInfo" key="finishButton"> + <string key="name">finishButton</string> + <string key="candidateClassName">UIButton</string> + </object> + <object class="IBToOneOutletInfo" key="interfacePreferenceOptions"> + <string key="name">interfacePreferenceOptions</string> + <string key="candidateClassName">UIView</string> + </object> + <object class="IBToOneOutletInfo" key="lickertOptions"> + <string key="name">lickertOptions</string> + <string key="candidateClassName">UIView</string> + </object> + <object class="IBToOneOutletInfo" key="nextButton"> + <string key="name">nextButton</string> + <string key="candidateClassName">UIButton</string> + </object> + <object class="IBToOneOutletInfo" key="numberChooser"> + <string key="name">numberChooser</string> + <string key="candidateClassName">UISegmentedControl</string> + </object> + <object class="IBToOneOutletInfo" key="picker"> + <string key="name">picker</string> + <string key="candidateClassName">UIPickerView</string> + </object> + <object class="IBToOneOutletInfo" key="pleaseAnswer"> + <string key="name">pleaseAnswer</string> + <string key="candidateClassName">UILabel</string> + </object> + <object class="IBToOneOutletInfo" key="previousButton"> + <string key="name">previousButton</string> + <string key="candidateClassName">UIButton</string> + </object> + <object class="IBToOneOutletInfo" key="questionText"> + <string key="name">questionText</string> + <string key="candidateClassName">UILabel</string> + </object> + <object class="IBToOneOutletInfo" key="titleText"> + <string key="name">titleText</string> + <string key="candidateClassName">UILabel</string> + </object> + </dictionary> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">./Classes/QuestionnaireViewController.h</string> + </object> + </object> + </array> + </object> <int key="IBDocument.localizationMode">0</int> <string key="IBDocument.TargetRuntimeIdentifier">IBIPadFramework</string> <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
--- a/TimedSessionController.mm Fri Mar 08 14:54:55 2013 +0000 +++ b/TimedSessionController.mm Tue Mar 26 18:41:42 2013 +0000 @@ -18,10 +18,10 @@ int scount; NSArray *alertMessages = [NSArray arrayWithObjects: - @"Thanks, now try the sliders only", - @"Thanks, now try the sliders and the Zoomer together", - @"Thanks, now try the zoomer only", - @"Thanks, now please take the questionnaire",nil]; + @"Now try the sliders only.", + @"Now try the sliders and the Zoomer together.", + @"Now try the zoomer only.", + @"Now please take the questionnaire.",nil]; // nicer if it was initWithAppRef ? - (void)setAppRef:(id)theOFApp{ @@ -34,7 +34,7 @@ NSString *themessage; themessage = [alertMessages objectAtIndex:orders[theOrder][0]]; UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Thanks!" - message:themessage + message:[themessage stringByAppendingString:@" Press play to start sound."] delegate:self cancelButtonTitle:@"Continue" otherButtonTitles:nil];
--- a/eventLogger.h Fri Mar 08 14:54:55 2013 +0000 +++ b/eventLogger.h Tue Mar 26 18:41:42 2013 +0000 @@ -26,16 +26,17 @@ #include "testApp.h" #include "presetManager.h" #import "ServerComms.h" - -#define EVENT_THIN_FACTOR 10 +#include "grid.h" + +#define EVENT_THIN_FACTOR 15 #define EVENT_LOG_FILENAME "log.json" -//#define LOGGING_SERVER_URL "http://www.isophonics.net/datacollector/" -#define LOGGING_SERVER_URL "http://127.0.0.1:8080/testservice/" #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.3 // IMPORTANT TOCHNAGE! -#define APP_CREATION_TIME 381429000000 // milliseconds to the time i wrote this wee blighter. saves digits +#define SUPERVISED // this def will save files -#define PROGRAM_VERSION 0.3 // IMPORTANT TOCHNAGE! // can add but don't change ordering - this will invalidate logs enum leventType {SAVE_PRESET, // 0 @@ -58,7 +59,9 @@ PLAY_PRESSED, // 17 PAUSE_PRESSED, // 18 HELP_PRESSED, // 19 - QUESTIONNAIRE_COMPLETED}; // 20 + QUESTIONNAIRE_COMPLETED, // 20 + EVALUATION_POINT, // 21 + EMPTY_EVENT}; // 22 //--------------------------------------------------------------------------- @@ -102,6 +105,7 @@ jevt["eTime"] = eventTime; return jevt; } + void draw(); }; //--------------------------------------------------------------------------- // streams no longer used @@ -167,11 +171,15 @@ void printAll(); void saveSessionToFile(); + void drawTrail(const TwoVector min, const TwoVector max); + vector<lEvent> getDrawableEventsInRange(const TwoVector min, const TwoVector max); + vector<TwoVector> getRecentPath(int numEvents); private: vector<lEvent> theEvents; void thinnedLogEvent(lEvent nextEvent); + void thinnedScrollEvent(lEvent nextEvent); unsigned int nextUploadQty; string questionnaireComments;
--- a/eventLogger.mm Fri Mar 08 14:54:55 2013 +0000 +++ b/eventLogger.mm Tue Mar 26 18:41:42 2013 +0000 @@ -8,9 +8,30 @@ //--------------------------------------------------------------------------- #include "eventLogger.h" +#include "grid.h" + +extern Grid theGridView; EventLogger eventLogger; extern PresetManager presetManager; +//--------------------------------------------------------------------------- +void lEvent::draw(){ + // can't draw lines you fool + double size = 2.0; + TwoVector pos = theGridView.coordToPixel(TwoVector(val1,val2)); // euch -rely on grid view? + + if(eventType == SCROLL){ + ofSetColor(255,123,56); + ofRect(pos.x, pos.y,size,size); + }else if(eventType == EVALUATION_POINT){ + size = sliderID/150.0; // slider id is the hover time. sorry sorry. + if(size > 40) size = 40; + ofSetColor(25,123,216); + ofNoFill(); + ofEllipse(pos.x, pos.y, size, size); + + } +} //--------------------------------------------------------------------------- EventLogger::EventLogger(){ @@ -156,8 +177,10 @@ questionnaireCompleted = false; questionnaireUploaded = false; - ((testApp *)ofGetAppPtr())->showIntro(); - consentGiven = false; + //((testApp *)ofGetAppPtr())->showIntro(); + //consentGiven = false; + ((testApp *)ofGetAppPtr())->justStart(); + } @@ -209,7 +232,7 @@ } //----------------------------- void EventLogger::eventlogOK(){ - // IF UPLAODING FROM IPAD TO XCODE + // COMMENT THIS IF UPLAODING FROM IPAD TO XCODE theEvents.clear(); cout << "EVENT LOG UPLOAD SUCCESS\n"; nextUploadNumber++; @@ -244,7 +267,8 @@ //--------------------------------------------------------------------------- bool EventLogger::uploadEventLog(bool async){ - + // COMMENT THIS OUTRT !!!!!!!! + return false; // show indicator logUploadInProgress = true; cout << "^^^^^^^^ ATTEMPTING TO UPLOAD " << theEvents.size() << " EVENTS ^^^^^^^^ .\n"; @@ -268,8 +292,62 @@ } } //---------------------------------------------------------------------------- +bool eventWasInRegion(vector<lEvent>::iterator eiter, TwoVector regionTopLeft, TwoVector regionBottomRight){ + if( ((*eiter).val1 > regionTopLeft.x ) && ((*eiter).val2 > regionTopLeft.y ) && ((*eiter).val1 < regionBottomRight.x ) && ((*eiter).val2 < regionBottomRight.y )){ + return true; + }else{ + return false; + } + +} +//---------------------------------------------------------------------------- +void EventLogger::drawTrail(const TwoVector min, const TwoVector max){ + // horribly inefficient + vector<lEvent>::iterator eiter; + vector<lEvent>::iterator preveiter; + int i = 0; + + + + preveiter = theEvents.begin(); + for(eiter = --theEvents.end(); eiter > theEvents.begin(); eiter--){ -//---------------------------------------------------------------------------- + //cout << i << '\n'; + if( (*eiter).eventType == SCROLL || (*eiter).eventType == EVALUATION_POINT){ + i++; + if(i > SCROLL_TRAIL_LENGTH){ + return; + } + if(eventWasInRegion(eiter, min, max) || eventWasInRegion(preveiter, min, max)){ + // draw a line between prev and this + if(preveiter != theEvents.begin()){ + TwoVector start = theGridView.coordToPixel(TwoVector((*preveiter).val1,(*preveiter).val2)); + TwoVector end = theGridView.coordToPixel(TwoVector((*eiter).val1,(*eiter).val2)); + ofSetColor(255,255,255,96); + ofLine(start.x,start.y, end.x, end.y); + + }else{ + // draw line from listen point to last evt + TwoVector start = TwoVector(ofGetWidth()*0.5,ofGetHeight()*0.5); + TwoVector end = theGridView.coordToPixel(TwoVector((*eiter).val1,(*eiter).val2)); + ofSetColor(255,255,255,96); + ofLine(start.x,start.y, end.x, end.y); + // draw ever growing listen point + + } + + } + preveiter = eiter; + } + if( (*eiter).eventType == EVALUATION_POINT){ + if( ((*eiter).val1 > min.x ) && ((*eiter).val2 > min.y ) && ((*eiter).val1 < max.x ) && ((*eiter).val2 < max.y )){ + // draw it + (*eiter).draw(); + } + } + } + +} //--------------------------------------------------------------------------- // only called when doing supervised tests @@ -299,10 +377,42 @@ //timer.startInteractionClock(); [((testApp *)ofGetAppPtr())->tsc startTimer]; + + // press play?? +} +//--------------------------------------------------------------------------- +void EventLogger::thinnedScrollEvent(lEvent newEvent){ + static lEvent previousEvent(EMPTY_EVENT); // initialised as whatever + static int eventCounter = 0; + + // if first event then log it. it won't be, but still. + if(theEvents.size() == 0){ + theEvents.push_back(newEvent); + previousEvent = newEvent; + return; + } + + // if previous event is more than 300ms ago, or event type has changed, log both of them (lots of events on move+zoom combinations!!) + int gap = newEvent.eventTime - previousEvent.eventTime; + if(gap > 300){ + // log previous event as a evaluation point MAYBE TODO if previous event was logged as scroll chuck it out? + theEvents.push_back(lEvent(EVALUATION_POINT, previousEvent.val1, previousEvent.val2, gap)); + // and now new event as scroll + theEvents.push_back(newEvent); + eventCounter = 0; + + }else if(eventCounter >= EVENT_THIN_FACTOR){ // otherwise only record every Nth event + theEvents.push_back(newEvent); + eventCounter = 0; + + } + eventCounter++; + previousEvent = newEvent; + } //--------------------------------------------------------------------------- void EventLogger::thinnedLogEvent(lEvent newEvent){ - static lEvent previousEvent(APP_STARTED); // initialised as whatever. hopefully won't log + static lEvent previousEvent(EMPTY_EVENT); // initialised as whatever. hopefully won't log static int eventCounter = 0; // if first event then log it. it won't be, but still. @@ -334,7 +444,7 @@ } //--------------------------------------------------------------------------- void EventLogger::logEvent(const leventType& evtType,const TwoVector& centre, const double& scale, const int& sliderID, const double& sliderVal){ - //cout << "log: " << evtType << "\n"; + // scroll has 2 double coords // zoom has 1 double scale @@ -349,7 +459,8 @@ switch ( evtType ) { // data thinning here case SCROLL: - thinnedLogEvent(lEvent(evtType,centre.x,centre.y)); + thinnedScrollEvent(lEvent(evtType,centre.x,centre.y)); + //theEvents.push_back(lEvent(evtType,centre.x,centre.y)); break; case ZOOM: thinnedLogEvent(lEvent(evtType,scale)); @@ -503,3 +614,19 @@ logFile.close(); } +//---------------------------------------------------------------------------- +// TODO this path thing +vector<TwoVector> EventLogger::getRecentPath(int numEvents){ + vector<TwoVector> thePath; + + TwoVector lastScrollPos; + vector<lEvent>::iterator eventIndex; + eventIndex = theEvents.end(); + int numScrolls = 0; + while(numScrolls < numEvents){ + // go back check for scrolls, check for end of array etc. + thePath.push_back(lastScrollPos); + numScrolls++; + } + return thePath; +} \ No newline at end of file
--- a/grid.mm Fri Mar 08 14:54:55 2013 +0000 +++ b/grid.mm Tue Mar 26 18:41:42 2013 +0000 @@ -55,6 +55,7 @@ viewWasChanged(); + cout << "SIZEOF " << sizeof(long long); } @@ -333,12 +334,14 @@ //displayInfo(); drawPresets(); - ////////-------///////// - - ////////-------///////// - + // draw centre cross hairs drawCrossHairs(); + + + // draw the undo history trail, given viewing area + eventLogger.drawTrail(topLeft, topLeft + size); + ////////-------//////// /* ostringstream temp; @@ -380,6 +383,7 @@ if(snapped && closestPreset != NULL){ ofDrawBitmapString( closestPreset->displayTextDescription(), pixSize.x/2+10, pixSize.y/2+10 ); } + } //----------------------------------------------------------------------- @@ -431,7 +435,7 @@ } //-------------------------------------------------------------- -// would be advisable to only have one "mover" object that has permission to move the grid (?) + void Grid::move(TwoVector moveP){ // numspacing, pixelspacing stay the same
--- a/testApp.h Fri Mar 08 14:54:55 2013 +0000 +++ b/testApp.h Tue Mar 26 18:41:42 2013 +0000 @@ -18,7 +18,6 @@ #include "json.h" - #import "QuestionnaireViewController.h" #import "BottomTabViewController.h" #import "IntroViewController.h" @@ -117,6 +116,8 @@ void seqStartStop(bool go); void showHelp(); void helpHidden(); + // shortcut function for testing + void justStart(); void setupBottomGui(); void bottomGuiEvent();
--- a/testApp.mm Fri Mar 08 14:54:55 2013 +0000 +++ b/testApp.mm Tue Mar 26 18:41:42 2013 +0000 @@ -131,9 +131,7 @@ randomise(); // everyone starts from random position ofxiPhoneExternalDisplay::mirrorOn(); - - double timemsd = [NSDate timeIntervalSinceReferenceDate]; - cout << "TIME: " << timemsd << '\n'; + } @@ -235,6 +233,13 @@ } //-------------------------------------------------------------- +// shortcut function for testing +void testApp::justStart(){ + interfaceSelected(BOTH); + [bottomTabViewController show:(id)this withSelection:1]; + +} +//-------------------------------------------------------------- void testApp::showIntro(){ cout << "SHOW INTRO\n"; @@ -512,10 +517,12 @@ break; case ZOOMER: theGridView.draw(); + break; case BOTH: + + theGridView.draw(); - theGridView.draw(); break; case INTRO: break;