Commit 73a5aaa681b81bf66f6f739e66489b4a02007bca

Authored by nvtu11790@gmail.com
1 parent 168c4f0402

Fix check null of result from History API, add some function to convert seconds …

…to string, add other share

Showing 7 changed files with 47 additions and 27 deletions Side-by-side Diff

LifeLog/LifeLog/HistoryObject.h
... ... @@ -13,10 +13,10 @@
13 13 @property (nonatomic) int step;
14 14 @property (nonatomic) int missing;
15 15 @property (nonatomic) int target;
  16 +@property (nonatomic) int time;
16 17 @property (nonatomic) float percent;
17 18 @property (nonatomic) float distance;
18 19 @property (nonatomic) float calories;
19   -@property (nonatomic, strong) NSString * time;
20 20 @property (nonatomic, strong) NSDate *date;
21 21 @property (nonatomic, strong) NSMutableArray *dataGraph;
22 22  
LifeLog/LifeLog/HistoryObject.m
... ... @@ -12,7 +12,7 @@
12 12  
13 13 -(id) initWithData : (NSDictionary *) dict {
14 14 if([dict objectForKey:@"steps"] != nil) {
15   - self.step = [dict[@"step"] intValue];
  15 + self.step = [dict[@"steps"] intValue];
16 16 }
17 17 if([dict objectForKey:@"target"] != nil) {
18 18 self.target = [dict[@"target"] intValue];
... ... @@ -36,12 +36,7 @@
36 36 self.calories = [dict[@"kcal"] floatValue];
37 37 }
38 38 if([dict objectForKey:@"time"] != nil) {
39   - if([dict[@"time"] isKindOfClass:[NSString class]]) {
40   - self.time = dict[@"time"];
41   - }
42   - else {
43   - self.time = @"0:0";
44   - }
  39 + self.time = [dict[@"time"] intValue];
45 40 }
46 41 if([dict objectForKey:@"date"] != nil) {
47 42 NSString *dateString = dict[@"date"];
LifeLog/LifeLog/HistoryViewController.m
... ... @@ -106,12 +106,14 @@
106 106  
107 107 -(void) updateView {
108 108 HistoryObject * obj = [_curHisArray objectAtIndex:self.viewCollectionMode.getCurrentIndex];
109   - self.lblStep.text = [NSString stringWithFormat:@"%d", obj.step];
110   - self.lblRemaining.text = [NSString stringWithFormat:@"%d", obj.missing];
111   - self.lblPercent.text = [NSString stringWithFormat:@"%0.2f", obj.percent * 100];
112   - self.lblCalories.text = [NSString stringWithFormat:@"%0.2f", obj.calories];
113   - self.lblDistance.text = [NSString stringWithFormat:@"%0.1f", obj.distance];
114   - self.lblTime.text = obj.time;
  109 + self.lblStep.text = [NSString stringWithFormat:@"%d step", obj.step];
  110 + self.lblCircleStep.text = self.lblStep.text;
  111 + self.lblRemaining.text = [NSString stringWithFormat:@"%d step", obj.missing];
  112 + self.lblCircleRemain.text = [NSString stringWithFormat:@"目標まであと\n%d stepです", obj.missing];
  113 + self.lblPercent.text = [NSString stringWithFormat:@"%0.2f%%", obj.percent];
  114 + self.lblCalories.text = [NSString stringWithFormat:@"%0.2f kcal", obj.calories];
  115 + self.lblDistance.text = [NSString stringWithFormat:@"%0.1f KM", obj.distance];
  116 + self.lblTime.text = [Utilities convertSecondToShortTime:obj.time];
115 117 [self updateGraphView];
116 118 }
117 119  
... ... @@ -262,7 +264,8 @@
262 264 case 3: // share email
263 265 [Utilities shareEmail:content withViewController:weakSelf];
264 266 break;
265   - default:
  267 + default: //share other
  268 + [Utilities shareOther:content withViewController:weakSelf];
266 269 break;
267 270 }
268 271 }
... ... @@ -275,7 +278,7 @@
275 278 cell.lblStep.text = [NSString stringWithFormat:@"%d", obj.step];
276 279 cell.lblPower.text = [NSString stringWithFormat:@"%0.2f", obj.calories];
277 280 cell.lblDistance.text = [NSString stringWithFormat:@"%0.1f", obj.distance];
278   - cell.lblDuration.text = obj.time;
  281 + cell.lblDuration.text = [Utilities convertSecondToShortTime:obj.time];
