Commit 85bfd8db76c12b1d2ada3aaf5da457d4421396cc

Authored by Imanol-Mikel Barba Sabariego
1 parent 5c4e1acc

--no commit message

DUREX Vendor Control/Base.lproj/DatePickerViewController.xib
@@ -13,11 +13,11 @@ @@ -13,11 +13,11 @@
13 </placeholder> 13 </placeholder>
14 <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> 14 <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
15 <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="7fx-e7-JEt"> 15 <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="7fx-e7-JEt">
16 - <rect key="frame" x="0.0" y="0.0" width="320" height="568"/> 16 + <rect key="frame" x="0.0" y="0.0" width="320" height="480"/>
17 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> 17 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
18 <subviews> 18 <subviews>
19 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="o92-Jq-3Xo"> 19 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="o92-Jq-3Xo">
20 - <rect key="frame" x="6" y="126" width="308" height="296"/> 20 + <rect key="frame" x="6" y="70" width="308" height="296"/>
21 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> 21 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
22 <subviews> 22 <subviews>
23 <button opaque="NO" contentMode="scaleToFill" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="8vW-ig-tUA"> 23 <button opaque="NO" contentMode="scaleToFill" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="8vW-ig-tUA">
@@ -73,11 +73,11 @@ AQABAAEAAQAB//+dkAEA//+PgAAE//+dkAEI//+dkAEMUERUAFBTVABQV1QAUFBUAAAAAAEAAAABA @@ -73,11 +73,11 @@ AQABAAEAAQAB//+dkAEA//+PgAAE//+dkAEI//+dkAEMUERUAFBTVABQV1QAUFBUAAAAAAEAAAABA
73 </subviews> 73 </subviews>
74 <color key="backgroundColor" red="0.023529414087533951" green="0.0039215688593685627" blue="0.0039215688593685627" alpha="0.5" colorSpace="deviceRGB"/> 74 <color key="backgroundColor" red="0.023529414087533951" green="0.0039215688593685627" blue="0.0039215688593685627" alpha="0.5" colorSpace="deviceRGB"/>
75 <constraints> 75 <constraints>
76 - <constraint firstItem="o92-Jq-3Xo" firstAttribute="top" secondItem="7fx-e7-JEt" secondAttribute="top" constant="126" id="7ki-Mk-J5B"/> 76 + <constraint firstItem="o92-Jq-3Xo" firstAttribute="top" secondItem="7fx-e7-JEt" secondAttribute="top" constant="70" id="R2Y-Fr-tLL"/>
77 <constraint firstAttribute="centerX" secondItem="o92-Jq-3Xo" secondAttribute="centerX" id="fTS-XF-GoP"/> 77 <constraint firstAttribute="centerX" secondItem="o92-Jq-3Xo" secondAttribute="centerX" id="fTS-XF-GoP"/>
78 </constraints> 78 </constraints>
79 <simulatedStatusBarMetrics key="simulatedStatusBarMetrics"/> 79 <simulatedStatusBarMetrics key="simulatedStatusBarMetrics"/>
80 - <simulatedScreenMetrics key="simulatedDestinationMetrics" type="retina4"/> 80 + <simulatedScreenMetrics key="simulatedDestinationMetrics"/>
81 </view> 81 </view>
82 </objects> 82 </objects>
83 </document> 83 </document>
DUREX Vendor Control/Base.lproj/Localizable.strings
@@ -87,4 +87,9 @@ @@ -87,4 +87,9 @@
87 "Success!" = "Success!"; 87 "Success!" = "Success!";
88 "Connection to server failed" = "Connection to server failed"; 88 "Connection to server failed" = "Connection to server failed";
89 "Error" = "Error"; 89 "Error" = "Error";
90 -"Product" = "Product";  
91 \ No newline at end of file 90 \ No newline at end of file
  91 +"Product" = "Product";
  92 +"Entered price has an invalid format" = "Entered price has an invalid format";
  93 +"Entered product code has an invalid format" = "Entered product code has an invalid format";
  94 +"Entered channel has an invalid format" = "Entered channel has an invalid format";
  95 +"Missing channel" = "Missing channel";
  96 +"Missing product code" = "Missing product code";
92 \ No newline at end of file 97 \ No newline at end of file
DUREX Vendor Control/Base.lproj/NameChangerViewController.xib
@@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
19 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> 19 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
20 <subviews> 20 <subviews>
21 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Yfy-pU-0Wn"> 21 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Yfy-pU-0Wn">
22 - <rect key="frame" x="7" y="170" width="307" height="181"/> 22 + <rect key="frame" x="7" y="70" width="307" height="181"/>
23 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> 23 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
24 <subviews> 24 <subviews>
25 <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="vbt-3v-Jzm"> 25 <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="vbt-3v-Jzm">
@@ -102,7 +102,7 @@ @@ -102,7 +102,7 @@
102 </subviews> 102 </subviews>
103 <color key="backgroundColor" red="0.023529414089999999" green="0.0039215688589999999" blue="0.0039215688589999999" alpha="0.5" colorSpace="deviceRGB"/> 103 <color key="backgroundColor" red="0.023529414089999999" green="0.0039215688589999999" blue="0.0039215688589999999" alpha="0.5" colorSpace="deviceRGB"/>
104 <constraints> 104 <constraints>
105 - <constraint firstItem="Yfy-pU-0Wn" firstAttribute="top" secondItem="orJ-qi-Y62" secondAttribute="top" constant="170" id="Mv8-ll-5jP"/> 105 + <constraint firstItem="Yfy-pU-0Wn" firstAttribute="top" secondItem="orJ-qi-Y62" secondAttribute="top" constant="70" id="Mv8-ll-5jP"/>
106 <constraint firstAttribute="centerX" secondItem="Yfy-pU-0Wn" secondAttribute="centerX" constant="-0.5" id="oiN-2m-voi"/> 106 <constraint firstAttribute="centerX" secondItem="Yfy-pU-0Wn" secondAttribute="centerX" constant="-0.5" id="oiN-2m-voi"/>
107 </constraints> 107 </constraints>
108 <simulatedStatusBarMetrics key="simulatedStatusBarMetrics"/> 108 <simulatedStatusBarMetrics key="simulatedStatusBarMetrics"/>
DUREX Vendor Control/Base.lproj/PriceChangerViewController.xib
@@ -6,7 +6,7 @@ @@ -6,7 +6,7 @@
6 <objects> 6 <objects>
7 <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="PriceChangerViewController"> 7 <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="PriceChangerViewController">
8 <connections> 8 <connections>
9 - <outlet property="channel" destination="0IF-Ml-nmK" id="8uw-9W-nHO"/> 9 + <outlet property="channel" destination="Yrc-dD-lC1" id="Ojk-T9-Ot6"/>
10 <outlet property="code" destination="0IF-Ml-nmK" id="oeg-QC-UEa"/> 10 <outlet property="code" destination="0IF-Ml-nmK" id="oeg-QC-UEa"/>
11 <outlet property="price" destination="0ap-q1-lJS" id="sSP-HQ-Xcj"/> 11 <outlet property="price" destination="0ap-q1-lJS" id="sSP-HQ-Xcj"/>
12 <outlet property="priceChangerView" destination="6eG-rz-OsA" id="cZv-wv-biI"/> 12 <outlet property="priceChangerView" destination="6eG-rz-OsA" id="cZv-wv-biI"/>
@@ -15,11 +15,11 @@ @@ -15,11 +15,11 @@
15 </placeholder> 15 </placeholder>
16 <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> 16 <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
17 <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="Vhv-I1-cgL"> 17 <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="Vhv-I1-cgL">
18 - <rect key="frame" x="0.0" y="0.0" width="320" height="568"/> 18 + <rect key="frame" x="0.0" y="0.0" width="320" height="480"/>
19 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> 19 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
20 <subviews> 20 <subviews>
21 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="6eG-rz-OsA"> 21 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="6eG-rz-OsA">
22 - <rect key="frame" x="7" y="170" width="307" height="181"/> 22 + <rect key="frame" x="7" y="70" width="307" height="181"/>
23 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> 23 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
24 <subviews> 24 <subviews>
25 <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="Yrc-dD-lC1"> 25 <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="Yrc-dD-lC1">
@@ -102,11 +102,11 @@ @@ -102,11 +102,11 @@
102 </subviews> 102 </subviews>
103 <color key="backgroundColor" red="0.023529414089999999" green="0.0039215688589999999" blue="0.0039215688589999999" alpha="0.5" colorSpace="deviceRGB"/> 103 <color key="backgroundColor" red="0.023529414089999999" green="0.0039215688589999999" blue="0.0039215688589999999" alpha="0.5" colorSpace="deviceRGB"/>
104 <constraints> 104 <constraints>
105 - <constraint firstItem="6eG-rz-OsA" firstAttribute="top" secondItem="Vhv-I1-cgL" secondAttribute="top" constant="170" id="JVE-no-tdA"/> 105 + <constraint firstItem="6eG-rz-OsA" firstAttribute="top" secondItem="Vhv-I1-cgL" secondAttribute="top" constant="70" id="JVE-no-tdA"/>
106 <constraint firstAttribute="centerX" secondItem="6eG-rz-OsA" secondAttribute="centerX" constant="-0.5" id="ShJ-gZ-P8L"/> 106 <constraint firstAttribute="centerX" secondItem="6eG-rz-OsA" secondAttribute="centerX" constant="-0.5" id="ShJ-gZ-P8L"/>
107 </constraints> 107 </constraints>
108 <simulatedStatusBarMetrics key="simulatedStatusBarMetrics"/> 108 <simulatedStatusBarMetrics key="simulatedStatusBarMetrics"/>
109 - <simulatedScreenMetrics key="simulatedDestinationMetrics" type="retina4"/> 109 + <simulatedScreenMetrics key="simulatedDestinationMetrics"/>
110 </view> 110 </view>
111 </objects> 111 </objects>
112 </document> 112 </document>
DUREX Vendor Control/CommunicationProtocol.m
@@ -148,8 +148,11 @@ @@ -148,8 +148,11 @@
148 { 148 {
149 [[EMConnectionManager sharedManager] readResource:@"data" onSuccess:^(id readValue) 149 [[EMConnectionManager sharedManager] readResource:@"data" onSuccess:^(id readValue)
150 { 150 {
151 - [message appendString: readValue];  
152 - [message setString: [message substringToIndex:numBytes]]; 151 + if([readValue length] < numBytes)
  152 + {
  153 + NSLog(@"[CommunicationProtocol.m]: WARNING: Device issued wrong numBytes, possible truncated message.");
  154 + }
  155 + [message appendString:[readValue substringToIndex:numBytes]];
153 NSLog(@"[CommunicationProtocol.m]: data read: %@",message); 156 NSLog(@"[CommunicationProtocol.m]: data read: %@",message);
154 } 157 }
155 onFail:^(NSError *error) 158 onFail:^(NSError *error)
DUREX Vendor Control/DUREX Vendor Control.xcodeproj/project.pbxproj
@@ -18,6 +18,8 @@ @@ -18,6 +18,8 @@
18 34AAB88D189805300019860D /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 34AAB88C189805300019860D /* Images.xcassets */; }; 18 34AAB88D189805300019860D /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 34AAB88C189805300019860D /* Images.xcassets */; };
19 F9015D9019B73052006C7882 /* DatePickerViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = F9015D9219B73052006C7882 /* DatePickerViewController.xib */; }; 19 F9015D9019B73052006C7882 /* DatePickerViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = F9015D9219B73052006C7882 /* DatePickerViewController.xib */; };
20 F9015D9719B7305E006C7882 /* DatePickerViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = F9015D9919B7305E006C7882 /* DatePickerViewController_iPad.xib */; }; 20 F9015D9719B7305E006C7882 /* DatePickerViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = F9015D9919B7305E006C7882 /* DatePickerViewController_iPad.xib */; };
  21 + F915612919C3D16D00126FE2 /* DateRangePickerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F915612719C3D16D00126FE2 /* DateRangePickerViewController.m */; };
  22 + F915612A19C3D16D00126FE2 /* DateRangePickerViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = F915612819C3D16D00126FE2 /* DateRangePickerViewController.xib */; };
