aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--iBean/iBean.xcodeproj/project.xcworkspace/xcuserdata/eddiex.xcuserdatad/UserInterfaceState.xcuserstatebin58590 -> 58038 bytes
-rw-r--r--iBean/iBean.xcodeproj/xcuserdata/eddiex.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist6
-rw-r--r--iBean/iBean/InstantExtractionViewController.h4
-rw-r--r--iBean/iBean/InstantExtractionViewController.m63
-rw-r--r--iBean/iBean/iPadStoryboard.storyboard46
-rw-r--r--iBean/iBean/iPhoneStoryboard.storyboard39
6 files changed, 153 insertions, 5 deletions
diff --git a/iBean/iBean.xcodeproj/project.xcworkspace/xcuserdata/eddiex.xcuserdatad/UserInterfaceState.xcuserstate b/iBean/iBean.xcodeproj/project.xcworkspace/xcuserdata/eddiex.xcuserdatad/UserInterfaceState.xcuserstate
index 4fcc5fd..a4aeb08 100644
--- a/iBean/iBean.xcodeproj/project.xcworkspace/xcuserdata/eddiex.xcuserdatad/UserInterfaceState.xcuserstate
+++ b/iBean/iBean.xcodeproj/project.xcworkspace/xcuserdata/eddiex.xcuserdatad/UserInterfaceState.xcuserstate
Binary files differ
diff --git a/iBean/iBean.xcodeproj/xcuserdata/eddiex.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist b/iBean/iBean.xcodeproj/xcuserdata/eddiex.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist
index 1b45798..8003b60 100644
--- a/iBean/iBean.xcodeproj/xcuserdata/eddiex.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist
+++ b/iBean/iBean.xcodeproj/xcuserdata/eddiex.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist
@@ -8,11 +8,11 @@
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "iBean/InstantExtractionViewController.m"
- timestampString = "385133878.06268"
+ timestampString = "385501866.06976"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
- startingLineNumber = "91"
- endingLineNumber = "91"
+ startingLineNumber = "97"
+ endingLineNumber = "97"
landmarkName = "-haltExtractionTimer"
landmarkType = "5">
</FileBreakpoint>
diff --git a/iBean/iBean/InstantExtractionViewController.h b/iBean/iBean/InstantExtractionViewController.h
index c6a1c78..d982ffb 100644
--- a/iBean/iBean/InstantExtractionViewController.h
+++ b/iBean/iBean/InstantExtractionViewController.h
@@ -8,10 +8,11 @@
#import <UIKit/UIKit.h>
-@interface InstantExtractionViewController : UIViewController <UIAlertViewDelegate>
+@interface InstantExtractionViewController : UIViewController <UIAlertViewDelegate, UITableViewDataSource, UITableViewDelegate>
@property (nonatomic, assign) double extractionProgress;
@property (nonatomic, assign) BOOL extractionInProgress;
+@property (nonatomic, strong) NSMutableArray *extractionTimes;
/* Utility methods */
- (void) initViewController;
@@ -25,6 +26,7 @@
@property (weak, nonatomic) IBOutlet UIStepper *extractionSettingStepper;
@property (weak, nonatomic) IBOutlet UILabel *extractionProgressLabel;
@property (weak, nonatomic) IBOutlet UILabel *extractionStateLabel;
+@property (weak, nonatomic) IBOutlet UITableView *extractionTimesTableView;
/* UI Actions */
- (IBAction)startExtraction:(id)sender;
diff --git a/iBean/iBean/InstantExtractionViewController.m b/iBean/iBean/InstantExtractionViewController.m
index 825d7ec..2b4c386 100644
--- a/iBean/iBean/InstantExtractionViewController.m
+++ b/iBean/iBean/InstantExtractionViewController.m
@@ -60,6 +60,12 @@
NSNumber* extractionTimerSetting = [(AppDelegate*) [[UIApplication sharedApplication] delegate] getInstantExtractionTimer];
[self.extractionSettingStepper setValue: extractionTimerSetting != nil ? [extractionTimerSetting doubleValue] : 0.0f];
[self updateExtractionSettingLabel];
+
+ //Allocate and init the array holding extraction times (in memory).
+ if (self.extractionTimes == nil)
+ {
+ self.extractionTimes = [[NSMutableArray alloc] init];
+ }
}
- (void) updateExtractionProgressLabel
@@ -96,6 +102,10 @@
- (void) timerInterrupted
{
+ //Add extraction time to our array of extraction times (datasource for tableview)
+ [self.extractionTimes insertObject:[NSString stringWithString:self.extractionProgressLabel.text] atIndex:0];
+ [self.extractionTimesTableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationAutomatic];
+
//Return UI to "Start extraction" state.
[self.extractionStateLabel setText:@"Press to start"];
[self.extractionSettingStepper setEnabled:YES];
@@ -138,4 +148,57 @@
{
[(AppDelegate*) [[UIApplication sharedApplication] delegate] incrementExtractionCount];
}
+
+#pragma mark - UITableView datasource & delegate
+- (NSInteger) numberOfSectionsInTableView:(UITableView *)tableView
+{
+ return 1;
+}
+
+- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
+{
+ return self.extractionTimes.count;
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
+{
+ static NSString *CellIdentifier = @"ExtractionTimeCell";
+ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
+
+ //Configure the cell and set its title
+ cell.textLabel.text = [NSString stringWithFormat:@"%@ s", [self.extractionTimes objectAtIndex:indexPath.row]];
+ cell.detailTextLabel.text = @"";
+ return cell;
+}
+
+// Override to support conditional editing of the table view.
+- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
+{
+ // Return NO if you do not want the specified item to be editable (we want to be able to REMOVE though).
+ return YES;
+}
+
+// Override to support editing the table view.
+- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
+{
+ if (editingStyle == UITableViewCellEditingStyleDelete) {
+ // Delete the row from the data source
+ if (self.extractionTimes != nil)
+ {
+ [self.extractionTimes removeObjectAtIndex: indexPath.row];
+ }
+ [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
+ }
+ else if (editingStyle == UITableViewCellEditingStyleInsert) {
+ // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
+ }
+}
+
+// Override to support conditional rearranging of the table view.
+- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
+{
+ // Return NO if you do not want the item to be re-orderable.
+ return NO;
+}
+
@end
diff --git a/iBean/iBean/iPadStoryboard.storyboard b/iBean/iBean/iPadStoryboard.storyboard
index 43803d6..ba076a3 100644
--- a/iBean/iBean/iPadStoryboard.storyboard
+++ b/iBean/iBean/iPadStoryboard.storyboard
@@ -115,19 +115,61 @@
<color key="textColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
</label>
+ <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" allowsSelection="NO" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" translatesAutoresizingMaskIntoConstraints="NO" id="kVY-BZ-7h3">
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ <prototypes>
+ <tableViewCell contentMode="scaleToFill" selectionStyle="none" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="ExtractionTimeCell" textLabel="eth-SQ-iHG" detailTextLabel="7HL-2K-QkF" imageView="hb2-ca-ZFx" style="IBUITableViewCellStyleValue1" id="2eC-3u-dUw">
+ <rect key="frame" x="0.0" y="22" width="768" height="44"/>
+ <autoresizingMask key="autoresizingMask"/>
+ <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
+ <rect key="frame" x="0.0" y="0.0" width="768" height="43"/>
+ <autoresizingMask key="autoresizingMask"/>
+ <subviews>
+ <label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Title" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="eth-SQ-iHG">
+ <rect key="frame" x="40" y="11" width="35" height="21"/>
+ <autoresizingMask key="autoresizingMask"/>
+ <fontDescription key="fontDescription" type="boldSystem" pointSize="17"/>
+ <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+ <color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
+ </label>
+ <label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Subtitle" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="7HL-2K-QkF">
+ <rect key="frame" x="701" y="11" width="57" height="21"/>
+ <autoresizingMask key="autoresizingMask"/>
+ <fontDescription key="fontDescription" type="system" pointSize="17"/>
+ <color key="textColor" red="0.21960784310000001" green="0.3294117647" blue="0.52941176469999995" alpha="1" colorSpace="calibratedRGB"/>
+ <color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
+ </label>
+ <imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" image="78-stopwatch.png" id="hb2-ca-ZFx">
+ <rect key="frame" x="8" y="8" width="22" height="26"/>
+ <autoresizingMask key="autoresizingMask"/>
+ </imageView>
+ </subviews>
+ <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+ </view>
+ </tableViewCell>
+ </prototypes>
+ <connections>
+ <outlet property="dataSource" destination="snc-Lv-58m" id="7OT-6z-FIq"/>
+ <outlet property="delegate" destination="snc-Lv-58m" id="FTY-fb-fqa"/>
+ </connections>
+ </tableView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
<constraints>
+ <constraint firstItem="kVY-BZ-7h3" firstAttribute="bottom" secondItem="c9L-k2-8ja" secondAttribute="bottom" type="default" id="0OI-Wc-gKN"/>
<constraint firstItem="fba-0S-Ta7" firstAttribute="leading" secondItem="VJ9-6L-0fR" secondAttribute="leading" type="default" id="BIA-1I-GPm"/>
<constraint firstAttribute="trailing" secondItem="3SK-4t-P4A" secondAttribute="trailing" constant="20" symbolic="YES" type="default" id="EAy-gu-sto"/>
- <constraint firstItem="VJ9-6L-0fR" firstAttribute="centerX" secondItem="3SK-4t-P4A" secondAttribute="centerX" type="default" id="Fn4-X1-mgN"/>
+ <constraint firstItem="kVY-BZ-7h3" firstAttribute="leading" secondItem="c9L-k2-8ja" secondAttribute="leading" type="default" id="GSB-sg-Hco"/>
<constraint firstItem="A29-JZ-SFZ" firstAttribute="centerY" secondItem="xVi-QL-6wy" secondAttribute="centerY" type="default" id="H26-k9-Hrr"/>
<constraint firstItem="fba-0S-Ta7" firstAttribute="centerY" secondItem="3SK-4t-P4A" secondAttribute="centerY" type="default" id="LXb-Rx-BW9"/>
<constraint firstItem="xVi-QL-6wy" firstAttribute="top" secondItem="3SK-4t-P4A" secondAttribute="bottom" constant="8" symbolic="YES" type="default" id="PEq-Vh-8MB"/>
<constraint firstItem="fba-0S-Ta7" firstAttribute="trailing" secondItem="VJ9-6L-0fR" secondAttribute="trailing" type="default" id="RRa-XY-gQg"/>
<constraint firstItem="3SK-4t-P4A" firstAttribute="leading" secondItem="c9L-k2-8ja" secondAttribute="leading" constant="20" symbolic="YES" type="default" id="WA1-Rg-W1s"/>
<constraint firstItem="VJ9-6L-0fR" firstAttribute="trailing" secondItem="xVi-QL-6wy" secondAttribute="trailing" type="default" id="Wqp-na-wti"/>
+ <constraint firstItem="VJ9-6L-0fR" firstAttribute="centerX" secondItem="3SK-4t-P4A" secondAttribute="centerX" type="default" id="gor-Yf-XFw"/>
<constraint firstItem="A29-JZ-SFZ" firstAttribute="leading" secondItem="c9L-k2-8ja" secondAttribute="leading" constant="20" symbolic="YES" type="default" id="nYl-JE-Sq7"/>
+ <constraint firstItem="kVY-BZ-7h3" firstAttribute="top" secondItem="A29-JZ-SFZ" secondAttribute="bottom" constant="8" symbolic="YES" type="default" id="ol3-f4-pL5"/>
+ <constraint firstItem="kVY-BZ-7h3" firstAttribute="trailing" secondItem="c9L-k2-8ja" secondAttribute="trailing" type="default" id="oo9-2o-VtC"/>
<constraint firstItem="VJ9-6L-0fR" firstAttribute="top" secondItem="c9L-k2-8ja" secondAttribute="top" constant="369" id="qZZ-cg-KNe"/>
<constraint firstItem="3SK-4t-P4A" firstAttribute="top" secondItem="c9L-k2-8ja" secondAttribute="top" constant="20" symbolic="YES" type="default" id="tNh-sD-r9U"/>
<constraint firstItem="xVi-QL-6wy" firstAttribute="leading" secondItem="A29-JZ-SFZ" secondAttribute="trailing" constant="8" symbolic="YES" type="default" id="yoA-ii-xSP"/>
@@ -140,6 +182,7 @@
<outlet property="extractionSettingLabel" destination="A29-JZ-SFZ" id="Ctr-IB-zCl"/>
<outlet property="extractionSettingStepper" destination="xVi-QL-6wy" id="GMr-dJ-oNm"/>
<outlet property="extractionStateLabel" destination="VJ9-6L-0fR" id="WxL-6I-r6T"/>
+ <outlet property="extractionTimesTableView" destination="kVY-BZ-7h3" id="0yB-E9-BU3"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="lBg-Db-hdn" userLabel="First Responder" sceneMemberID="firstResponder"/>
@@ -1424,6 +1467,7 @@
<relationship kind="outlet" name="extractionSettingLabel" candidateClass="UILabel"/>
<relationship kind="outlet" name="extractionSettingStepper" candidateClass="UIStepper"/>
<relationship kind="outlet" name="extractionStateLabel" candidateClass="UILabel"/>
+ <relationship kind="outlet" name="extractionTimesTableView" candidateClass="UITableView"/>
</relationships>
</class>
<class className="NSLayoutConstraint" superclassName="NSObject">
diff --git a/iBean/iBean/iPhoneStoryboard.storyboard b/iBean/iBean/iPhoneStoryboard.storyboard
index 75a27b0..bf68193 100644
--- a/iBean/iBean/iPhoneStoryboard.storyboard
+++ b/iBean/iBean/iPhoneStoryboard.storyboard
@@ -110,22 +110,60 @@
<color key="textColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
</label>
+ <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" allowsSelection="NO" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" translatesAutoresizingMaskIntoConstraints="NO" id="b0U-pI-PMW">
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ <prototypes>
+ <tableViewCell contentMode="scaleToFill" selectionStyle="none" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="ExtractionTimeCell" textLabel="1Bo-kW-4Zt" detailTextLabel="S1m-3H-HSH" imageView="Uls-vb-RNm" style="IBUITableViewCellStyleValue1" id="QqQ-qM-vVd">
+ <rect key="frame" x="0.0" y="22" width="320" height="44"/>
+ <autoresizingMask key="autoresizingMask"/>
+ <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
+ <rect key="frame" x="0.0" y="0.0" width="320" height="43"/>
+ <autoresizingMask key="autoresizingMask"/>
+ <subviews>
+ <label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Title" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1Bo-kW-4Zt">
+ <fontDescription key="fontDescription" type="boldSystem" pointSize="17"/>
+ <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+ <color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
+ </label>
+ <label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Subtitle" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="S1m-3H-HSH">
+ <fontDescription key="fontDescription" type="system" pointSize="17"/>
+ <color key="textColor" red="0.2196078431372549" green="0.32941176470588235" blue="0.52941176470588236" alpha="1" colorSpace="calibratedRGB"/>
+ <color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
+ </label>
+ <imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" image="78-stopwatch.png" id="Uls-vb-RNm">
+ <rect key="frame" x="8" y="8" width="22" height="26"/>
+ <autoresizingMask key="autoresizingMask"/>
+ </imageView>
+ </subviews>
+ <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+ </view>
+ </tableViewCell>
+ </prototypes>
+ <connections>
+ <outlet property="dataSource" destination="b3D-qj-cdZ" id="e2c-JL-w5q"/>
+ <outlet property="delegate" destination="b3D-qj-cdZ" id="VPn-kt-5cR"/>
+ </connections>
+ </tableView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="lEG-3K-UB7" firstAttribute="top" secondItem="NBj-4q-93f" secondAttribute="top" constant="51" id="3VI-FF-M7b"/>
+ <constraint firstItem="b0U-pI-PMW" firstAttribute="top" secondItem="6By-yy-oRj" secondAttribute="bottom" constant="8" symbolic="YES" type="default" id="3Ve-Nn-Xjn"/>
<constraint firstItem="Exd-Qz-k8n" firstAttribute="top" secondItem="NBj-4q-93f" secondAttribute="top" constant="168" id="3km-yn-poN"/>
<constraint firstItem="Exd-Qz-k8n" firstAttribute="leading" secondItem="NBj-4q-93f" secondAttribute="leading" constant="20" symbolic="YES" type="default" id="CWq-c1-PZo"/>
<constraint firstItem="6By-yy-oRj" firstAttribute="leading" secondItem="NBj-4q-93f" secondAttribute="leading" constant="20" symbolic="YES" type="default" id="GeL-hb-8dO"/>
<constraint firstItem="bjC-aZ-VLh" firstAttribute="top" secondItem="08M-Z3-AVH" secondAttribute="bottom" constant="8" symbolic="YES" type="default" id="PUE-ps-wpg"/>
+ <constraint firstItem="b0U-pI-PMW" firstAttribute="trailing" secondItem="NBj-4q-93f" secondAttribute="trailing" type="default" id="T78-cL-PsK"/>
<constraint firstAttribute="trailing" secondItem="lEG-3K-UB7" secondAttribute="trailing" constant="20" symbolic="YES" type="default" id="W1F-DA-pzd"/>
<constraint firstItem="08M-Z3-AVH" firstAttribute="leading" secondItem="NBj-4q-93f" secondAttribute="leading" constant="20" symbolic="YES" type="default" id="YK9-4J-r5V"/>
+ <constraint firstItem="b0U-pI-PMW" firstAttribute="bottom" secondItem="NBj-4q-93f" secondAttribute="bottom" type="default" id="f3J-rq-tT7"/>
<constraint firstItem="bjC-aZ-VLh" firstAttribute="leading" secondItem="6By-yy-oRj" secondAttribute="trailing" constant="8" symbolic="YES" type="default" id="gqd-LV-oGI"/>
<constraint firstAttribute="trailing" secondItem="Exd-Qz-k8n" secondAttribute="trailing" constant="20" symbolic="YES" type="default" id="hNm-0v-TZ6"/>
<constraint firstItem="lEG-3K-UB7" firstAttribute="leading" secondItem="NBj-4q-93f" secondAttribute="leading" constant="20" symbolic="YES" type="default" id="sSe-lI-xMk"/>
<constraint firstItem="08M-Z3-AVH" firstAttribute="top" secondItem="NBj-4q-93f" secondAttribute="top" constant="20" symbolic="YES" type="default" id="uT1-YQ-jSm"/>
<constraint firstAttribute="trailing" secondItem="bjC-aZ-VLh" secondAttribute="trailing" constant="20" symbolic="YES" type="default" id="vjV-8h-RcP"/>
<constraint firstAttribute="trailing" secondItem="08M-Z3-AVH" secondAttribute="trailing" constant="20" symbolic="YES" type="default" id="xhG-BC-gVb"/>
+ <constraint firstItem="b0U-pI-PMW" firstAttribute="leading" secondItem="NBj-4q-93f" secondAttribute="leading" type="default" id="xkx-3T-G3u"/>
<constraint firstItem="6By-yy-oRj" firstAttribute="centerY" secondItem="bjC-aZ-VLh" secondAttribute="centerY" type="default" id="zq4-iE-v07"/>
</constraints>
</view>
@@ -135,6 +173,7 @@
<outlet property="extractionSettingLabel" destination="6By-yy-oRj" id="jMq-Bk-pTR"/>
<outlet property="extractionSettingStepper" destination="bjC-aZ-VLh" id="DHB-HD-dFN"/>
<outlet property="extractionStateLabel" destination="Exd-Qz-k8n" id="ufI-rD-d4M"/>
+ <outlet property="extractionTimesTableView" destination="b0U-pI-PMW" id="Gj7-Qo-8p4"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="cT9-Af-PM7" userLabel="First Responder" sceneMemberID="firstResponder"/>