279 282 return cell;
280 283 }
281 284  
LifeLog/LifeLog/HistoryViewController.xib
1 1 <?xml version="1.0" encoding="UTF-8"?>
2   -<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="12118" systemVersion="16D32" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
  2 +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="12121" systemVersion="16A323" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
3 3 <device id="retina4_7" orientation="portrait">
4 4 <adaptation id="fullscreen"/>
5 5 </device>
6 6 <dependencies>
7   - <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12086"/>
  7 + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/>
8 8 <capability name="Aspect ratio constraints" minToolsVersion="5.1"/>
9 9 <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
10 10 </dependencies>
... ... @@ -154,7 +154,7 @@
154 154 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Kzk-mN-AOf">
155 155 <rect key="frame" x="20" y="30" width="120" height="120"/>
156 156 <subviews>
157   - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="500 step" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oWg-A8-aCr">
  157 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0 step" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oWg-A8-aCr">
158 158 <rect key="frame" x="18" y="35" width="82" height="21"/>
159 159 <constraints>
160 160 <constraint firstAttribute="height" constant="21" id="zOX-0d-IVv"/>
... ... @@ -170,7 +170,7 @@
170 170 <constraint firstAttribute="height" constant="42" id="zRP-Fu-qZ9"/>
171 171 </constraints>
172 172 <string key="text">目標まであと
173   -500 stepです</string>
  173 +0 stepです</string>
174 174 <fontDescription key="fontDescription" type="system" pointSize="11"/>
175 175 <nil key="textColor"/>
176 176 <nil key="highlightedColor"/>
... ... @@ -226,7 +226,7 @@
226 226 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.history.title.percent"/>
227 227 </userDefinedRuntimeAttributes>
228 228 </label>
229   - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="1000 step" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="0pf-fX-QXT">
  229 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0 step" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="0pf-fX-QXT">
230 230 <rect key="frame" x="63" y="38" width="118" height="15"/>
231 231 <constraints>
232 232 <constraint firstAttribute="height" constant="15" id="Z6o-LI-Eu9"/>
233 233  
... ... @@ -235,13 +235,13 @@
235 235 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
236 236 <nil key="highlightedColor"/>
237 237 </label>
238   - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="500 step" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1NH-b3-ST8">
  238 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0 step" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1NH-b3-ST8">
239 239 <rect key="frame" x="63" y="53" width="118" height="15"/>
240 240 <fontDescription key="fontDescription" type="system" pointSize="12"/>
241 241 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
242 242 <nil key="highlightedColor"/>
243 243 </label>
244   - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="50 %" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="8Ru-Jc-Ouv">
  244 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0 %" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="8Ru-Jc-Ouv">
245 245 <rect key="frame" x="63" y="68" width="118" height="15"/>
246 246 <fontDescription key="fontDescription" type="system" pointSize="12"/>
247 247 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
... ... @@ -293,7 +293,7 @@
293 293 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.history.title.calories"/>
294 294 </userDefinedRuntimeAttributes>
295 295 </label>
296   - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="1000 kcal" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="dAE-C8-QLr">
  296 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0 kcal" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="dAE-C8-QLr">
297 297 <rect key="frame" x="0.0" y="17" width="111.5" height="18"/>
298 298 <constraints>
299 299 <constraint firstAttribute="height" constant="18" id="r0d-xi-3u7"/>
... ... @@ -328,7 +328,7 @@
328 328 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.history.title.distance"/>
329 329 </userDefinedRuntimeAttributes>
330 330 </label>
331   - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="4.0 KM" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1tR-JC-pyw">
  331 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0.0 KM" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1tR-JC-pyw">