21 F92F567919B75F5E00A1EACA /* PriceChangerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F92F567719B75F5E00A1EACA /* PriceChangerViewController.m */; }; 23 F92F567919B75F5E00A1EACA /* PriceChangerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F92F567719B75F5E00A1EACA /* PriceChangerViewController.m */; };
22 F92F567D19B7609C00A1EACA /* PriceChangerViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = F92F567F19B7609C00A1EACA /* PriceChangerViewController.xib */; }; 24 F92F567D19B7609C00A1EACA /* PriceChangerViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = F92F567F19B7609C00A1EACA /* PriceChangerViewController.xib */; };
23 F92F568419B760A800A1EACA /* PriceChangerViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = F92F568619B760A800A1EACA /* PriceChangerViewController_iPad.xib */; }; 25 F92F568419B760A800A1EACA /* PriceChangerViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = F92F568619B760A800A1EACA /* PriceChangerViewController_iPad.xib */; };
@@ -82,6 +84,9 @@ @@ -82,6 +84,9 @@
82 F9015D9819B7305E006C7882 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/DatePickerViewController_iPad.xib; sourceTree = "<group>"; }; 84 F9015D9819B7305E006C7882 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/DatePickerViewController_iPad.xib; sourceTree = "<group>"; };
83 F9015D9B19B73062006C7882 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/DatePickerViewController_iPad.strings; sourceTree = "<group>"; }; 85 F9015D9B19B73062006C7882 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/DatePickerViewController_iPad.strings; sourceTree = "<group>"; };
84 F9015D9D19B73062006C7882 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/DatePickerViewController_iPad.strings; sourceTree = "<group>"; }; 86 F9015D9D19B73062006C7882 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/DatePickerViewController_iPad.strings; sourceTree = "<group>"; };
  87 + F915612619C3D16D00126FE2 /* DateRangePickerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DateRangePickerViewController.h; sourceTree = SOURCE_ROOT; };
  88 + F915612719C3D16D00126FE2 /* DateRangePickerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DateRangePickerViewController.m; sourceTree = SOURCE_ROOT; };
  89 + F915612819C3D16D00126FE2 /* DateRangePickerViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = DateRangePickerViewController.xib; sourceTree = SOURCE_ROOT; };
85 F92F567619B75F5E00A1EACA /* PriceChangerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PriceChangerViewController.h; sourceTree = SOURCE_ROOT; }; 90 F92F567619B75F5E00A1EACA /* PriceChangerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PriceChangerViewController.h; sourceTree = SOURCE_ROOT; };
86 F92F567719B75F5E00A1EACA /* PriceChangerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PriceChangerViewController.m; sourceTree = SOURCE_ROOT; }; 91 F92F567719B75F5E00A1EACA /* PriceChangerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PriceChangerViewController.m; sourceTree = SOURCE_ROOT; };
87 F92F567E19B7609C00A1EACA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/PriceChangerViewController.xib; sourceTree = "<group>"; }; 92 F92F567E19B7609C00A1EACA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/PriceChangerViewController.xib; sourceTree = "<group>"; };
@@ -202,6 +207,7 @@ @@ -202,6 +207,7 @@
202 F933F80219B6819400521B90 /* DatePickerViewController.m */, 207 F933F80219B6819400521B90 /* DatePickerViewController.m */,
203 F92F567719B75F5E00A1EACA /* PriceChangerViewController.m */, 208 F92F567719B75F5E00A1EACA /* PriceChangerViewController.m */,
204 F92F568E19B763FD00A1EACA /* NameChangerViewController.m */, 209 F92F568E19B763FD00A1EACA /* NameChangerViewController.m */,
  210 + F915612719C3D16D00126FE2 /* DateRangePickerViewController.m */,
205 34AAB880189804FF0019860D /* main.m */, 211 34AAB880189804FF0019860D /* main.m */,
206 F98446EF19B9EAE9005C4992 /* Sensors.m */, 212 F98446EF19B9EAE9005C4992 /* Sensors.m */,
207 F989B5FE19BCD7A100657DD9 /* Sale.m */, 213 F989B5FE19BCD7A100657DD9 /* Sale.m */,
@@ -291,6 +297,7 @@ @@ -291,6 +297,7 @@
291 F92F568619B760A800A1EACA /* PriceChangerViewController_iPad.xib */, 297 F92F568619B760A800A1EACA /* PriceChangerViewController_iPad.xib */,
292 F92F569419B7665F00A1EACA /* NameChangerViewController.xib */, 298 F92F569419B7665F00A1EACA /* NameChangerViewController.xib */,
293 F92F569D19B76A5D00A1EACA /* NameChangerViewController_iPad.xib */, 299 F92F569D19B76A5D00A1EACA /* NameChangerViewController_iPad.xib */,
  300 + F915612819C3D16D00126FE2 /* DateRangePickerViewController.xib */,
294 ); 301 );
295 name = Views; 302 name = Views;
296 path = ..; 303 path = ..;
@@ -307,6 +314,7 @@ @@ -307,6 +314,7 @@
307 F933F80119B6819400521B90 /* DatePickerViewController.h */, 314 F933F80119B6819400521B90 /* DatePickerViewController.h */,
308 F92F567619B75F5E00A1EACA /* PriceChangerViewController.h */, 315 F92F567619B75F5E00A1EACA /* PriceChangerViewController.h */,
309 F92F568D19B763FD00A1EACA /* NameChangerViewController.h */, 316 F92F568D19B763FD00A1EACA /* NameChangerViewController.h */,
  317 + F915612619C3D16D00126FE2 /* DateRangePickerViewController.h */,
310 F98446EE19B9EAE9005C4992 /* Sensors.h */, 318 F98446EE19B9EAE9005C4992 /* Sensors.h */,
311 F989B5FD19BCD7A100657DD9 /* Sale.h */, 319 F989B5FD19BCD7A100657DD9 /* Sale.h */,
312 F989B60019BCE28C00657DD9 /* SalesLog.h */, 320 F989B60019BCE28C00657DD9 /* SalesLog.h */,
@@ -393,6 +401,7 @@ @@ -393,6 +401,7 @@
393 F92F569B19B76A5D00A1EACA /* NameChangerViewController_iPad.xib in Resources */, 401 F92F569B19B76A5D00A1EACA /* NameChangerViewController_iPad.xib in Resources */,
394 F92F567D19B7609C00A1EACA /* PriceChangerViewController.xib in Resources */, 402 F92F567D19B7609C00A1EACA /* PriceChangerViewController.xib in Resources */,
395 F92F569219B7665F00A1EACA /* NameChangerViewController.xib in Resources */, 403 F92F569219B7665F00A1EACA /* NameChangerViewController.xib in Resources */,
  404 + F915612A19C3D16D00126FE2 /* DateRangePickerViewController.xib in Resources */,
