From 06fcd32c074dd7413d54d1025276040128264fdf Mon Sep 17 00:00:00 2001
From: Eddie Ehlin <eddiex@eddiex.se>
Date: Sat, 23 Feb 2013 18:53:37 +0100
Subject: Initial version of the extraction timer for bean collection
 (drop-down style).

---
 iBean/iBean.xcodeproj/project.pbxproj              |   4 +
 .../UserInterfaceState.xcuserstate                 | Bin 49744 -> 51543 bytes
 iBean/iBean/.DS_Store                              | Bin 6148 -> 6148 bytes
 .../iBean/BeanCollectionExtractionViewController.h |   4 +-
 .../iBean/BeanCollectionExtractionViewController.m |  57 ++++++++++++-
 .../ibean-extraction-dropdown-background.png       | Bin 0 -> 81326 bytes
 .../ibean-extraction-dropdown-background.pxm       | Bin 0 -> 201374 bytes
 iBean/iBean/iPhoneStoryboard.storyboard            |  92 ++++++++++++++-------
 8 files changed, 124 insertions(+), 33 deletions(-)
 create mode 100644 iBean/iBean/Graphics/ibean-extraction-dropdown-background.png
 create mode 100644 iBean/iBean/Graphics/ibean-extraction-dropdown-background.pxm

diff --git a/iBean/iBean.xcodeproj/project.pbxproj b/iBean/iBean.xcodeproj/project.pbxproj
index 3cabdce..f2f8088 100644
--- a/iBean/iBean.xcodeproj/project.pbxproj
+++ b/iBean/iBean.xcodeproj/project.pbxproj
@@ -37,6 +37,7 @@
 		024CB03716C2EF10009CBC15 /* UITableView+Extra.m in Sources */ = {isa = PBXBuildFile; fileRef = 024CB03616C2EF10009CBC15 /* UITableView+Extra.m */; };
 		024CB03916C2EFD5009CBC15 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 024CB03816C2EFD5009CBC15 /* QuartzCore.framework */; };
 		024CC6B016D0F33200F84F3D /* Threshold.m in Sources */ = {isa = PBXBuildFile; fileRef = 024CC6AF16D0F33200F84F3D /* Threshold.m */; };
+		024CC6EB16D6B36000F84F3D /* ibean-extraction-dropdown-background.png in Resources */ = {isa = PBXBuildFile; fileRef = 024CC6EA16D6B36000F84F3D /* ibean-extraction-dropdown-background.png */; };
 		024F676D16A4A61D004A1201 /* InstantExtractionViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 024F676C16A4A61D004A1201 /* InstantExtractionViewController.m */; };
 		0276253916B58D6000EE2F4E /* SettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 0276253816B58D6000EE2F4E /* SettingsViewController.m */; };
 		0276253C16B59E4C00EE2F4E /* Configuration.m in Sources */ = {isa = PBXBuildFile; fileRef = 0276253B16B59E4C00EE2F4E /* Configuration.m */; };