332 332 <rect key="frame" x="0.0" y="17" width="112" height="18"/>
333 333 <constraints>
334 334 <constraint firstAttribute="height" constant="18" id="sNT-xl-BKH"/>
... ... @@ -363,7 +363,7 @@
363 363 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.history.title.time"/>
364 364 </userDefinedRuntimeAttributes>
365 365 </label>
366   - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="1:00 時間" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="PfZ-7x-LAR">
  366 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="00:00" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="PfZ-7x-LAR">
367 367 <rect key="frame" x="0.0" y="17" width="111.5" height="18"/>
368 368 <constraints>
369 369 <constraint firstAttribute="height" constant="18" id="lno-Dx-ZNm"/>
LifeLog/LifeLog/ServerAPI.m
... ... @@ -428,7 +428,7 @@
428 428 NSArray *arrayKey = [NSArray arrayWithObjects:@"mode_1", @"mode_2", @"mode_3", nil];
429 429 for(NSString * key in arrayKey) {
430 430 NSDictionary *mode = [arrResult objectForKey:key];
431   - if(mode.count > 0) {
  431 + if(![[arrResult objectForKey:key] isKindOfClass:[NSNull class]]) {
432 432 HistoryObject * objectMode = [[HistoryObject alloc] initWithData:mode];
433 433 [arrayHistory addObject:objectMode];
434 434 }
LifeLog/LifeLog/Utilities.h
... ... @@ -21,9 +21,12 @@
21 21 + (void) shareTwitter : (NSString *) content withViewController:(UIViewController *)vc;
22 22 + (void) shareLine : (NSString *) content withViewController:(UIViewController *)vc;
23 23 + (void) shareEmail : (NSString *) content withViewController:(UIViewController *)vc;
  24 ++ (void) shareOther : (NSString *) content withViewController:(UIViewController *)vc;
24 25  
25 26 //convert date time
26 27 + (NSDate *) dateFromString : (NSString *) dateString withFormat: (NSString *) format;
27 28 + (NSString *) stringFromDate : (NSDate *) date withFormat: (NSString *) format locale:(NSString *) locale;
  29 ++ (NSString *) convertSecondToShortTime : (int) seconds;
  30 ++ (NSString *) convertSecondToLongTime : (int) seconds;
28 31 @end
LifeLog/LifeLog/Utilities.m
... ... @@ -146,6 +146,12 @@
146 146 [[UIApplication sharedApplication] openURL: [NSURL URLWithString: urlEmail]];
147 147 }
148 148  
  149 ++ (void) shareOther : (NSString *) content withViewController:(UIViewController *)vc {
  150 + NSArray *items = @[content];
  151 + UIActivityViewController *controller = [[UIActivityViewController alloc]initWithActivityItems:items applicationActivities:nil];
  152 + [vc presentViewController:controller animated:true completion:nil];
  153 +}
  154 +
149 155 #pragma mark convert date time
150 156 + (NSDate *) dateFromString : (NSString *) dateString withFormat: (NSString *) format {
151 157 NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
... ... @@ -165,6 +171,19 @@
165 171 }
166 172 NSString *dateString = [dateFormat stringFromDate:date];
167 173 return dateString;
  174 +}
  175 +
  176 ++ (NSString *) convertSecondToShortTime : (int) seconds {
  177 + int hour = seconds / 3600;
  178 + int minutes = (seconds - hour * 3600) / 60;
  179 + return [NSString stringWithFormat:@"%02d:%02d", hour, minutes];
  180 +}
  181 +
  182 ++ (NSString *) convertSecondToLongTime : (int) seconds {
  183 + int hour = seconds / 3600;
  184 + int minutes = (seconds - hour * 3600) / 60;
  185 + int sec = seconds - hour * 3600 - minutes * 60;
  186 + return [NSString stringWithFormat:@"%02d:%02d:%02d", hour, minutes, sec];
168 187 }
169 188  
170 189 @end