396 F961D80C199A5F2D00E9282C /* back_arrow.png in Resources */, 405 F961D80C199A5F2D00E9282C /* back_arrow.png in Resources */,
397 F961D816199A5FA000E9282C /* Localizable.strings in Resources */, 406 F961D816199A5FA000E9282C /* Localizable.strings in Resources */,
398 F97B90CB19B859F500DDA9EF /* icon_checkmark.png in Resources */, 407 F97B90CB19B859F500DDA9EF /* icon_checkmark.png in Resources */,
@@ -410,6 +419,7 @@ @@ -410,6 +419,7 @@
410 isa = PBXSourcesBuildPhase; 419 isa = PBXSourcesBuildPhase;
411 buildActionMask = 2147483647; 420 buildActionMask = 2147483647;
412 files = ( 421 files = (
  422 + F915612919C3D16D00126FE2 /* DateRangePickerViewController.m in Sources */,
413 F92F569019B763FD00A1EACA /* NameChangerViewController.m in Sources */, 423 F92F569019B763FD00A1EACA /* NameChangerViewController.m in Sources */,
414 F933F80419B6819400521B90 /* DatePickerViewController.m in Sources */, 424 F933F80419B6819400521B90 /* DatePickerViewController.m in Sources */,
415 F989B5FF19BCD7A100657DD9 /* Sale.m in Sources */, 425 F989B5FF19BCD7A100657DD9 /* Sale.m in Sources */,
DUREX Vendor Control/DUREX Vendor Control.xcodeproj/project.xcworkspace/xcuserdata/imanol.xcuserdatad/UserInterfaceState.xcuserstate
No preview for this file type
DUREX Vendor Control/DUREX Vendor Control.xcodeproj/xcuserdata/imanol.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
@@ -26,11 +26,11 @@ @@ -26,11 +26,11 @@
26 ignoreCount = "0" 26 ignoreCount = "0"
27 continueAfterRunningActions = "No" 27 continueAfterRunningActions = "No"
28 filePath = "MenuTableViewController.m" 28 filePath = "MenuTableViewController.m"
29 - timestampString = "431887175.109814" 29 + timestampString = "432265160.899922"
30 startingColumnNumber = "9223372036854775807" 30 startingColumnNumber = "9223372036854775807"
31 endingColumnNumber = "9223372036854775807" 31 endingColumnNumber = "9223372036854775807"
32 - startingLineNumber = "724"  
33 - endingLineNumber = "724" 32 + startingLineNumber = "717"
  33 + endingLineNumber = "717"
34 landmarkName = "-tableView:cellForRowAtIndexPath:" 34 landmarkName = "-tableView:cellForRowAtIndexPath:"
35 landmarkType = "5"> 35 landmarkType = "5">
36 </BreakpointContent> 36 </BreakpointContent>
@@ -42,11 +42,11 @@ @@ -42,11 +42,11 @@
42 ignoreCount = "0" 42 ignoreCount = "0"
43 continueAfterRunningActions = "No" 43 continueAfterRunningActions = "No"
44 filePath = "MenuTableViewController.m" 44 filePath = "MenuTableViewController.m"
45 - timestampString = "431887175.109814" 45 + timestampString = "432265160.899922"
46 startingColumnNumber = "9223372036854775807" 46 startingColumnNumber = "9223372036854775807"
47 endingColumnNumber = "9223372036854775807" 47 endingColumnNumber = "9223372036854775807"
48 - startingLineNumber = "666"  
49 - endingLineNumber = "666" 48 + startingLineNumber = "659"
  49 + endingLineNumber = "659"
50 landmarkName = "-tableView:cellForRowAtIndexPath:" 50 landmarkName = "-tableView:cellForRowAtIndexPath:"
51 landmarkType = "5"> 51 landmarkType = "5">
52 </BreakpointContent> 52 </BreakpointContent>
@@ -58,11 +58,11 @@ @@ -58,11 +58,11 @@
58 ignoreCount = "0" 58 ignoreCount = "0"
59 continueAfterRunningActions = "No" 59 continueAfterRunningActions = "No"
60 filePath = "MenuTableViewController.m" 60 filePath = "MenuTableViewController.m"
61 - timestampString = "431887175.109814" 61 + timestampString = "432265052.909736"
62 startingColumnNumber = "9223372036854775807" 62 startingColumnNumber = "9223372036854775807"
63 endingColumnNumber = "9223372036854775807" 63 endingColumnNumber = "9223372036854775807"
64 - startingLineNumber = "522"  
65 - endingLineNumber = "522" 64 + startingLineNumber = "511"
  65 + endingLineNumber = "511"
66 landmarkName = "-tableView:didSelectRowAtIndexPath:" 66 landmarkName = "-tableView:didSelectRowAtIndexPath:"
67 landmarkType = "5"> 67 landmarkType = "5">
68 </BreakpointContent> 68 </BreakpointContent>
@@ -74,11 +74,11 @@ @@ -74,11 +74,11 @@
74 ignoreCount = "0" 74 ignoreCount = "0"
75 continueAfterRunningActions = "No" 75 continueAfterRunningActions = "No"
76 filePath = "CommunicationProtocol.m" 76 filePath = "CommunicationProtocol.m"
77 - timestampString = "431825157.011553" 77 + timestampString = "432263020.427289"
78 startingColumnNumber = "9223372036854775807" 78 startingColumnNumber = "9223372036854775807"
79 endingColumnNumber = "9223372036854775807" 79 endingColumnNumber = "9223372036854775807"
80 - startingLineNumber = "359"  
81 - endingLineNumber = "359" 80 + startingLineNumber = "362"
  81 + endingLineNumber = "362"
82 landmarkName = "-readSensorData" 82 landmarkName = "-readSensorData"
83 landmarkType = "5"> 83 landmarkType = "5">
84 </BreakpointContent> 84 </BreakpointContent>
@@ -90,11 +90,11 @@ @@ -90,11 +90,11 @@
90 ignoreCount = "0" 90 ignoreCount = "0"
91 continueAfterRunningActions = "No" 91 continueAfterRunningActions = "No"
92 filePath = "CommunicationProtocol.m" 92 filePath = "CommunicationProtocol.m"
93 - timestampString = "431825158.083281" 93 + timestampString = "432263020.427289"
94 startingColumnNumber = "9223372036854775807" 94 startingColumnNumber = "9223372036854775807"
95 endingColumnNumber = "9223372036854775807" 95 endingColumnNumber = "9223372036854775807"
96 - startingLineNumber = "358"  
97 - endingLineNumber = "358" 96 + startingLineNumber = "361"
  97 + endingLineNumber = "361"
98 landmarkName = "-readSensorData" 98 landmarkName = "-readSensorData"
99 landmarkType = "5"> 99 landmarkType = "5">
100 </BreakpointContent> 100 </BreakpointContent>
@@ -106,11 +106,11 @@ @@ -106,11 +106,11 @@
106 ignoreCount = "0" 106 ignoreCount = "0"
107 continueAfterRunningActions = "No" 107 continueAfterRunningActions = "No"
108 filePath = "CommunicationProtocol.m" 108 filePath = "CommunicationProtocol.m"
109 - timestampString = "431950031.704831" 109 + timestampString = "432263020.427289"
110 startingColumnNumber = "9223372036854775807" 110 startingColumnNumber = "9223372036854775807"
111 endingColumnNumber = "9223372036854775807" 111 endingColumnNumber = "9223372036854775807"
112 - startingLineNumber = "377"  
113 - endingLineNumber = "377" 112 + startingLineNumber = "380"
  113 + endingLineNumber = "380"
114 landmarkName = "-readSensorData" 114 landmarkName = "-readSensorData"
115 landmarkType = "5"> 115 landmarkType = "5">
116 </BreakpointContent> 116 </BreakpointContent>
@@ -121,38 +121,6 @@ @@ -121,38 +121,6 @@
121 shouldBeEnabled = "No" 121 shouldBeEnabled = "No"
122 ignoreCount = "0" 122 ignoreCount = "0"
123 continueAfterRunningActions = "No" 123 continueAfterRunningActions = "No"
124 - filePath = "MenuTableViewController.m"  
125 - timestampString = "431887175.109814"  
126 - startingColumnNumber = "9223372036854775807"  
127 - endingColumnNumber = "9223372036854775807"  
128 - startingLineNumber = "559"  
129 - endingLineNumber = "559"  
130 - landmarkName = "-tableView:didSelectRowAtIndexPath:"  
131 - landmarkType = "5">  
132 - </BreakpointContent>  
133 - </BreakpointProxy>  
134 - <BreakpointProxy  
135 - BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">  
136 - <BreakpointContent  
137 - shouldBeEnabled = "No"  
138 - ignoreCount = "0"  
139 - continueAfterRunningActions = "No"  
140 - filePath = "MenuTableViewController.m"  
141 - timestampString = "431887175.109814"  
142 - startingColumnNumber = "9223372036854775807"  
143 - endingColumnNumber = "9223372036854775807"  
144 - startingLineNumber = "558"  
145 - endingLineNumber = "558"  
146 - landmarkName = "-tableView:didSelectRowAtIndexPath:"  
147 - landmarkType = "5">  
148 - </BreakpointContent>  
149 - </BreakpointProxy>  
150 - <BreakpointProxy  
151 - BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">  
152 - <BreakpointContent  
153 - shouldBeEnabled = "No"  
154 - ignoreCount = "0"  
155 - continueAfterRunningActions = "No"  
156 filePath = "SalesLog.m" 124 filePath = "SalesLog.m"
157 timestampString = "431825829.779956" 125 timestampString = "431825829.779956"
158 startingColumnNumber = "9223372036854775807" 126 startingColumnNumber = "9223372036854775807"
@@ -218,11 +186,11 @@ @@ -218,11 +186,11 @@
218 ignoreCount = "0" 186 ignoreCount = "0"
219 continueAfterRunningActions = "No" 187 continueAfterRunningActions = "No"
220 filePath = "MenuTableViewController.m" 188 filePath = "MenuTableViewController.m"
221 - timestampString = "431887175.109814" 189 + timestampString = "432265160.899922"
222 startingColumnNumber = "9223372036854775807" 190 startingColumnNumber = "9223372036854775807"
223 endingColumnNumber = "9223372036854775807" 191 endingColumnNumber = "9223372036854775807"
224 - startingLineNumber = "775"  
225 - endingLineNumber = "775" 192 + startingLineNumber = "768"
  193 + endingLineNumber = "768"
226 landmarkName = "-tableView:cellForRowAtIndexPath:" 194 landmarkName = "-tableView:cellForRowAtIndexPath:"
227 landmarkType = "5"> 195 landmarkType = "5">
228 </BreakpointContent> 196 </BreakpointContent>
@@ -234,11 +202,11 @@ @@ -234,11 +202,11 @@
234 ignoreCount = "0" 202 ignoreCount = "0"
235 continueAfterRunningActions = "No" 203 continueAfterRunningActions = "No"
236 filePath = "CommunicationProtocol.m" 204 filePath = "CommunicationProtocol.m"
237 - timestampString = "431854565.924087" 205 + timestampString = "432263020.427289"
238 startingColumnNumber = "9223372036854775807" 206 startingColumnNumber = "9223372036854775807"
239 endingColumnNumber = "9223372036854775807" 207 endingColumnNumber = "9223372036854775807"
240 - startingLineNumber = "210"  
241 - endingLineNumber = "210" 208 + startingLineNumber = "213"
  209 + endingLineNumber = "213"
242 landmarkName = "-writeMessage:" 210 landmarkName = "-writeMessage:"
243 landmarkType = "5"> 211 landmarkType = "5">
244 </BreakpointContent> 212 </BreakpointContent>
@@ -250,11 +218,11 @@ @@ -250,11 +218,11 @@
250 ignoreCount = "0" 218 ignoreCount = "0"
251 continueAfterRunningActions = "No" 219 continueAfterRunningActions = "No"
252 filePath = "MenuTableViewController.m" 220 filePath = "MenuTableViewController.m"
253 - timestampString = "431867660.218473" 221 + timestampString = "432263020.427289"
254 startingColumnNumber = "9223372036854775807" 222 startingColumnNumber = "9223372036854775807"
255 endingColumnNumber = "9223372036854775807" 223 endingColumnNumber = "9223372036854775807"
256 - startingLineNumber = "91"  
257 - endingLineNumber = "91" 224 + startingLineNumber = "92"
  225 + endingLineNumber = "92"
258 landmarkName = "-generateMaintenanceLevel" 226 landmarkName = "-generateMaintenanceLevel"
259 landmarkType = "5"> 227 landmarkType = "5">
260 </BreakpointContent> 228 </BreakpointContent>
@@ -266,11 +234,11 @@ @@ -266,11 +234,11 @@
266 ignoreCount = "0" 234 ignoreCount = "0"
267 continueAfterRunningActions = "No" 235 continueAfterRunningActions = "No"
268 filePath = "MenuTableViewController.m" 236 filePath = "MenuTableViewController.m"
269 - timestampString = "431867660.218473" 237 + timestampString = "432265052.909736"
270 startingColumnNumber = "9223372036854775807" 238 startingColumnNumber = "9223372036854775807"
271 endingColumnNumber = "9223372036854775807" 239 endingColumnNumber = "9223372036854775807"
272 - startingLineNumber = "124"  
273 - endingLineNumber = "124" 240 + startingLineNumber = "114"
  241 + endingLineNumber = "114"
274 landmarkName = "-generateSaleListNavLevel" 242 landmarkName = "-generateSaleListNavLevel"
275 landmarkType = "5"> 243 landmarkType = "5">
276 </BreakpointContent> 244 </BreakpointContent>
@@ -282,11 +250,11 @@ @@ -282,11 +250,11 @@
282 ignoreCount = "0" 250 ignoreCount = "0"
283 continueAfterRunningActions = "No" 251 continueAfterRunningActions = "No"
284 filePath = "MenuTableViewController.m" 252 filePath = "MenuTableViewController.m"
285 - timestampString = "431867660.218473" 253 + timestampString = "432265052.909736"
286 startingColumnNumber = "9223372036854775807" 254 startingColumnNumber = "9223372036854775807"
287 endingColumnNumber = "9223372036854775807" 255 endingColumnNumber = "9223372036854775807"
288 - startingLineNumber = "127"  
289 - endingLineNumber = "127" 256 + startingLineNumber = "117"
  257 + endingLineNumber = "117"
290 landmarkName = "-generateSaleListNavLevel" 258 landmarkName = "-generateSaleListNavLevel"
291 landmarkType = "5"> 259 landmarkType = "5">
292 </BreakpointContent> 260 </BreakpointContent>
@@ -298,11 +266,11 @@ @@ -298,11 +266,11 @@
298 ignoreCount = "0" 266 ignoreCount = "0"
299 continueAfterRunningActions = "No" 267 continueAfterRunningActions = "No"
300 filePath = "MenuTableViewController.m" 268 filePath = "MenuTableViewController.m"
301 - timestampString = "431867660.218473" 269 + timestampString = "432265052.909736"
302 startingColumnNumber = "9223372036854775807" 270 startingColumnNumber = "9223372036854775807"
303 endingColumnNumber = "9223372036854775807" 271 endingColumnNumber = "9223372036854775807"
304 - startingLineNumber = "136"  
305 - endingLineNumber = "136" 272 + startingLineNumber = "125"
  273 + endingLineNumber = "125"
306 landmarkName = "-generateSaleListNavLevel" 274 landmarkName = "-generateSaleListNavLevel"
307 landmarkType = "5"> 275 landmarkType = "5">
308 </BreakpointContent> 276 </BreakpointContent>
@@ -314,11 +282,11 @@ @@ -314,11 +282,11 @@
314 ignoreCount = "0" 282 ignoreCount = "0"
315 continueAfterRunningActions = "No" 283 continueAfterRunningActions = "No"
316 filePath = "MenuTableViewController.m" 284 filePath = "MenuTableViewController.m"
317 - timestampString = "431884750.147748" 285 + timestampString = "432265052.909736"
318 startingColumnNumber = "9223372036854775807" 286 startingColumnNumber = "9223372036854775807"
319 endingColumnNumber = "9223372036854775807" 287 endingColumnNumber = "9223372036854775807"
320 - startingLineNumber = "208"  
321 - endingLineNumber = "208" 288 + startingLineNumber = "197"
  289 + endingLineNumber = "197"
322 landmarkName = "-changeNavLevel::" 290 landmarkName = "-changeNavLevel::"
323 landmarkType = "5"> 291 landmarkType = "5">
324 </BreakpointContent> 292 </BreakpointContent>
@@ -330,11 +298,11 @@ @@ -330,11 +298,11 @@
330 ignoreCount = "0" 298 ignoreCount = "0"
331 continueAfterRunningActions = "No" 299 continueAfterRunningActions = "No"
332 filePath = "MenuTableViewController.m" 300 filePath = "MenuTableViewController.m"
333 - timestampString = "431887175.109814" 301 + timestampString = "432265052.909736"
334 startingColumnNumber = "9223372036854775807" 302 startingColumnNumber = "9223372036854775807"
335 endingColumnNumber = "9223372036854775807" 303 endingColumnNumber = "9223372036854775807"
336 - startingLineNumber = "507"  
337 - endingLineNumber = "507" 304 + startingLineNumber = "496"
  305 + endingLineNumber = "496"
338 landmarkName = "-tableView:numberOfRowsInSection:" 306 landmarkName = "-tableView:numberOfRowsInSection:"
339 landmarkType = "5"> 307 landmarkType = "5">
340 </BreakpointContent> 308 </BreakpointContent>
@@ -346,11 +314,11 @@ @@ -346,11 +314,11 @@
346 ignoreCount = "0" 314 ignoreCount = "0"
347 continueAfterRunningActions = "No" 315 continueAfterRunningActions = "No"
348 filePath = "MenuTableViewController.m" 316 filePath = "MenuTableViewController.m"
349 - timestampString = "431887175.109814" 317 + timestampString = "432265160.899922"
350 startingColumnNumber = "9223372036854775807" 318 startingColumnNumber = "9223372036854775807"
351 endingColumnNumber = "9223372036854775807" 319 endingColumnNumber = "9223372036854775807"
352 - startingLineNumber = "651"  
353 - endingLineNumber = "651" 320 + startingLineNumber = "644"
  321 + endingLineNumber = "644"
354 landmarkName = "-tableView:indentationLevelForRowAtIndexPath:" 322 landmarkName = "-tableView:indentationLevelForRowAtIndexPath:"
355 landmarkType = "5"> 323 landmarkType = "5">
356 </BreakpointContent> 324 </BreakpointContent>
@@ -362,11 +330,11 @@ @@ -362,11 +330,11 @@
362 ignoreCount = "0" 330 ignoreCount = "0"
363 continueAfterRunningActions = "No" 331 continueAfterRunningActions = "No"
364 filePath = "MenuTableViewController.m" 332 filePath = "MenuTableViewController.m"
365 - timestampString = "431887175.109814" 333 + timestampString = "432265160.899922"
366 startingColumnNumber = "9223372036854775807" 334 startingColumnNumber = "9223372036854775807"
367 endingColumnNumber = "9223372036854775807" 335 endingColumnNumber = "9223372036854775807"
368 - startingLineNumber = "671"  
369 - endingLineNumber = "671" 336 + startingLineNumber = "664"
  337 + endingLineNumber = "664"
370 landmarkName = "-tableView:cellForRowAtIndexPath:" 338 landmarkName = "-tableView:cellForRowAtIndexPath:"
371 landmarkType = "5"> 339 landmarkType = "5">
372 </BreakpointContent> 340 </BreakpointContent>
@@ -378,11 +346,11 @@ @@ -378,11 +346,11 @@
378 ignoreCount = "0" 346 ignoreCount = "0"
379 continueAfterRunningActions = "No" 347 continueAfterRunningActions = "No"
380 filePath = "MenuTableViewController.m" 348 filePath = "MenuTableViewController.m"
381 - timestampString = "431887175.109814" 349 + timestampString = "432265160.899922"
382 startingColumnNumber = "9223372036854775807" 350 startingColumnNumber = "9223372036854775807"
383 endingColumnNumber = "9223372036854775807" 351 endingColumnNumber = "9223372036854775807"
384 - startingLineNumber = "864"  
385 - endingLineNumber = "864" 352 + startingLineNumber = "857"
  353 + endingLineNumber = "857"
386 landmarkName = "-tableView:cellForRowAtIndexPath:" 354 landmarkName = "-tableView:cellForRowAtIndexPath:"
387 landmarkType = "5"> 355 landmarkType = "5">
388 </BreakpointContent> 356 </BreakpointContent>
@@ -394,11 +362,11 @@ @@ -394,11 +362,11 @@
394 ignoreCount = "0" 362 ignoreCount = "0"
395 continueAfterRunningActions = "No" 363 continueAfterRunningActions = "No"
396 filePath = "MenuTableViewController.m" 364 filePath = "MenuTableViewController.m"
397 - timestampString = "431887175.109814" 365 + timestampString = "432265160.899922"
398 startingColumnNumber = "9223372036854775807" 366 startingColumnNumber = "9223372036854775807"
399 endingColumnNumber = "9223372036854775807" 367 endingColumnNumber = "9223372036854775807"
400 - startingLineNumber = "865"  
401 - endingLineNumber = "865" 368 + startingLineNumber = "858"
  369 + endingLineNumber = "858"
402 landmarkName = "-tableView:cellForRowAtIndexPath:" 370 landmarkName = "-tableView:cellForRowAtIndexPath:"
403 landmarkType = "5"> 371 landmarkType = "5">
404 </BreakpointContent> 372 </BreakpointContent>
@@ -426,11 +394,11 @@ @@ -426,11 +394,11 @@
426 ignoreCount = "0" 394 ignoreCount = "0"
427 continueAfterRunningActions = "No" 395 continueAfterRunningActions = "No"
428 filePath = "MenuTableViewController.m" 396 filePath = "MenuTableViewController.m"
429 - timestampString = "431887175.109814" 397 + timestampString = "432265160.899922"
430 startingColumnNumber = "9223372036854775807" 398 startingColumnNumber = "9223372036854775807"
431 endingColumnNumber = "9223372036854775807" 399 endingColumnNumber = "9223372036854775807"
432 - startingLineNumber = "984"  
433 - endingLineNumber = "984" 400 + startingLineNumber = "977"
  401 + endingLineNumber = "977"
434 landmarkName = "-tableView:cellForRowAtIndexPath:" 402 landmarkName = "-tableView:cellForRowAtIndexPath:"
435 landmarkType = "5"> 403 landmarkType = "5">
436 </BreakpointContent> 404 </BreakpointContent>
@@ -442,11 +410,11 @@ @@ -442,11 +410,11 @@
442 ignoreCount = "0" 410 ignoreCount = "0"
443 continueAfterRunningActions = "No" 411 continueAfterRunningActions = "No"
444 filePath = "MenuTableViewController.m" 412 filePath = "MenuTableViewController.m"
445 - timestampString = "431887175.109814" 413 + timestampString = "432265052.909736"
446 startingColumnNumber = "9223372036854775807" 414 startingColumnNumber = "9223372036854775807"
447 endingColumnNumber = "9223372036854775807" 415 endingColumnNumber = "9223372036854775807"
448 - startingLineNumber = "463"  
449 - endingLineNumber = "463" 416 + startingLineNumber = "452"
  417 + endingLineNumber = "452"
450 landmarkName = "-toggleDropList:" 418 landmarkName = "-toggleDropList:"
451 landmarkType = "5"> 419 landmarkType = "5">
452 </BreakpointContent> 420 </BreakpointContent>
@@ -458,11 +426,11 @@ @@ -458,11 +426,11 @@
458 ignoreCount = "0" 426 ignoreCount = "0"
459 continueAfterRunningActions = "No" 427 continueAfterRunningActions = "No"
460 filePath = "MenuTableViewController.m" 428 filePath = "MenuTableViewController.m"
461 - timestampString = "431887175.109814" 429 + timestampString = "432265160.899922"
462 startingColumnNumber = "9223372036854775807" 430 startingColumnNumber = "9223372036854775807"
463 endingColumnNumber = "9223372036854775807" 431 endingColumnNumber = "9223372036854775807"
464 - startingLineNumber = "1069"  
465 - endingLineNumber = "1069" 432 + startingLineNumber = "1062"
  433 + endingLineNumber = "1062"
466 landmarkName = "-tableView:cellForRowAtIndexPath:" 434 landmarkName = "-tableView:cellForRowAtIndexPath:"
467 landmarkType = "5"> 435 landmarkType = "5">
468 </BreakpointContent> 436 </BreakpointContent>
@@ -474,11 +442,11 @@ @@ -474,11 +442,11 @@
474 ignoreCount = "0" 442 ignoreCount = "0"
475 continueAfterRunningActions = "No" 443 continueAfterRunningActions = "No"
476 filePath = "MenuTableViewController.m" 444 filePath = "MenuTableViewController.m"
477 - timestampString = "431887175.109814" 445 + timestampString = "432265160.899922"
478 startingColumnNumber = "9223372036854775807" 446 startingColumnNumber = "9223372036854775807"
479 endingColumnNumber = "9223372036854775807" 447 endingColumnNumber = "9223372036854775807"
480 - startingLineNumber = "1061"  
481 - endingLineNumber = "1061" 448 + startingLineNumber = "1054"
  449 + endingLineNumber = "1054"
482 landmarkName = "-tableView:cellForRowAtIndexPath:" 450 landmarkName = "-tableView:cellForRowAtIndexPath:"
483 landmarkType = "5"> 451 landmarkType = "5">
484 </BreakpointContent> 452 </BreakpointContent>
@@ -490,11 +458,11 @@ @@ -490,11 +458,11 @@
490 ignoreCount = "0" 458 ignoreCount = "0"
491 continueAfterRunningActions = "No" 459 continueAfterRunningActions = "No"
492 filePath = "MenuTableViewController.m" 460 filePath = "MenuTableViewController.m"
493 - timestampString = "431950315.399317" 461 + timestampString = "432265160.899922"
494 startingColumnNumber = "9223372036854775807" 462 startingColumnNumber = "9223372036854775807"
495 endingColumnNumber = "9223372036854775807" 463 endingColumnNumber = "9223372036854775807"
496 - startingLineNumber = "856"  
497 - endingLineNumber = "856" 464 + startingLineNumber = "849"
  465 + endingLineNumber = "849"
498 landmarkName = "-tableView:cellForRowAtIndexPath:" 466 landmarkName = "-tableView:cellForRowAtIndexPath:"
499 landmarkType = "5"> 467 landmarkType = "5">
500 </BreakpointContent> 468 </BreakpointContent>
@@ -506,14 +474,46 @@ @@ -506,14 +474,46 @@
506 ignoreCount = "0" 474 ignoreCount = "0"
507 continueAfterRunningActions = "No" 475 continueAfterRunningActions = "No"
508 filePath = "MenuTableViewController.m" 476 filePath = "MenuTableViewController.m"
509 - timestampString = "431950324.585151" 477 + timestampString = "432265160.899922"
510 startingColumnNumber = "9223372036854775807" 478 startingColumnNumber = "9223372036854775807"
511 endingColumnNumber = "9223372036854775807" 479 endingColumnNumber = "9223372036854775807"
512 - startingLineNumber = "854"  
513 - endingLineNumber = "854" 480 + startingLineNumber = "847"
  481 + endingLineNumber = "847"
514 landmarkName = "-tableView:cellForRowAtIndexPath:" 482 landmarkName = "-tableView:cellForRowAtIndexPath:"
515 landmarkType = "5"> 483 landmarkType = "5">
516 </BreakpointContent> 484 </BreakpointContent>
517 </BreakpointProxy> 485 </BreakpointProxy>
  486 + <BreakpointProxy
  487 + BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
  488 + <BreakpointContent
  489 + shouldBeEnabled = "No"
  490 + ignoreCount = "0"
  491 + continueAfterRunningActions = "No"
  492 + filePath = "MenuTableViewController.m"
  493 + timestampString = "432265160.899922"
  494 + startingColumnNumber = "9223372036854775807"
  495 + endingColumnNumber = "9223372036854775807"
  496 + startingLineNumber = "708"
  497 + endingLineNumber = "708"
  498 + landmarkName = "-tableView:cellForRowAtIndexPath:"
  499 + landmarkType = "5">
  500 + </BreakpointContent>
  501 + </BreakpointProxy>
  502 + <BreakpointProxy
  503 + BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
  504 + <BreakpointContent
  505 + shouldBeEnabled = "No"
  506 + ignoreCount = "0"
  507 + continueAfterRunningActions = "No"
  508 + filePath = "PriceChangerViewController.m"
  509 + timestampString = "432259134.170788"
  510 + startingColumnNumber = "9223372036854775807"
  511 + endingColumnNumber = "9223372036854775807"
  512 + startingLineNumber = "48"
  513 + endingLineNumber = "48"
  514 + landmarkName = "-dismissKeyboard"
  515 + landmarkType = "5">
  516 + </BreakpointContent>
  517 + </BreakpointProxy>
518 </Breakpoints> 518 </Breakpoints>
519 </Bucket> 519 </Bucket>
DUREX Vendor Control/DateRangePickerViewController.h 0 → 100644
  1 +//
  2 +// DateRangePickerViewController.h
  3 +// DUREX Vendor Control
  4 +//
  5 +// Created by Imanol Barba on 9/13/14.
  6 +// Copyright (c) 2014 Emmoco. All rights reserved.
  7 +//
  8 +
  9 +//
  10 +// DatePickerViewController.h
  11 +// DUREX Vendor Control
  12 +//
  13 +// Created by Imanol Barba on 03/09/14.
  14 +// Copyright (c) 2014 Emmoco. All rights reserved.
  15 +//
  16 +
  17 +@class DateRangePickerViewController;
  18 +
  19 +#import <UIKit/UIKit.h>
  20 +#import <QuartzCore/QuartzCore.h>
  21 +#import "DUREXAppDelegate.h"
  22 +
  23 +@protocol DateRangePickerViewControllerDelegate <NSObject>
  24 +- (void)passDateRangeViewController:(DateRangePickerViewController*)controller didFinishEnteringItem:(NSDate*) from : (NSDate*) to;
  25 +
  26 +@end
  27 +
  28 +@interface DateRangePickerViewController : UIViewController
  29 +
  30 +@property (strong, nonatomic) IBOutlet UIView *dateRangePickerView;
  31 +@property (strong, nonatomic) IBOutlet UIDatePicker *fromDate;
  32 +@property (strong, nonatomic) IBOutlet UIDatePicker *toDate;
  33 +@property (strong, nonatomic) IBOutlet UISwitch *fromToggler;
  34 +@property (strong, nonatomic) IBOutlet UISwitch *toToggler;
  35 +@property (nonatomic, strong) id <DateRangePickerViewControllerDelegate> delegate;
  36 +
  37 +- (void)showInView:(UIView *)aView animated:(BOOL)animated;
  38 +- (IBAction)toggleFromDate:(id)sender;
  39 +- (IBAction)toggleToDate:(id)sender;
  40 +- (IBAction)closePopup:(id)sender;
  41 +
  42 +@end
DUREX Vendor Control/DateRangePickerViewController.m 0 → 100644
  1 +//
  2 +// DateRangePickerViewController.m
  3 +// DUREX Vendor Control
  4 +//
  5 +// Created by Imanol Barba on 9/13/14.
  6 +// Copyright (c) 2014 Emmoco. All rights reserved.
  7 +//
  8 +
  9 +#import "DateRangePickerViewController.h"
  10 +
  11 +@interface DateRangePickerViewController ()
  12 +
  13 +@end
  14 +
  15 +@implementation DateRangePickerViewController
  16 +
  17 +- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
  18 +{
  19 + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
  20 + if (self) {
  21 + // Custom initialization
  22 + }
  23 + return self;
  24 +}
  25 +
  26 +- (void)viewDidLoad
  27 +{
  28 + self.view.backgroundColor=[[UIColor blackColor] colorWithAlphaComponent:.7];
  29 + self.dateRangePickerView.layer.cornerRadius = 5;
  30 + self.dateRangePickerView.layer.shadowOpacity = 0.8;
  31 + self.dateRangePickerView.layer.shadowOffset = CGSizeMake(0.0f, 0.0f);
  32 +
  33 + //Fix transparency glitch on iPad
  34 + [self.fromDate setDate:[NSDate dateWithTimeIntervalSince1970:NSTimeIntervalSince1970]];
  35 + [self.fromDate setDate:[NSDate date]];
  36 + [self.toDate setDate:[NSDate dateWithTimeIntervalSince1970:NSTimeIntervalSince1970]];
  37 + [self.toDate setDate:[NSDate date]];
  38 +
  39 + [super viewDidLoad];
  40 + // Do any additional setup after loading the view from its nib.
  41 +}
  42 +
  43 +- (void)didReceiveMemoryWarning
  44 +{
  45 + [super didReceiveMemoryWarning];
  46 + // Dispose of any resources that can be recreated.
  47 +}
  48 +
  49 +- (void)showAnimate
  50 +{
  51 + self.view.transform = CGAffineTransformMakeScale(1.3, 1.3);
  52 + self.view.alpha = 0;
  53 + [UIView animateWithDuration:.25 animations:^{
  54 + self.view.alpha = 1;
  55 + self.view.transform = CGAffineTransformMakeScale(1, 1);
  56 + }];
  57 +}
  58 +
  59 +- (void)removeAnimate
  60 +{
  61 + [UIView animateWithDuration:.25 animations:^{
  62 + self.view.transform = CGAffineTransformMakeScale(1.3, 1.3);
  63 + self.view.alpha = 0.0;
  64 + } completion:^(BOOL finished) {
  65 + if (finished) {
  66 + [self.view removeFromSuperview];
  67 + }
  68 + }];
  69 +}
  70 +
  71 +- (IBAction)toggleFromDate:(id)sender
  72 +{
  73 + if([[self fromToggler] isOn])
  74 + {
  75 + [[self fromDate] setEnabled:TRUE];
  76 + [[self fromDate] setHidden:FALSE];
  77 + }
  78 + else
  79 + {
  80 + [[self fromDate] setEnabled:FALSE];
  81 + [[self fromDate] setHidden:TRUE];
  82 + }
  83 +}
  84 +- (IBAction)toggleToDate:(id)sender
  85 +{
  86 + if([[self toToggler] isOn])
  87 + {
  88 + [[self toDate] setEnabled:TRUE];
  89 + [[self toDate] setHidden:FALSE];
  90 + }
  91 + else
  92 + {
  93 + [[self toDate] setEnabled:FALSE];
  94 + [[self toDate] setHidden:TRUE];
  95 + }
  96 +}
  97 +
  98 +- (IBAction)closePopup:(id)sender
  99 +{
  100 + NSDate *from = nil;
  101 + NSDate *to = nil;
  102 + if([[self fromToggler] isOn])
  103 + {
  104 + from = [[self fromDate] date];
  105 + }
  106 + if([[self toToggler] isOn])
  107 + {
  108 + to = [[self toDate] date];
  109 + }
  110 + [self.delegate passDateRangeViewController:self didFinishEnteringItem:from : to];
  111 + [self removeAnimate];
  112 +}
  113 +
  114 +- (void)showInView:(UIView *)aView animated:(BOOL)animated
  115 +{
  116 + [aView addSubview:self.view];
  117 + if (animated) {
  118 + [self showAnimate];
  119 + }
  120 +}
  121 +
  122 +@end
0 \ No newline at end of file 123 \ No newline at end of file
DUREX Vendor Control/DateRangePickerViewController.xib 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2 +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="5056" systemVersion="12F45" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES">
  3 + <dependencies>
  4 + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3733"/>
  5 + </dependencies>
  6 + <objects>
  7 + <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="DateRangePickerViewController">
  8 + <connections>
  9 + <outlet property="dateRangePickerView" destination="fz9-NP-VLV" id="SCJ-Kj-RVG"/>
  10 + <outlet property="fromDate" destination="P5u-F4-X4a" id="O8W-IK-kwx"/>
  11 + <outlet property="fromToggler" destination="gUl-8z-CPz" id="cxE-U3-SjF"/>
  12 + <outlet property="toDate" destination="mwj-Ys-4vf" id="gNf-g2-mOs"/>
  13 + <outlet property="toToggler" destination="IjI-S6-otK" id="L9P-kq-pcF"/>
  14 + <outlet property="view" destination="kvr-be-fbh" id="KCt-Co-8O9"/>
  15 + </connections>
  16 + </placeholder>
  17 + <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
  18 + <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="kvr-be-fbh">
  19 + <rect key="frame" x="0.0" y="0.0" width="320" height="480"/>
  20 + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
  21 + <subviews>
  22 + <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" ambiguous="YES" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="fz9-NP-VLV">
  23 + <rect key="frame" x="0.0" y="70" width="320" height="340"/>
  24 + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
  25 + <subviews>
  26 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="bPF-XH-a36">
  27 + <rect key="frame" x="0.0" y="0.0" width="320" height="602"/>
  28 + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
  29 + <subviews>
  30 + <switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="gUl-8z-CPz">
  31 + <rect key="frame" x="73" y="20" width="51" height="31"/>
  32 + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
  33 + <connections>
  34 + <action selector="toggleFromDate:" destination="-1" eventType="valueChanged" id="VPw-c1-nAd"/>
  35 + </connections>
  36 + </switch>
  37 + <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="From:" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="xIo-vd-lE7">
  38 + <rect key="frame" x="20" y="25" width="45" height="21"/>
  39 + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
  40 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
  41 + <nil key="highlightedColor"/>
  42 + </label>
  43 + <datePicker hidden="YES" contentMode="scaleToFill" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" datePickerMode="dateAndTime" minuteInterval="1" translatesAutoresizingMaskIntoConstraints="NO" id="P5u-F4-X4a">
  44 + <rect key="frame" x="0.0" y="59" width="320" height="162"/>
  45 + <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
  46 + <date key="date" timeIntervalSinceReferenceDate="432266305.732934">
  47 + <!--2014-09-13 01:58:25 +0000-->
  48 + </date>
  49 + <timeZone key="timeZone" name="America/Los_Angeles">
  50 + <mutableData key="data">
  51 +VFppZgAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAC5AAAABAAAABCepkign7sVkKCGKqChmveQ
  52 +y4kaoNIj9HDSYSYQ1v50INiArZDa/tGg28CQENzes6DdqayQ3r6VoN+JjpDgnneg4WlwkOJ+WaDjSVKQ
  53 +5F47oOUpNJDmR1gg5xJREOgnOiDo8jMQ6gccIOrSFRDr5v4g7LH3EO3G4CDukdkQ76/8oPBxuxDxj96g
  54 +8n/BkPNvwKD0X6OQ9U+ioPY/hZD3L4Sg+CiiEPkPZqD6CIQQ+viDIPvoZhD82GUg/chIEP64RyD/qCoQ
  55 +AJgpIAGIDBACeAsgA3EokARhJ6AFUQqQBkEJoAcw7JAHjUOgCRDOkAmtvyAK8LCQC+CvoAzZzRANwJGg
  56 +DrmvEA+priAQmZEQEYmQIBJ5cxATaXIgFFlVEBVJVCAWOTcQFyk2IBgiU5AZCRggGgI1kBryNKAb4heQ
  57 +HNIWoB3B+ZAesfigH6HbkCB2KyAhgb2QIlYNICNq2hAkNe8gJUq8ECYV0SAnKp4QJ/7toCkKgBAp3s+g
  58 +KupiECu+saAs036QLZ6ToC6zYJAvfnWgMJNCkDFnkiAycySQM0d0IDRTBpA1J1YgNjLokDcHOCA4HAUQ
  59 +OOcaIDn75xA6xvwgO9vJEDywGKA9u6sQPo/6oD+bjRBAb9ygQYSpkEJPvqBDZIuQRC+goEVEbZBF89Mg
  60 +Ry2KEEfTtSBJDWwQSbOXIErtThBLnLOgTNZqkE18laBOtkyQT1x3oFCWLpBRPFmgUnYQkFMcO6BUVfKQ
  61 +VPwdoFY11JBW5TogWB7xEFjFHCBZ/tMQWqT+IFvetRBchOAgXb6XEF5kwiBfnnkQYE3eoGGHlZBiLcCg
  62 +Y2d3kGQNoqBlR1mQZe2EoGcnO5BnzWagaQcdkGmtSKBq5v+Qa5ZlIGzQHBBtdkcgbq/+EG9WKSBwj+AQ
  63 +cTYLIHJvwhBzFe0gdE+kEHT/CaB2OMCQdt7roHgYopB4vs2gefiEkHqer6B72GaQfH6RoH24SJB+XnOg
  64 +f5gqkAABAAECAwEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEA
  65 +AQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEA
  66 +AQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEA
  67 +AQABAAEAAQAB//+dkAEA//+PgAAE//+dkAEI//+dkAEMUERUAFBTVABQV1QAUFBUAAAAAAEAAAABA
  68 +</mutableData>
  69 + </timeZone>
  70 + </datePicker>
  71 + <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" misplaced="YES" text="To:" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="J6Y-lM-Rjf">
  72 + <rect key="frame" x="20" y="234" width="23" height="31"/>
  73 + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
  74 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
  75 + <nil key="highlightedColor"/>
  76 + </label>
  77 + <switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="IjI-S6-otK">
  78 + <rect key="frame" x="51" y="229" width="51" height="31"/>
  79 + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
  80 + <connections>
  81 + <action selector="toggleToDate:" destination="-1" eventType="valueChanged" id="JNu-fd-64c"/>
  82 + </connections>
  83 + </switch>
  84 + <datePicker hidden="YES" contentMode="scaleToFill" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" datePickerMode="dateAndTime" minuteInterval="1" translatesAutoresizingMaskIntoConstraints="NO" id="mwj-Ys-4vf">
  85 + <rect key="frame" x="0.0" y="268" width="320" height="162"/>
  86 + <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
  87 + <date key="date" timeIntervalSinceReferenceDate="432266362.26397198">
  88 + <!--2014-09-13 01:59:22 +0000-->
  89 + </date>
  90 + <timeZone key="timeZone" name="America/Los_Angeles">
  91 + <mutableData key="data">
  92 +VFppZgAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAC5AAAABAAAABCepkign7sVkKCGKqChmveQ
  93 +y4kaoNIj9HDSYSYQ1v50INiArZDa/tGg28CQENzes6DdqayQ3r6VoN+JjpDgnneg4WlwkOJ+WaDjSVKQ
  94 +5F47oOUpNJDmR1gg5xJREOgnOiDo8jMQ6gccIOrSFRDr5v4g7LH3EO3G4CDukdkQ76/8oPBxuxDxj96g
  95 +8n/BkPNvwKD0X6OQ9U+ioPY/hZD3L4Sg+CiiEPkPZqD6CIQQ+viDIPvoZhD82GUg/chIEP64RyD/qCoQ
  96 +AJgpIAGIDBACeAsgA3EokARhJ6AFUQqQBkEJoAcw7JAHjUOgCRDOkAmtvyAK8LCQC+CvoAzZzRANwJGg
  97 +DrmvEA+priAQmZEQEYmQIBJ5cxATaXIgFFlVEBVJVCAWOTcQFyk2IBgiU5AZCRggGgI1kBryNKAb4heQ
  98 +HNIWoB3B+ZAesfigH6HbkCB2KyAhgb2QIlYNICNq2hAkNe8gJUq8ECYV0SAnKp4QJ/7toCkKgBAp3s+g
  99 +KupiECu+saAs036QLZ6ToC6zYJAvfnWgMJNCkDFnkiAycySQM0d0IDRTBpA1J1YgNjLokDcHOCA4HAUQ
  100 +OOcaIDn75xA6xvwgO9vJEDywGKA9u6sQPo/6oD+bjRBAb9ygQYSpkEJPvqBDZIuQRC+goEVEbZBF89Mg
  101 +Ry2KEEfTtSBJDWwQSbOXIErtThBLnLOgTNZqkE18laBOtkyQT1x3oFCWLpBRPFmgUnYQkFMcO6BUVfKQ
  102 +VPwdoFY11JBW5TogWB7xEFjFHCBZ/tMQWqT+IFvetRBchOAgXb6XEF5kwiBfnnkQYE3eoGGHlZBiLcCg
  103 +Y2d3kGQNoqBlR1mQZe2EoGcnO5BnzWagaQcdkGmtSKBq5v+Qa5ZlIGzQHBBtdkcgbq/+EG9WKSBwj+AQ
  104 +cTYLIHJvwhBzFe0gdE+kEHT/CaB2OMCQdt7roHgYopB4vs2gefiEkHqer6B72GaQfH6RoH24SJB+XnOg
  105 +f5gqkAABAAECAwEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEA
  106 +AQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEA
  107 +AQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEA
  108 +AQABAAEAAQAB//+dkAEA//+PgAAE//+dkAEI//+dkAEMUERUAFBTVABQV1QAUFBUAAAAAAEAAAABA
  109 +</mutableData>
  110 + </timeZone>
  111 + </datePicker>
  112 + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="aYc-3W-Uqn">
  113 + <rect key="frame" x="137" y="438" width="37" height="30"/>
  114 + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
  115 + <state key="normal" title="Done">
  116 + <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
  117 + </state>
  118 + <connections>
  119 + <action selector="closePopup:" destination="-1" eventType="touchUpInside" id="20s-GW-y67"/>
  120 + </connections>
  121 + </button>
  122 + </subviews>
  123 + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
  124 + <constraints>
  125 + <constraint firstAttribute="centerX" secondItem="P5u-F4-X4a" secondAttribute="centerX" id="3kI-JI-Z1h"/>
  126 + <constraint firstAttribute="height" constant="602" id="9TX-1i-78Z"/>
  127 + <constraint firstItem="IjI-S6-otK" firstAttribute="top" secondItem="P5u-F4-X4a" secondAttribute="bottom" constant="8" id="F2V-Vc-2cb"/>
  128 + <constraint firstItem="gUl-8z-CPz" firstAttribute="leading" secondItem="xIo-vd-lE7" secondAttribute="trailing" constant="8" id="GGW-gp-gX0"/>
  129 + <constraint firstAttribute="width" constant="320" id="HeC-5b-Jcm"/>
  130 + <constraint firstItem="xIo-vd-lE7" firstAttribute="top" secondItem="bPF-XH-a36" secondAttribute="top" constant="25" id="Lre-tN-KLY"/>
  131 + <constraint firstItem="mwj-Ys-4vf" firstAttribute="top" secondItem="J6Y-lM-Rjf" secondAttribute="bottom" constant="13" id="QFK-8l-qS9"/>
  132 + <constraint firstItem="IjI-S6-otK" firstAttribute="leading" secondItem="J6Y-lM-Rjf" secondAttribute="trailing" constant="8" id="SiP-L0-vna"/>
  133 + <constraint firstItem="xIo-vd-lE7" firstAttribute="leading" secondItem="bPF-XH-a36" secondAttribute="leading" constant="20" id="UYd-kA-RVe"/>
  134 + <constraint firstItem="J6Y-lM-Rjf" firstAttribute="top" secondItem="P5u-F4-X4a" secondAttribute="bottom" constant="13" id="W89-jA-XLF"/>
  135 + <constraint firstItem="aYc-3W-Uqn" firstAttribute="leading" secondItem="bPF-XH-a36" secondAttribute="leading" constant="137" id="aYI-pb-BGP"/>
  136 + <constraint firstItem="P5u-F4-X4a" firstAttribute="top" secondItem="gUl-8z-CPz" secondAttribute="bottom" constant="8" id="cA8-yk-fVJ"/>
  137 + <constraint firstItem="J6Y-lM-Rjf" firstAttribute="leading" secondItem="bPF-XH-a36" secondAttribute="leading" constant="20" id="jXK-cV-gUA"/>
  138 + <constraint firstItem="P5u-F4-X4a" firstAttribute="top" secondItem="xIo-vd-lE7" secondAttribute="bottom" constant="13" id="jfl-Gt-5hY"/>
  139 + <constraint firstItem="aYc-3W-Uqn" firstAttribute="top" secondItem="mwj-Ys-4vf" secondAttribute="bottom" constant="8" id="k8t-h6-GS2"/>
  140 + <constraint firstItem="mwj-Ys-4vf" firstAttribute="top" secondItem="IjI-S6-otK" secondAttribute="bottom" constant="8" id="n0B-8A-b9s"/>
  141 + <constraint firstAttribute="centerX" secondItem="mwj-Ys-4vf" secondAttribute="centerX" id="vvq-Wh-sPa"/>
  142 + <constraint firstItem="gUl-8z-CPz" firstAttribute="top" secondItem="bPF-XH-a36" secondAttribute="top" constant="20" id="wxd-X3-cbH"/>
  143 + </constraints>
  144 + </view>
  145 + </subviews>
  146 + <color key="backgroundColor" white="1" alpha="0.94999999999999996" colorSpace="calibratedWhite"/>
  147 + <constraints>
  148 + <constraint firstAttribute="bottom" secondItem="bPF-XH-a36" secondAttribute="bottom" id="0Bb-cL-qKB"/>
  149 + <constraint firstAttribute="trailing" secondItem="bPF-XH-a36" secondAttribute="trailing" id="GAG-Q1-iFr"/>
  150 + <constraint firstItem="bPF-XH-a36" firstAttribute="leading" secondItem="fz9-NP-VLV" secondAttribute="leading" id="I3Y-5Z-L9J"/>
  151 + <constraint firstItem="bPF-XH-a36" firstAttribute="top" secondItem="fz9-NP-VLV" secondAttribute="top" id="lZu-uv-29b"/>
  152 + </constraints>
  153 + </scrollView>
  154 + </subviews>
  155 + <color key="backgroundColor" red="0.023529414089999999" green="0.0039215688589999999" blue="0.0039215688589999999" alpha="0.5" colorSpace="deviceRGB"/>
  156 + <constraints>
  157 + <constraint firstItem="fz9-NP-VLV" firstAttribute="top" secondItem="kvr-be-fbh" secondAttribute="top" constant="70" id="ENJ-tA-Y3H"/>
  158 + <constraint firstAttribute="centerX" secondItem="fz9-NP-VLV" secondAttribute="centerX" id="X8u-75-ogj"/>
  159 + <constraint firstAttribute="bottom" secondItem="fz9-NP-VLV" secondAttribute="bottom" constant="70" id="qh2-6H-Nq5"/>
  160 + </constraints>
  161 + <simulatedStatusBarMetrics key="simulatedStatusBarMetrics"/>
  162 + <simulatedScreenMetrics key="simulatedDestinationMetrics"/>
  163 + </view>
  164 + </objects>
  165 +</document>
DUREX Vendor Control/FirstAppExample/EMDevicePickerViewController.m
@@ -34,6 +34,7 @@ @@ -34,6 +34,7 @@
34 - (void)viewDidLoad 34 - (void)viewDidLoad
35 { 35 {
36 [super viewDidLoad]; 36 [super viewDidLoad];
  37 + [[EMConnectionManager sharedManager] setBackgroundUpdatesEnabled:TRUE];
37 [[EMConnectionListManager sharedManager] addObserver:self forKeyPath:@"devices" options:0 context:NULL]; 38 [[EMConnectionListManager sharedManager] addObserver:self forKeyPath:@"devices" options:0 context:NULL];
38 } 39 }
39 40
@@ -105,7 +106,7 @@ @@ -105,7 +106,7 @@
105 106
106 -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 107 -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
107 { 108 {
108 - //[self performSegueWithIdentifier:@"ConnectionSegue" sender:self]; 109 + [self performSegueWithIdentifier:@"ConnectionSegue" sender:self];
109 if(![[[[tableView cellForRowAtIndexPath:indexPath] textLabel] text] isEqualToString:NSLocalizedString(@"Searching for devices...",nil)]) 110 if(![[[[tableView cellForRowAtIndexPath:indexPath] textLabel] text] isEqualToString:NSLocalizedString(@"Searching for devices...",nil)])
110 { 111 {
111 [self _showConnectingView]; 112 [self _showConnectingView];
DUREX Vendor Control/MenuTableViewController.h
@@ -13,6 +13,7 @@ @@ -13,6 +13,7 @@
13 #import "DatePickerViewController.h" 13 #import "DatePickerViewController.h"
14 #import "PriceChangerViewController.h" 14 #import "PriceChangerViewController.h"
15 #import "NameChangerViewController.h" 15 #import "NameChangerViewController.h"
  16 +#import "DateRangePickerViewController.h"
16 #import "Sensors.h" 17 #import "Sensors.h"
17 #import "SalesLog.h" 18 #import "SalesLog.h"
18 #import "UIView+Toast.h" 19 #import "UIView+Toast.h"
@@ -55,12 +56,18 @@ enum { @@ -55,12 +56,18 @@ enum {
55 REPORT, 56 REPORT,
56 } navigationLevel; 57 } navigationLevel;
57 58
58 -@interface MenuTableViewController : UITableViewController <DatePickerViewControllerDelegate,PriceChangerViewControllerDelegate,NameChangerViewControllerDelegate,NSURLConnectionDataDelegate> 59 +enum {
  60 + SALES_LOG = 0,
  61 + INCIDENT_LOG,
  62 +} logType;
  63 +
  64 +@interface MenuTableViewController : UITableViewController <DatePickerViewControllerDelegate,PriceChangerViewControllerDelegate,NameChangerViewControllerDelegate, DateRangePickerViewControllerDelegate, NSURLConnectionDataDelegate>
59 65
60 @property (strong,nonatomic) Stack *parentLayout; 66 @property (strong,nonatomic) Stack *parentLayout;
61 @property (strong,nonatomic) DatePickerViewController *datePickerViewController; 67 @property (strong,nonatomic) DatePickerViewController *datePickerViewController;
62 @property (strong,nonatomic) PriceChangerViewController *priceChangerViewController; 68 @property (strong,nonatomic) PriceChangerViewController *priceChangerViewController;
63 @property (strong,nonatomic) NameChangerViewController *nameChangerViewController; 69 @property (strong,nonatomic) NameChangerViewController *nameChangerViewController;
  70 +@property (strong,nonatomic) DateRangePickerViewController *dateRangePickerViewController;
64 @property (strong,nonatomic) Sensors *sensorStatus; 71 @property (strong,nonatomic) Sensors *sensorStatus;
65 @property (strong,nonatomic) SalesLog *salesLog; 72 @property (strong,nonatomic) SalesLog *salesLog;
66 @property (strong,nonatomic) Sale *currentSale; 73 @property (strong,nonatomic) Sale *currentSale;
DUREX Vendor Control/MenuTableViewController.m
@@ -42,6 +42,7 @@ @@ -42,6 +42,7 @@
42 @property const NSMutableArray *currentStructure; 42 @property const NSMutableArray *currentStructure;
43 @property const NSMutableArray *currentHeaders; 43 @property const NSMutableArray *currentHeaders;
44 44
  45 +@property uint8_t requestedLog;
45 @end 46 @end
46 47
47 @implementation MenuTableViewController 48 @implementation MenuTableViewController
@@ -108,19 +109,8 @@ @@ -108,19 +109,8 @@
108 return TRUE; 109 return TRUE;
109 } 110 }
110 111
111 -- (Boolean) generateSaleListNavLevel 112 +- (void) generateSaleListNavLevel
112 { 113 {
113 - //Initialize sales log  
114 - [self setSalesLog:[[SalesLog alloc]init]];  
115 -  
116 - //LAUNCH DATE RANGE SELECTOR  
117 - NSString *salesData = [_protocol readSalesLog: nil : nil];  
118 - if(salesData == nil)  
119 - {  
120 - NSLog(@"[MenuTableViewController.m]: Error reading sales log");  
121 - return FALSE;  
122 - }  
123 - [[self salesLog] setResponseValue:salesData];  
124 NSMutableArray *dateArray = [[NSMutableArray alloc] init]; 114 NSMutableArray *dateArray = [[NSMutableArray alloc] init];
125 for(int i = 0; i < [[[self salesLog] sales]count]; i++) 115 for(int i = 0; i < [[[self salesLog] sales]count]; i++)
126 { 116 {
@@ -133,7 +123,6 @@ @@ -133,7 +123,6 @@
133 [self setSaleListElements:[[NSMutableArray alloc] initWithArray:dateArray]]; 123 [self setSaleListElements:[[NSMutableArray alloc] initWithArray:dateArray]];
134 [self setSaleListStructure:[[NSMutableArray alloc] initWithObjects:[NSNumber numberWithInt:[dateArray count]], nil]]; 124 [self setSaleListStructure:[[NSMutableArray alloc] initWithObjects:[NSNumber numberWithInt:[dateArray count]], nil]];
135 [self setSaleListHeaders:nil]; 125 [self setSaleListHeaders:nil];
136 - return TRUE;  
137 } 126 }
138 127
139 - (Boolean) generateSaleNavLevel : (NSInteger) numSale 128 - (Boolean) generateSaleNavLevel : (NSInteger) numSale
@@ -312,7 +301,7 @@ @@ -312,7 +301,7 @@
312 //DUREX protocol 301 //DUREX protocol
313 if(![_protocol establishConnection]) 302 if(![_protocol establishConnection])
314 { 303 {
315 - UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Communication error" message:@"Error while trying to connect to the device" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 304 + UIAlertView* alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Communication error",nil) message:NSLocalizedString(@"Error while trying to connect to the device",nil) delegate:nil cancelButtonTitle:NSLocalizedString(@"OK",nil) otherButtonTitles:nil];
316 [alert show]; 305 [alert show];
317 UIViewController *previous = [[[self navigationController] viewControllers] objectAtIndex:[[[self navigationController] viewControllers] count]-2]; 306 UIViewController *previous = [[[self navigationController] viewControllers] objectAtIndex:[[[self navigationController] viewControllers] count]-2];
318 [[self navigationController] popToViewController:previous animated:YES]; 307 [[self navigationController] popToViewController:previous animated:YES];
@@ -521,7 +510,7 @@ @@ -521,7 +510,7 @@
521 NSLog(@"[MenuTableViewController.m]: Changing to navLevel: MAINTENANCE"); 510 NSLog(@"[MenuTableViewController.m]: Changing to navLevel: MAINTENANCE");
522 if([self generateMaintenanceLevel]) 511 if([self generateMaintenanceLevel])
523 { 512 {
524 - [NSThread sleepForTimeInterval:1]; 513 + [NSThread sleepForTimeInterval:1]; //HACK!
525 [self changeNavLevel:MAINTENANCE:TRUE]; 514 [self changeNavLevel:MAINTENANCE:TRUE];
526 } 515 }
527 else 516 else
@@ -554,16 +543,20 @@ @@ -554,16 +543,20 @@
554 } 543 }
555 else if([cellName isEqualToString:NSLocalizedString(@"Sales log", nil)]) 544 else if([cellName isEqualToString:NSLocalizedString(@"Sales log", nil)])
556 { 545 {
557 - [NSThread sleepForTimeInterval:1];  
558 - NSLog(@"[MenuTableViewController.m]: Changing to navLevel: SALE_LIST");  
559 - if([self generateSaleListNavLevel]) 546 + [self setRequestedLog:SALES_LOG];
  547 + if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
560 { 548 {
561 - [self changeNavLevel:SALE_LIST:TRUE]; 549 + self.dateRangePickerViewController = [[DateRangePickerViewController alloc] initWithNibName:@"DateRangePickerViewController_iPad" bundle:nil];
  550 + self.dateRangePickerViewController.delegate = self;
  551 + [self.dateRangePickerViewController showInView:self.navigationController.view animated:YES];
562 } 552 }
563 else 553 else
564 { 554 {
565 - NSLog(@"[MenuTableViewController.m]: Error while changing to navLevel: SALE_LIST"); 555 + self.dateRangePickerViewController = [[DateRangePickerViewController alloc] initWithNibName:@"DateRangePickerViewController" bundle:nil];
  556 + self.dateRangePickerViewController.delegate = self;
  557 + [self.dateRangePickerViewController showInView:self.navigationController.view animated:YES];
566 } 558 }
  559 +
567 } 560 }
568 else if([cellName isEqualToString:NSLocalizedString(@"Send report", nil)]) 561 else if([cellName isEqualToString:NSLocalizedString(@"Send report", nil)])
569 { 562 {
@@ -712,7 +705,7 @@ @@ -712,7 +705,7 @@
712 } 705 }
713 //PARSE AND REMOVE TAG 706 //PARSE AND REMOVE TAG
714 NSInteger lastPos = [cellText rangeOfString:@"]"].location; 707 NSInteger lastPos = [cellText rangeOfString:@"]"].location;
715 - NSInteger cellTag = [[cellText substringWithRange:NSMakeRange(1,lastPos)] intValue]; 708 + NSInteger cellTag = [[cellText substringWithRange:NSMakeRange(1,lastPos-1)] intValue];
716 [cell setTag:cellTag]; 709 [cell setTag:cellTag];
717 [cellText setString:[cellText substringFromIndex:lastPos+1]]; 710 [cellText setString:[cellText substringFromIndex:lastPos+1]];
718 //SET FINAL TEXT 711 //SET FINAL TEXT
@@ -1086,20 +1079,108 @@ @@ -1086,20 +1079,108 @@
1086 { 1079 {
1087 NSLog(@"[MenuTableViewController.m]: %@", data); 1080 NSLog(@"[MenuTableViewController.m]: %@", data);
1088 //Channel,Code,Price 1081 //Channel,Code,Price
1089 - int channel = [[data objectAtIndex:0] intValue];  
1090 - int code = [[data objectAtIndex:1] intValue];  
1091 - NSArray *price = [[data objectAtIndex:2] componentsSeparatedByString:@","];  
1092 - [_protocol updatePrice:channel :code :[[price objectAtIndex:0] intValue] :[[price objectAtIndex:1] intValue]]; 1082 + NSString *channelString = [data objectAtIndex:0];
  1083 + NSString *codeString = [data objectAtIndex:1];
  1084 + NSString *priceString = [data objectAtIndex:2];
  1085 + if(![[NSRegularExpression regularExpressionWithPattern:[NSString stringWithFormat:@"^\\d+(\\.\\d+)?$"] options:0 error:NULL] numberOfMatchesInString:priceString options:0 range:NSMakeRange(0,[priceString length])])
  1086 + {
  1087 + UIAlertView* alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Error",nil) message:NSLocalizedString(@"Entered price has an invalid format",nil) delegate:nil cancelButtonTitle:NSLocalizedString(@"OK",nil) otherButtonTitles:nil];
  1088 + [alert show];
  1089 + }
  1090 + else if([channelString length] == 0)
  1091 + {
  1092 + UIAlertView* alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Error",nil) message:NSLocalizedString(@"Missing channel",nil) delegate:nil cancelButtonTitle:NSLocalizedString(@"OK",nil) otherButtonTitles:nil];
  1093 + [alert show];
  1094 + }
  1095 + else if([codeString length] == 0)
  1096 + {
  1097 + UIAlertView* alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Error",nil) message:NSLocalizedString(@"Missing product code",nil) delegate:nil cancelButtonTitle:NSLocalizedString(@"OK",nil) otherButtonTitles:nil];
  1098 + [alert show];
  1099 + }
  1100 + else if(![[NSRegularExpression regularExpressionWithPattern:[NSString stringWithFormat:@"\\d+"] options:0 error:NULL] numberOfMatchesInString:channelString options:0 range:NSMakeRange(0,[channelString length])])
  1101 + {
  1102 + UIAlertView* alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Error",nil) message:NSLocalizedString(@"Entered channel has an invalid format",nil) delegate:nil cancelButtonTitle:NSLocalizedString(@"OK",nil) otherButtonTitles:nil];
  1103 + [alert show];
  1104 + }
  1105 + else if(![[NSRegularExpression regularExpressionWithPattern:[NSString stringWithFormat:@"\\d+"] options:0 error:NULL] numberOfMatchesInString:codeString options:0 range:NSMakeRange(0,[codeString length])])
  1106 + {
  1107 + UIAlertView* alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Error",nil) message:NSLocalizedString(@"Entered product code has an invalid format",nil) delegate:nil cancelButtonTitle:NSLocalizedString(@"OK",nil) otherButtonTitles:nil];
  1108 + [alert show];
  1109 + }
  1110 + else
  1111 + {
  1112 + int channel = [channelString intValue];
  1113 + int code = [codeString intValue];
  1114 + NSArray *price = [priceString componentsSeparatedByString:@"."];
  1115 + [_protocol updatePrice:channel :code :[[price objectAtIndex:0] intValue] :[[price objectAtIndex:1] intValue]];
  1116 + }
1093 } 1117 }
1094 1118
1095 - (void)passNameViewController:(PriceChangerViewController *)controller didFinishEnteringItem:(NSArray *)data 1119 - (void)passNameViewController:(PriceChangerViewController *)controller didFinishEnteringItem:(NSArray *)data
1096 { 1120 {
1097 NSLog(@"[MenuTableViewController.m]: %@", data); 1121 NSLog(@"[MenuTableViewController.m]: %@", data);
1098 //Channel,Code,Name 1122 //Channel,Code,Name
1099 - int channel = [[data objectAtIndex:0] intValue];  
1100 - int code = [[data objectAtIndex:1] intValue]; 1123 + NSString *channelString = [data objectAtIndex:0];
  1124 + NSString *codeString = [data objectAtIndex:1];
1101 NSString *name = [data objectAtIndex:2]; 1125 NSString *name = [data objectAtIndex:2];
1102 - [_protocol updateProductName:channel :code :name]; 1126 + if([channelString length] == 0)
  1127 + {
  1128 + UIAlertView* alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Error",nil) message:NSLocalizedString(@"Missing channel",nil) delegate:nil cancelButtonTitle:NSLocalizedString(@"OK",nil) otherButtonTitles:nil];
  1129 + [alert show];
  1130 + }
  1131 + else if([codeString length] == 0)
  1132 + {
  1133 + UIAlertView* alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Error",nil) message:NSLocalizedString(@"Missing product code",nil) delegate:nil cancelButtonTitle:NSLocalizedString(@"OK",nil) otherButtonTitles:nil];
  1134 + [alert show];
  1135 + }
  1136 + else if(![[NSRegularExpression regularExpressionWithPattern:[NSString stringWithFormat:@"\\d+"] options:0 error:NULL] numberOfMatchesInString:channelString options:0 range:NSMakeRange(0,[channelString length])])
  1137 + {
  1138 + UIAlertView* alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Error",nil) message:NSLocalizedString(@"Entered channel has an invalid format",nil) delegate:nil cancelButtonTitle:NSLocalizedString(@"OK",nil) otherButtonTitles:nil];
  1139 + [alert show];
  1140 + }
  1141 + else if(![[NSRegularExpression regularExpressionWithPattern:[NSString stringWithFormat:@"\\d+"] options:0 error:NULL] numberOfMatchesInString:codeString options:0 range:NSMakeRange(0,[codeString length])])
  1142 + {
  1143 + UIAlertView* alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Error",nil) message:NSLocalizedString(@"Entered product code has an invalid format",nil) delegate:nil cancelButtonTitle:NSLocalizedString(@"OK",nil) otherButtonTitles:nil];
  1144 + [alert show];
  1145 + }
  1146 + else
  1147 + {
  1148 + int channel = [channelString intValue];
  1149 + int code = [codeString intValue];
  1150 + [_protocol updateProductName:channel :code :name];
  1151 + }
  1152 +}
  1153 +
  1154 +- (void) passDateRangeViewController:(DateRangePickerViewController*)controller didFinishEnteringItem:(NSDate*) from : (NSDate*) to
  1155 +{
  1156 + [NSThread sleepForTimeInterval:1]; //HACK!
  1157 + if([self requestedLog] == SALES_LOG)
  1158 + {
  1159 + NSLog(@"[MenuTableViewController.m]: Changing to navLevel: SALE_LIST");
  1160 +
  1161 + //Initialize sales log
  1162 + [self setSalesLog:[[SalesLog alloc]init]];
  1163 +
  1164 + NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
  1165 + NSCalendarUnit units = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
  1166 + NSDateComponents *componentsFrom = [calendar components:units fromDate:from];
  1167 + NSDateComponents *componentsTo = [calendar components:units fromDate:to];
  1168 + NSString *salesData = [_protocol readSalesLog: componentsFrom : componentsTo];
  1169 + if(salesData == nil)
  1170 + {
  1171 + NSLog(@"[MenuTableViewController.m]: Error reading sales log");
  1172 + }
  1173 + else
  1174 + {
  1175 + [[self salesLog] setResponseValue:salesData];
  1176 + [self generateSaleListNavLevel];
  1177 + [self changeNavLevel:SALE_LIST:TRUE];
  1178 + }
  1179 + }
  1180 + else if([self requestedLog] == INCIDENT_LOG)
  1181 + {
  1182 +
  1183 + }
1103 } 1184 }
1104 1185
1105 @end 1186 @end
DUREX Vendor Control/PriceChangerViewController.m
@@ -84,8 +84,25 @@ @@ -84,8 +84,25 @@
84 }]; 84 }];
85 } 85 }
86 86
  87 +- (void) formatPrice
  88 +{
  89 + NSMutableString *priceText = [NSMutableString stringWithString:[[self price] text]];
  90 + [priceText replaceOccurrencesOfString:@"," withString:@"." options:NSLiteralSearch range:NSMakeRange(0, [priceText length])];
  91 + NSUInteger commaPos = [priceText rangeOfString:@"."].location;
  92 + if(commaPos == NSNotFound)
  93 + {
  94 + [priceText appendString:@".00"];
  95 + }
  96 + else if(commaPos == [priceText length] - 2)
  97 + {
  98 + [priceText appendString:@"0"];
  99 + }
  100 + [[self price] setText:priceText];
  101 +}
  102 +