@@ -98,6 +99,7 @@
 		024CB03816C2EFD5009CBC15 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
 		024CC6AE16D0F33200F84F3D /* Threshold.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Threshold.h; sourceTree = "<group>"; };
 		024CC6AF16D0F33200F84F3D /* Threshold.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Threshold.m; sourceTree = "<group>"; };
+		024CC6EA16D6B36000F84F3D /* ibean-extraction-dropdown-background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "ibean-extraction-dropdown-background.png"; path = "Graphics/ibean-extraction-dropdown-background.png"; sourceTree = "<group>"; };
 		024F676B16A4A61D004A1201 /* InstantExtractionViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InstantExtractionViewController.h; sourceTree = "<group>"; };
 		024F676C16A4A61D004A1201 /* InstantExtractionViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InstantExtractionViewController.m; sourceTree = "<group>"; };
 		0276253716B58D6000EE2F4E /* SettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SettingsViewController.h; sourceTree = "<group>"; };
@@ -319,6 +321,7 @@
 		024CB02216C0543B009CBC15 /* Graphics */ = {
 			isa = PBXGroup;
 			children = (
+				024CC6EA16D6B36000F84F3D /* ibean-extraction-dropdown-background.png */,
 				023AAB3D16C98B2A00B6886C /* ibean-beancell-bean.png */,
 			);
 			name = Graphics;
@@ -409,6 +412,7 @@
 				020C55B01691014E00D8224C /* Default-568h@2x.png in Resources */,
 				020C55BD169101FB00D8224C /* iPhoneStoryboard.storyboard in Resources */,
 				023AAB3E16C98B2A00B6886C /* ibean-beancell-bean.png in Resources */,
+				024CC6EB16D6B36000F84F3D /* ibean-extraction-dropdown-background.png in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
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 f76b034..ca9b272 100644
Binary files a/iBean/iBean.xcodeproj/project.xcworkspace/xcuserdata/eddiex.xcuserdatad/UserInterfaceState.xcuserstate and b/iBean/iBean.xcodeproj/project.xcworkspace/xcuserdata/eddiex.xcuserdatad/UserInterfaceState.xcuserstate differ
diff --git a/iBean/iBean/.DS_Store b/iBean/iBean/.DS_Store
index 00a4276..e72bc32 100644
Binary files a/iBean/iBean/.DS_Store and b/iBean/iBean/.DS_Store differ
diff --git a/iBean/iBean/BeanCollectionExtractionViewController.h b/iBean/iBean/BeanCollectionExtractionViewController.h
index 88c8e92..79388f0 100644
--- a/iBean/iBean/BeanCollectionExtractionViewController.h
+++ b/iBean/iBean/BeanCollectionExtractionViewController.h
@@ -27,8 +27,10 @@
 @property (weak, nonatomic) IBOutlet UITextView *beanCollectionNoteTextView;
 @property (weak, nonatomic) IBOutlet UILabel *extractionProgressLabel;
 @property (weak, nonatomic) IBOutlet UIButton *extractionButton;
+@property (weak, nonatomic) IBOutlet UIView *extractionTimerView;
+@property (weak, nonatomic) IBOutlet UIBarButtonItem *toggleExtractionTimerButton;
 
 /* UI Actions */
 - (IBAction) startExtraction:(id)sender;
-
+- (IBAction) showExtractionTimer:(id)sender;
 @end
diff --git a/iBean/iBean/BeanCollectionExtractionViewController.m b/iBean/iBean/BeanCollectionExtractionViewController.m
index 7eeb574..21c27ba 100644
--- a/iBean/iBean/BeanCollectionExtractionViewController.m
+++ b/iBean/iBean/BeanCollectionExtractionViewController.m
@@ -13,6 +13,7 @@
 #import "AppDelegate+Storage.h"
 #import "UITableView+Extra.h"
 #import "UIColor+Extra.h"
+#import <QuartzCore/QuartzCore.h>
 
 @interface BeanCollectionExtractionViewController ()
 
@@ -33,6 +34,10 @@
 {
     [super viewDidLoad];
 	// Do any additional setup after loading the view.
+  
+  //Bring the extraction timer view on top
+  [self.view bringSubviewToFront:self.extractionTimerView];
+  
   //[self.beanCollectionNoteTextView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed: @"textview-bg.png"]]];
 }
 
@@ -65,7 +70,10 @@
   if (self.beanCollection != nil)
   {
     self.navigationItem.title = self.beanCollection.name;
-    self.extractionProgressLabel.text = [self.beanCollection.extractionTime stringValue];
+    self.extractionProgressLabel.text = [NSString stringWithFormat:@"%1.1f", [self.beanCollection.extractionTime doubleValue]];
+    
+    //Make sure that extraction button always is non-toggled when entering the view.
+    self.toggleExtractionTimerButton.style = UIBarButtonItemStylePlain;
     
     if (![self.beanCollection.note isEqualToString:@""])
     {
@@ -124,8 +132,8 @@
   NSLog(@"BeanCollectionExtractionViewController - timerInterrupted");
   
   //Return UI to "Start extraction" state.
-  [self.extractionButton setTitle:@"Start extraction" forState:UIControlStateNormal];
-  self.extractionProgressLabel.text = [self.beanCollection.extractionTime stringValue];
+  [self.extractionButton setTitle:@"Start" forState:UIControlStateNormal];
+  self.extractionProgressLabel.text = [NSString stringWithFormat:@"%1.1f", [self.beanCollection.extractionTime doubleValue]];
   self.extractionInProgress = NO;
 }
 
@@ -140,7 +148,7 @@
   if ([(AppDelegate*) [[UIApplication sharedApplication] delegate] getTimer] == nil || self.extractionInProgress == NO)
   {
     self.extractionProgress = [self.beanCollection.extractionTime doubleValue];
-    [self.extractionButton setTitle:@"Stop extraction" forState:UIControlStateNormal];
+    [self.extractionButton setTitle:@"Stop" forState:UIControlStateNormal];
     self.extractionInProgress = YES;
     
     [(AppDelegate*) [[UIApplication sharedApplication] delegate] createTimer:self :@selector(updateExtractionProgress) :nil :YES];
@@ -151,6 +159,47 @@
   }
 }
 
+- (void) showExtractionTimer:(id)sender
+{
+  [UIView animateWithDuration:0.2f delay: 0.0f options: UIViewAnimationOptionCurveEaseInOut
+                   animations:^{
+                     if (self.extractionTimerView.frame.origin.y < 0)
+                     {
+                       self.toggleExtractionTimerButton.style = UIBarButtonItemStyleDone;
+                       //Slide in
+                       self.extractionTimerView.frame = CGRectMake(
+                                                                   self.extractionTimerView.frame.origin.x,
+                                                                   0.0,
+                                                                   self.extractionTimerView.frame.size.width,
+                                                                   self.extractionTimerView.frame.size.height);
+                       
+                       //Drop shadow
+                       [self.extractionTimerView.layer setShadowColor:[UIColor blackColor].CGColor];
+                       [self.extractionTimerView.layer setShadowOpacity:0.8];
+                       [self.extractionTimerView.layer setShadowRadius:3.0];
+                       [self.extractionTimerView.layer setShadowOffset:CGSizeMake(2.0, 2.0)];
+                     }
+                     else
+                     {
+                       self.toggleExtractionTimerButton.style = UIBarButtonItemStylePlain;
+                       //Slide out
+                       self.extractionTimerView.frame = CGRectMake(
+                                                                   self.extractionTimerView.frame.origin.x,
+                                                                   self.extractionTimerView.frame.size.height * -1,
+                                                                   self.extractionTimerView.frame.size.width,
+                                                                   self.extractionTimerView.frame.size.height);
+                       //Remove shadow
+                       //[self.extractionTimerView.layer setShadowOpacity:0.0];
+                       [self.extractionTimerView.layer setShadowRadius:0.0];
+                       [self.extractionTimerView.layer setShadowOffset:CGSizeMake(0.0, 0.0)];
+                     }
+                   }
+                   completion:^(BOOL finished){
+                     NSLog(@"Anim done!");
+                   }
+   ];
+}
+
 /*****************************************************
  Delegates
  *****************************************************/
diff --git a/iBean/iBean/Graphics/ibean-extraction-dropdown-background.png b/iBean/iBean/Graphics/ibean-extraction-dropdown-background.png
new file mode 100644
index 0000000..07b0dd6
Binary files /dev/null and b/iBean/iBean/Graphics/ibean-extraction-dropdown-background.png differ
diff --git a/iBean/iBean/Graphics/ibean-extraction-dropdown-background.pxm b/iBean/iBean/Graphics/ibean-extraction-dropdown-background.pxm
new file mode 100644
index 0000000..a84fc61
Binary files /dev/null and b/iBean/iBean/Graphics/ibean-extraction-dropdown-background.pxm differ
diff --git a/iBean/iBean/iPhoneStoryboard.storyboard b/iBean/iBean/iPhoneStoryboard.storyboard
index c23e3fc..5856bcd 100644
--- a/iBean/iBean/iPhoneStoryboard.storyboard
+++ b/iBean/iBean/iPhoneStoryboard.storyboard
@@ -1101,13 +1101,54 @@
                         <rect key="frame" x="0.0" y="64" width="320" height="455"/>
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                         <subviews>
+                            <view alpha="0.90000000000000002" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="rra-M1-0R9">
+                                <subviews>
+                                    <imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="ibean-extraction-dropdown-background.png" translatesAutoresizingMaskIntoConstraints="NO" id="8F1-ZM-Rbe"/>
+                                    <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="XX.x" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="05C-Wm-dzE">
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="62" id="dYg-S0-WR7"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="system" pointSize="64"/>
+                                        <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
+                                        <nil key="highlightedColor"/>
+                                        <color key="shadowColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/>
+                                        <size key="shadowOffset" width="0.0" height="1"/>
+                                    </label>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Eiq-kN-FyK">
+                                        <constraints>
+                                            <constraint firstAttribute="width" constant="94" id="jo6-rt-MJm"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="boldSystem" pointSize="19"/>
+                                        <state key="normal" title="Start">
+                                            <color key="titleColor" cocoaTouchSystemColor="darkTextColor"/>
+                                            <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                                        </state>
+                                        <state key="highlighted">
+                                            <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                                        </state>
+                                        <connections>
+                                            <action selector="startExtraction:" destination="aA5-tc-vwr" eventType="touchUpInside" id="8e4-x0-uqi"/>
+                                        </connections>
+                                    </button>
+                                </subviews>
+                                <color key="backgroundColor" cocoaTouchSystemColor="viewFlipsideBackgroundColor"/>
+                                <constraints>
+                                    <constraint firstItem="8F1-ZM-Rbe" firstAttribute="leading" secondItem="rra-M1-0R9" secondAttribute="leading" type="default" id="Baw-6p-yOh"/>
+                                    <constraint firstItem="05C-Wm-dzE" firstAttribute="top" secondItem="rra-M1-0R9" secondAttribute="top" constant="57" id="P9H-mW-vwH"/>
+                                    <constraint firstItem="05C-Wm-dzE" firstAttribute="leading" secondItem="rra-M1-0R9" secondAttribute="leading" constant="20" symbolic="YES" type="default" id="VFw-dV-has"/>
+                                    <constraint firstAttribute="trailing" secondItem="Eiq-kN-FyK" secondAttribute="trailing" constant="20" symbolic="YES" type="default" id="cpJ-7f-QAc"/>
+                                    <constraint firstItem="Eiq-kN-FyK" firstAttribute="top" secondItem="rra-M1-0R9" secondAttribute="top" constant="66" id="mbt-jO-WmY"/>
+                                    <constraint firstItem="Eiq-kN-FyK" firstAttribute="leading" secondItem="05C-Wm-dzE" secondAttribute="trailing" constant="8" symbolic="YES" type="default" id="oXH-Ha-Ash"/>
+                                    <constraint firstItem="8F1-ZM-Rbe" firstAttribute="bottom" secondItem="rra-M1-0R9" secondAttribute="bottom" type="default" id="qML-qu-7Zp"/>
+                                    <constraint firstItem="8F1-ZM-Rbe" firstAttribute="top" secondItem="rra-M1-0R9" secondAttribute="top" type="default" id="rgc-Ky-uZP"/>
+                                </constraints>
+                            </view>
                             <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="lWi-pD-I1j" customClass="BeanCollectionExtractionScrollView">
                                 <subviews>
                                     <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" scrollEnabled="NO" dataMode="prototypes" style="plain" separatorStyle="none" allowsSelection="NO" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" translatesAutoresizingMaskIntoConstraints="NO" id="nNM-14-LcQ">
                                         <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
                                         <constraints>
                                             <constraint firstAttribute="height" constant="89" id="ulf-w1-iKE"/>
-                                            <constraint firstAttribute="width" constant="320" id="vRm-5F-Wp0"/>
                                         </constraints>
                                         <prototypes>
                                             <tableViewCell contentMode="scaleToFill" selectionStyle="blue" indentationWidth="10" reuseIdentifier="BeanCell" rowHeight="60" id="GFY-k6-GqL" customClass="BeanCell">
@@ -1186,51 +1227,42 @@
                                 </subviews>
                                 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
                                 <constraints>
+                                    <constraint firstAttribute="bottom" secondItem="WyC-9J-FOJ" secondAttribute="bottom" constant="80" id="AnZ-Ou-PC5"/>
                                     <constraint firstItem="nNM-14-LcQ" firstAttribute="leading" secondItem="lWi-pD-I1j" secondAttribute="leading" constant="20" symbolic="YES" type="default" id="Fjx-gD-Ph5"/>
                                     <constraint firstItem="nNM-14-LcQ" firstAttribute="top" secondItem="lWi-pD-I1j" secondAttribute="top" constant="20" symbolic="YES" type="default" id="FtY-Zh-q0q"/>
                                     <constraint firstItem="WyC-9J-FOJ" firstAttribute="leading" secondItem="lWi-pD-I1j" secondAttribute="leading" constant="20" symbolic="YES" type="default" id="Lb4-0U-ujx"/>
-                                    <constraint firstItem="WyC-9J-FOJ" firstAttribute="centerX" secondItem="lWi-pD-I1j" secondAttribute="centerX" type="default" id="M8q-m1-I5x"/>
-                                    <constraint firstAttribute="bottom" secondItem="WyC-9J-FOJ" secondAttribute="bottom" constant="20" symbolic="YES" type="default" id="ZJd-94-CmJ"/>
                                     <constraint firstAttribute="trailing" secondItem="WyC-9J-FOJ" secondAttribute="trailing" constant="20" symbolic="YES" type="default" id="bjg-lY-kza"/>
                                     <constraint firstItem="WyC-9J-FOJ" firstAttribute="top" secondItem="nNM-14-LcQ" secondAttribute="bottom" constant="8" symbolic="YES" type="default" id="fPM-8S-dGh"/>
                                     <constraint firstAttribute="trailing" secondItem="nNM-14-LcQ" secondAttribute="trailing" constant="20" symbolic="YES" type="default" id="ffc-G9-gKf"/>
+                                    <constraint firstItem="nNM-14-LcQ" firstAttribute="centerX" secondItem="lWi-pD-I1j" secondAttribute="centerX" type="default" id="tjo-rC-SdR"/>
                                 </constraints>
                             </scrollView>
-                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="YJ7-1f-6ZW">
-                                <fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="15"/>
-                                <state key="normal" title="Start extraction">
-                                    <color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
-                                    <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
-                                </state>
-                                <connections>
-                                    <action selector="startExtraction:" destination="aA5-tc-vwr" eventType="touchUpInside" id="VkN-OE-9wh"/>
-                                </connections>
-                            </button>
-                            <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Extraction counter" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="OLN-e5-oOe">
-                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
-                                <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
-                                <nil key="highlightedColor"/>
-                            </label>
                         </subviews>
-                        <color key="backgroundColor" red="0.34650985049999999" green="0.21581921879999999" blue="0.1054245046" alpha="1" colorSpace="calibratedRGB"/>
                         <constraints>
+                            <constraint firstItem="rra-M1-0R9" firstAttribute="top" secondItem="Wfz-bK-fv9" secondAttribute="top" constant="-250" id="0Pe-jV-Y9A"/>
                             <constraint firstItem="lWi-pD-I1j" firstAttribute="top" secondItem="Wfz-bK-fv9" secondAttribute="top" constant="-20" id="23s-Qj-OI3"/>
-                            <constraint firstAttribute="bottom" secondItem="OLN-e5-oOe" secondAttribute="bottom" constant="20" symbolic="YES" type="default" id="5Qr-Sh-PDH"/>
-                            <constraint firstItem="lWi-pD-I1j" firstAttribute="centerX" secondItem="Wfz-bK-fv9" secondAttribute="centerX" type="default" id="TpB-6n-I3J"/>
-                            <constraint firstAttribute="trailing" secondItem="YJ7-1f-6ZW" secondAttribute="trailing" constant="20" symbolic="YES" type="default" id="gAH-4W-K42"/>
-                            <constraint firstItem="OLN-e5-oOe" firstAttribute="leading" secondItem="Wfz-bK-fv9" secondAttribute="leading" constant="20" symbolic="YES" type="default" id="lYU-wl-w14"/>
-                            <constraint firstItem="YJ7-1f-6ZW" firstAttribute="top" secondItem="lWi-pD-I1j" secondAttribute="bottom" constant="8" symbolic="YES" type="default" id="oQd-Hn-Q7R"/>
-                            <constraint firstItem="YJ7-1f-6ZW" firstAttribute="centerY" secondItem="OLN-e5-oOe" secondAttribute="centerY" type="default" id="rZZ-sg-nWO"/>
+                            <constraint firstItem="rra-M1-0R9" firstAttribute="centerX" secondItem="lWi-pD-I1j" secondAttribute="centerX" type="default" id="Q1f-lO-YVD"/>
+                            <constraint firstItem="rra-M1-0R9" firstAttribute="leading" secondItem="Wfz-bK-fv9" secondAttribute="leading" type="default" id="Xsh-N7-SFo"/>
+                            <constraint firstItem="lWi-pD-I1j" firstAttribute="bottom" secondItem="Wfz-bK-fv9" secondAttribute="bottom" type="default" id="dSB-0x-tTb"/>
+                            <constraint firstAttribute="bottom" secondItem="rra-M1-0R9" secondAttribute="bottom" constant="455" id="hdq-jm-LZE"/>
+                            <constraint firstItem="lWi-pD-I1j" firstAttribute="leading" secondItem="Wfz-bK-fv9" secondAttribute="leading" constant="-20" id="mLb-KI-AQj"/>
+                            <constraint firstItem="rra-M1-0R9" firstAttribute="trailing" secondItem="Wfz-bK-fv9" secondAttribute="trailing" type="default" id="rkI-EU-Vo1"/>
                         </constraints>
                     </view>
                     <navigationItem key="navigationItem" id="nKM-NZ-clm">
-                        <barButtonItem key="rightBarButtonItem" title="Extract!" id="ikw-nF-0l3"/>
+                        <barButtonItem key="rightBarButtonItem" title="Extract!" id="ikw-nF-0l3">
+                            <connections>
+                                <action selector="showExtractionTimer:" destination="aA5-tc-vwr" id="HI3-s8-R1U"/>
+                            </connections>
+                        </barButtonItem>
                     </navigationItem>
                     <connections>
                         <outlet property="beanCollectionNoteTextView" destination="WyC-9J-FOJ" id="ajj-RC-E9O"/>
                         <outlet property="beanTableView" destination="nNM-14-LcQ" id="fOr-10-Kts"/>
-                        <outlet property="extractionButton" destination="YJ7-1f-6ZW" id="tvs-fK-NQd"/>
-                        <outlet property="extractionProgressLabel" destination="OLN-e5-oOe" id="X73-Gr-2yj"/>
+                        <outlet property="extractionButton" destination="Eiq-kN-FyK" id="Jzg-9B-7Ve"/>
+                        <outlet property="extractionProgressLabel" destination="05C-Wm-dzE" id="fPd-ul-hiL"/>
+                        <outlet property="extractionTimerView" destination="rra-M1-0R9" id="Qae-E5-pcu"/>
+                        <outlet property="toggleExtractionTimerButton" destination="ikw-nF-0l3" id="ZPG-GJ-AVM"/>
                     </connections>
                 </viewController>
                 <placeholder placeholderIdentifier="IBFirstResponder" id="ZA6-Ra-Cp0" userLabel="First Responder" sceneMemberID="firstResponder"/>
@@ -1260,6 +1292,7 @@
     </scenes>
     <resources>
         <image name="ibean-beancell-bean.png" width="200" height="198"/>
+        <image name="ibean-extraction-dropdown-background.png" width="320" height="240"/>
     </resources>
     <classes>
         <class className="AddBeanViewController" superclassName="UIViewController">
@@ -1302,11 +1335,14 @@
         <class className="BeanCollectionExtractionViewController" superclassName="UIViewController">
             <source key="sourceIdentifier" type="project" relativePath="./Classes/BeanCollectionExtractionViewController.h"/>
             <relationships>
+                <relationship kind="action" name="showExtractionTimer:"/>
                 <relationship kind="action" name="startExtraction:"/>
                 <relationship kind="outlet" name="beanCollectionNoteTextView" candidateClass="UITextView"/>
                 <relationship kind="outlet" name="beanTableView" candidateClass="UITableView"/>
                 <relationship kind="outlet" name="extractionButton" candidateClass="UIButton"/>
                 <relationship kind="outlet" name="extractionProgressLabel" candidateClass="UILabel"/>
+                <relationship kind="outlet" name="extractionTimerView" candidateClass="UIView"/>
+                <relationship kind="outlet" name="toggleExtractionTimerButton" candidateClass="UIBarButtonItem"/>
             </relationships>
         </class>
         <class className="BeanCollectionInfoViewController" superclassName="UIViewController">
-- 
cgit v1.2.3