87 - (IBAction)closePopup:(id)sender 103 - (IBAction)closePopup:(id)sender
88 { 104 {
  105 + [self formatPrice];
89 NSArray *data = [[NSArray alloc] initWithObjects:[[self channel] text],[[self code] text],[[self price] text], nil]; 106 NSArray *data = [[NSArray alloc] initWithObjects:[[self channel] text],[[self code] text],[[self price] text], nil];
90 [self.delegate passPriceViewController:self didFinishEnteringItem:data]; 107 [self.delegate passPriceViewController:self didFinishEnteringItem:data];
91 [self removeAnimate]; 108 [self removeAnimate];
DUREX Vendor Control/en.lproj/Localizable.strings
@@ -87,4 +87,9 @@ @@ -87,4 +87,9 @@
87 "Success!" = "Success!"; 87 "Success!" = "Success!";
88 "Connection to server failed" = "Connection to server failed"; 88 "Connection to server failed" = "Connection to server failed";
89 "Error" = "Error"; 89 "Error" = "Error";
90 -"Product" = "Product";  
91 \ No newline at end of file 90 \ No newline at end of file
  91 +"Product" = "Product";
  92 +"Entered price has an invalid format" = "Entered price has an invalid format";
  93 +"Entered product code has an invalid format" = "Entered product code has an invalid format";
  94 +"Entered channel has an invalid format" = "Entered channel has an invalid format";
  95 +"Missing channel" = "Missing channel";
  96 +"Missing product code" = "Missing product code";
92 \ No newline at end of file 97 \ No newline at end of file
DUREX Vendor Control/es.lproj/Localizable.strings
@@ -87,4 +87,9 @@ @@ -87,4 +87,9 @@
87 "Success!" = "Éxito!"; 87 "Success!" = "Éxito!";
88 "Connection to server failed" = "Conexión al servidor fallida"; 88 "Connection to server failed" = "Conexión al servidor fallida";
89 "Error" = "Error"; 89 "Error" = "Error";
90 -"Product" = "Producto";  
91 \ No newline at end of file 90 \ No newline at end of file
  91 +"Product" = "Producto";
  92 +"Entered price has an invalid format" = "El precio introducido está en un formato incorrecto";
  93 +"Entered code has an invalid format" = "El código de producto introducido está en un formato incorrecto";
  94 +"Entered channel has an invalid format" = "El canal introducido está en un formato incorrecto";
  95 +"Missing channel" = "Falta el canal";
  96 +"Missing product code" = "Falta el código del producto";
92 \ No newline at end of file 97 \ No newline at end of file
1 BUGS: 1 BUGS:
2 - On date change, response is overwritten by previous query, trimming needed according to numBytes 2 - On date change, response is overwritten by previous query, trimming needed according to numBytes
3 -- Sanitize input on name/price change  
4 -- Handle disconnects properly  
5 -- Month headers on sale list  
6 -- Add robustness in case of invalid length  
7 -- Add landscape layout and inverted layout  
8 3
9 TODO: 4 TODO:
10 5
11 - Reimplement protocol with async pattern 6 - Reimplement protocol with async pattern
  7 +(WIP) - Add date range on Log request
  8 +- Handle disconnects properly
12 - Incident class 9 - Incident class
13 - Incident parser 10 - Incident parser
14 - A3 command 11 - A3 command
15 - Channels and codes to 2 ciphers 12 - Channels and codes to 2 ciphers
  13 +- Add landscape layout and inverted layout
  14 +- Month/Year headers on sale list
16 15
17 - Batch command files, definition, parsing and pushing them to the app 16 - Batch command files, definition, parsing and pushing them to the app
18 - Implement user auth. Server authenticates the app ONCE on install and allows to control ONE machine (key gets validated on server and then stored on app) 17 - Implement user auth. Server authenticates the app ONCE on install and allows to control ONE machine (key gets validated on server and then stored on app)