Compare View

switch
from
...
to
 

Changes

Showing 20 changed files Inline Diff

LifeLog/LifeLog.xcodeproj/project.pbxproj
1 // !$*UTF8*$! 1 // !$*UTF8*$!
2 { 2 {
3 archiveVersion = 1; 3 archiveVersion = 1;
4 classes = { 4 classes = {
5 }; 5 };
6 objectVersion = 46; 6 objectVersion = 46;
7 objects = { 7 objects = {
8 8
9 /* Begin PBXBuildFile section */ 9 /* Begin PBXBuildFile section */
10 011799F0F2B47D80472673CE /* Pods_LifeLog.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D9F4ED6F06C8F252B9EAF48 /* Pods_LifeLog.framework */; }; 10 011799F0F2B47D80472673CE /* Pods_LifeLog.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D9F4ED6F06C8F252B9EAF48 /* Pods_LifeLog.framework */; };
11 6E18CED31F2E39DB0029891F /* LoginViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E18CED11F2E39DB0029891F /* LoginViewController.m */; }; 11 6E18CED31F2E39DB0029891F /* LoginViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E18CED11F2E39DB0029891F /* LoginViewController.m */; };
12 6E18CED41F2E39DB0029891F /* LoginViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E18CED21F2E39DB0029891F /* LoginViewController.xib */; }; 12 6E18CED41F2E39DB0029891F /* LoginViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E18CED21F2E39DB0029891F /* LoginViewController.xib */; };
13 6E18CED81F2E3C840029891F /* ServerAPI.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E18CED71F2E3C840029891F /* ServerAPI.m */; }; 13 6E18CED81F2E3C840029891F /* ServerAPI.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E18CED71F2E3C840029891F /* ServerAPI.m */; };
14 6E18CEDC1F2E40F50029891F /* User.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E18CEDB1F2E40F50029891F /* User.m */; }; 14 6E18CEDC1F2E40F50029891F /* User.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E18CEDB1F2E40F50029891F /* User.m */; };
15 6E48AF0D1F2F9D3300C1D184 /* CustomTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E48AF0C1F2F9D3200C1D184 /* CustomTextField.m */; }; 15 6E48AF0D1F2F9D3300C1D184 /* CustomTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E48AF0C1F2F9D3200C1D184 /* CustomTextField.m */; };
16 6E7F93421F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7F933B1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m */; }; 16 6E7F93421F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7F933B1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m */; };
17 6E7F93431F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7F933D1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m */; }; 17 6E7F93431F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7F933D1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m */; };
18 6E7F93441F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7F933F1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m */; }; 18 6E7F93441F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7F933F1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m */; };
19 6E7F93451F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7F93411F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m */; }; 19 6E7F93451F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7F93411F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m */; };
20 6E84E3761F27A701001EB88E /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3751F27A701001EB88E /* main.m */; }; 20 6E84E3761F27A701001EB88E /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3751F27A701001EB88E /* main.m */; };
21 6E84E3791F27A701001EB88E /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3781F27A701001EB88E /* AppDelegate.m */; }; 21 6E84E3791F27A701001EB88E /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3781F27A701001EB88E /* AppDelegate.m */; };
22 6E84E3811F27A701001EB88E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3801F27A701001EB88E /* Assets.xcassets */; }; 22 6E84E3811F27A701001EB88E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3801F27A701001EB88E /* Assets.xcassets */; };
23 6E84E3841F27A701001EB88E /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3821F27A701001EB88E /* LaunchScreen.storyboard */; }; 23 6E84E3841F27A701001EB88E /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3821F27A701001EB88E /* LaunchScreen.storyboard */; };
24 6E84E38F1F27A703001EB88E /* LifeLogTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E38E1F27A703001EB88E /* LifeLogTests.m */; }; 24 6E84E38F1F27A703001EB88E /* LifeLogTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E38E1F27A703001EB88E /* LifeLogTests.m */; };
25 6E84E39A1F27A703001EB88E /* LifeLogUITests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3991F27A703001EB88E /* LifeLogUITests.m */; }; 25 6E84E39A1F27A703001EB88E /* LifeLogUITests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3991F27A703001EB88E /* LifeLogUITests.m */; };
26 6E84E3B01F27A975001EB88E /* HomeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3AE1F27A975001EB88E /* HomeViewController.m */; }; 26 6E84E3B01F27A975001EB88E /* HomeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3AE1F27A975001EB88E /* HomeViewController.m */; };
27 6E84E3B11F27A975001EB88E /* HomeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3AF1F27A975001EB88E /* HomeViewController.xib */; }; 27 6E84E3B11F27A975001EB88E /* HomeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3AF1F27A975001EB88E /* HomeViewController.xib */; };
28 6E84E3B51F27A98B001EB88E /* HistoryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3B31F27A98B001EB88E /* HistoryViewController.m */; }; 28 6E84E3B51F27A98B001EB88E /* HistoryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3B31F27A98B001EB88E /* HistoryViewController.m */; };
29 6E84E3B61F27A98B001EB88E /* HistoryViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3B41F27A98B001EB88E /* HistoryViewController.xib */; }; 29 6E84E3B61F27A98B001EB88E /* HistoryViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3B41F27A98B001EB88E /* HistoryViewController.xib */; };
30 6E84E3BA1F27A9A0001EB88E /* RankingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3B81F27A9A0001EB88E /* RankingViewController.m */; }; 30 6E84E3BA1F27A9A0001EB88E /* RankingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3B81F27A9A0001EB88E /* RankingViewController.m */; };
31 6E84E3BB1F27A9A0001EB88E /* RankingViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3B91F27A9A0001EB88E /* RankingViewController.xib */; }; 31 6E84E3BB1F27A9A0001EB88E /* RankingViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3B91F27A9A0001EB88E /* RankingViewController.xib */; };
32 6E84E3BF1F27A9B1001EB88E /* SNSViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3BD1F27A9B1001EB88E /* SNSViewController.m */; }; 32 6E84E3BF1F27A9B1001EB88E /* SNSViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3BD1F27A9B1001EB88E /* SNSViewController.m */; };
33 6E84E3C01F27A9B1001EB88E /* SNSViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3BE1F27A9B1001EB88E /* SNSViewController.xib */; }; 33 6E84E3C01F27A9B1001EB88E /* SNSViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3BE1F27A9B1001EB88E /* SNSViewController.xib */; };
34 6E84E3C51F27ACAE001EB88E /* MapViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3C31F27ACAE001EB88E /* MapViewController.m */; }; 34 6E84E3C51F27ACAE001EB88E /* MapViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3C31F27ACAE001EB88E /* MapViewController.m */; };
35 6E84E3C61F27ACAE001EB88E /* MapViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3C41F27ACAE001EB88E /* MapViewController.xib */; }; 35 6E84E3C61F27ACAE001EB88E /* MapViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3C41F27ACAE001EB88E /* MapViewController.xib */; };
36 6E8DA0F71F2BAC3400CCE941 /* TodayViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E8DA0F51F2BAC3400CCE941 /* TodayViewController.m */; }; 36 6E8DA0F71F2BAC3400CCE941 /* TodayViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E8DA0F51F2BAC3400CCE941 /* TodayViewController.m */; };
37 6E8DA0F81F2BAC3500CCE941 /* TodayViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E8DA0F61F2BAC3400CCE941 /* TodayViewController.xib */; }; 37 6E8DA0F81F2BAC3500CCE941 /* TodayViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E8DA0F61F2BAC3400CCE941 /* TodayViewController.xib */; };
38 6EA4AF311F40BB7A00F52CFE /* StepObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EA4AF2C1F40BB7A00F52CFE /* StepObject.m */; }; 38 6EA4AF311F40BB7A00F52CFE /* StepObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EA4AF2C1F40BB7A00F52CFE /* StepObject.m */; };
39 6EA4AF321F40BB7A00F52CFE /* TargetInfor.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EA4AF2E1F40BB7A00F52CFE /* TargetInfor.m */; }; 39 6EA4AF321F40BB7A00F52CFE /* TargetInfor.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EA4AF2E1F40BB7A00F52CFE /* TargetInfor.m */; };
40 6EA4AF331F40BB7A00F52CFE /* TopObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EA4AF301F40BB7A00F52CFE /* TopObject.m */; }; 40 6EA4AF331F40BB7A00F52CFE /* TopObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EA4AF301F40BB7A00F52CFE /* TopObject.m */; };
41 6ECC40711F2A5FEB00AAEB97 /* NSDate+helper.m in Sources */ = {isa = PBXBuildFile; fileRef = 6ECC40701F2A5FEB00AAEB97 /* NSDate+helper.m */; }; 41 6ECC40711F2A5FEB00AAEB97 /* NSDate+helper.m in Sources */ = {isa = PBXBuildFile; fileRef = 6ECC40701F2A5FEB00AAEB97 /* NSDate+helper.m */; };
42 6EDC8BEE1F2C2FB800765ACC /* Utilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EDC8BED1F2C2FB800765ACC /* Utilities.m */; }; 42 6EDC8BEE1F2C2FB800765ACC /* Utilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EDC8BED1F2C2FB800765ACC /* Utilities.m */; };
43 6EDC8BF41F2C68D700765ACC /* CMMotionActivityExtra.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EDC8BF31F2C68D700765ACC /* CMMotionActivityExtra.m */; }; 43 6EDC8BF41F2C68D700765ACC /* CMMotionActivityExtra.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EDC8BF31F2C68D700765ACC /* CMMotionActivityExtra.m */; };
44 6EF1630A1F29069300DA306C /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6EF163091F29069300DA306C /* Localizable.strings */; }; 44 6EF1630A1F29069300DA306C /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6EF163091F29069300DA306C /* Localizable.strings */; };
45 9CA8AEEA1F31BB4600C5FC74 /* ConfirmForgetPassViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CA8AEE81F31BB4600C5FC74 /* ConfirmForgetPassViewController.m */; }; 45 9CA8AEEA1F31BB4600C5FC74 /* ConfirmForgetPassViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CA8AEE81F31BB4600C5FC74 /* ConfirmForgetPassViewController.m */; };
46 9CA8AEEB1F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9CA8AEE91F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib */; }; 46 9CA8AEEB1F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9CA8AEE91F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib */; };
47 9CBDA0FA1F2ECE2C0055DED1 /* BaseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CBDA0F91F2ECE2C0055DED1 /* BaseViewController.m */; }; 47 9CBDA0FA1F2ECE2C0055DED1 /* BaseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CBDA0F91F2ECE2C0055DED1 /* BaseViewController.m */; };
48 9CBDA0FF1F2F03810055DED1 /* RegisterViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CBDA0FD1F2F03810055DED1 /* RegisterViewController.m */; }; 48 9CBDA0FF1F2F03810055DED1 /* RegisterViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CBDA0FD1F2F03810055DED1 /* RegisterViewController.m */; };
49 9CBDA1001F2F03810055DED1 /* RegisterViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9CBDA0FE1F2F03810055DED1 /* RegisterViewController.xib */; }; 49 9CBDA1001F2F03810055DED1 /* RegisterViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9CBDA0FE1F2F03810055DED1 /* RegisterViewController.xib */; };
50 E933E66B1F3E04A6002926F5 /* SearchGroupViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E933E6691F3E04A6002926F5 /* SearchGroupViewController.m */; }; 50 E933E66B1F3E04A6002926F5 /* SearchGroupViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E933E6691F3E04A6002926F5 /* SearchGroupViewController.m */; };
51 E933E66C1F3E04A6002926F5 /* SearchGroupViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = E933E66A1F3E04A6002926F5 /* SearchGroupViewController.xib */; }; 51 E933E66C1F3E04A6002926F5 /* SearchGroupViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = E933E66A1F3E04A6002926F5 /* SearchGroupViewController.xib */; };
52 E933E6701F3E09B6002926F5 /* SearchGroupTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E933E66E1F3E09B6002926F5 /* SearchGroupTableViewCell.m */; }; 52 E933E6701F3E09B6002926F5 /* SearchGroupTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E933E66E1F3E09B6002926F5 /* SearchGroupTableViewCell.m */; };
53 E933E6711F3E09B6002926F5 /* SearchGroupTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E933E66F1F3E09B6002926F5 /* SearchGroupTableViewCell.xib */; }; 53 E933E6711F3E09B6002926F5 /* SearchGroupTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E933E66F1F3E09B6002926F5 /* SearchGroupTableViewCell.xib */; };
54 E933E6741F3E0E4E002926F5 /* GroupObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E933E6731F3E0E4E002926F5 /* GroupObject.m */; }; 54 E933E6741F3E0E4E002926F5 /* GroupObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E933E6731F3E0E4E002926F5 /* GroupObject.m */; };
55 E933E6791F40513C002926F5 /* GroupDetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E933E6771F40513C002926F5 /* GroupDetailViewController.m */; }; 55 E933E6791F40513C002926F5 /* GroupDetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E933E6771F40513C002926F5 /* GroupDetailViewController.m */; };
56 E933E67A1F40513C002926F5 /* GroupDetailViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = E933E6781F40513C002926F5 /* GroupDetailViewController.xib */; }; 56 E933E67A1F40513C002926F5 /* GroupDetailViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = E933E6781F40513C002926F5 /* GroupDetailViewController.xib */; };
57 E9373E471F3596940059355A /* AutoTransLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = E9373E461F3596940059355A /* AutoTransLabel.m */; }; 57 E9373E471F3596940059355A /* AutoTransLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = E9373E461F3596940059355A /* AutoTransLabel.m */; };
58 E9373E4A1F35AA180059355A /* HistoryObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E9373E491F35AA180059355A /* HistoryObject.m */; }; 58 E9373E4A1F35AA180059355A /* HistoryObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E9373E491F35AA180059355A /* HistoryObject.m */; };
59 E9373E4D1F361A230059355A /* HistoryGraphObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E9373E4C1F361A230059355A /* HistoryGraphObject.m */; }; 59 E9373E4D1F361A230059355A /* HistoryGraphObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E9373E4C1F361A230059355A /* HistoryGraphObject.m */; };
60 E9497FD51F46EC1100E6AF8D /* MemberObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E9497FD41F46EC1100E6AF8D /* MemberObject.m */; }; 60 E9497FD51F46EC1100E6AF8D /* MemberObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E9497FD41F46EC1100E6AF8D /* MemberObject.m */; };
61 E95F4CED1F475C6A00D27E80 /* CreateGroupViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E95F4CEB1F475C6A00D27E80 /* CreateGroupViewController.m */; };
62 E95F4CEE1F475C6A00D27E80 /* CreateGroupViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = E95F4CEC1F475C6A00D27E80 /* CreateGroupViewController.xib */; };
63 E95F4CF31F48B39200D27E80 /* MyGroupViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E95F4CF11F48B39200D27E80 /* MyGroupViewController.m */; };
64 E95F4CF41F48B39200D27E80 /* MyGroupViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = E95F4CF21F48B39200D27E80 /* MyGroupViewController.xib */; };
61 E95F4CED1F475C6A00D27E80 /* CreateGroupViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E95F4CEB1F475C6A00D27E80 /* CreateGroupViewController.m */; }; 65 E9682E2E1F39675A00FE05A2 /* RankingTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E9682E2C1F39675A00FE05A2 /* RankingTableViewCell.m */; };
62 E95F4CEE1F475C6A00D27E80 /* CreateGroupViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = E95F4CEC1F475C6A00D27E80 /* CreateGroupViewController.xib */; }; 66 E9682E2F1F39675A00FE05A2 /* RankingTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E9682E2D1F39675A00FE05A2 /* RankingTableViewCell.xib */; };
63 E9682E2E1F39675A00FE05A2 /* RankingTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E9682E2C1F39675A00FE05A2 /* RankingTableViewCell.m */; }; 67 E968550A1F3C444900317CEF /* AutoTransButton.m in Sources */ = {isa = PBXBuildFile; fileRef = E96855091F3C444900317CEF /* AutoTransButton.m */; };
64 E9682E2F1F39675A00FE05A2 /* RankingTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E9682E2D1F39675A00FE05A2 /* RankingTableViewCell.xib */; }; 68 E96855111F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E968550F1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m */; };
65 E968550A1F3C444900317CEF /* AutoTransButton.m in Sources */ = {isa = PBXBuildFile; fileRef = E96855091F3C444900317CEF /* AutoTransButton.m */; }; 69 E96855121F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E96855101F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib */; };
66 E96855111F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E968550F1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m */; }; 70 E997E0261F3AB66500709FB1 /* Social.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E997E0251F3AB66500709FB1 /* Social.framework */; };
67 E96855121F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E96855101F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib */; }; 71 E99E13AB1F336F3600C78787 /* CollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = E99E13AA1F336F3600C78787 /* CollectionView.m */; };
68 E997E0261F3AB66500709FB1 /* Social.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E997E0251F3AB66500709FB1 /* Social.framework */; }; 72 E99E13AD1F336F4500C78787 /* CollectionView.xib in Resources */ = {isa = PBXBuildFile; fileRef = E99E13AC1F336F4500C78787 /* CollectionView.xib */; };
69 E99E13AB1F336F3600C78787 /* CollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = E99E13AA1F336F3600C78787 /* CollectionView.m */; }; 73 E99E13B11F33720600C78787 /* LabelCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E99E13AF1F33720600C78787 /* LabelCollectionViewCell.m */; };
70 E99E13AD1F336F4500C78787 /* CollectionView.xib in Resources */ = {isa = PBXBuildFile; fileRef = E99E13AC1F336F4500C78787 /* CollectionView.xib */; }; 74 E99E13B21F33720600C78787 /* LabelCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E99E13B01F33720600C78787 /* LabelCollectionViewCell.xib */; };
71 E99E13B11F33720600C78787 /* LabelCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E99E13AF1F33720600C78787 /* LabelCollectionViewCell.m */; }; 75 E9D909211F3D559D004CF99F /* TweetObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E9D909201F3D559D004CF99F /* TweetObject.m */; };
72 E99E13B21F33720600C78787 /* LabelCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E99E13B01F33720600C78787 /* LabelCollectionViewCell.xib */; }; 76 E9D909241F3D6E8C004CF99F /* BaseTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E9D909231F3D6E8C004CF99F /* BaseTableViewController.m */; };
73 E9D909211F3D559D004CF99F /* TweetObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E9D909201F3D559D004CF99F /* TweetObject.m */; }; 77 E9F73DCC1F338A0F004A3A6F /* HistoryListTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E9F73DCA1F338A0F004A3A6F /* HistoryListTableViewCell.m */; };
74 E9D909241F3D6E8C004CF99F /* BaseTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E9D909231F3D6E8C004CF99F /* BaseTableViewController.m */; }; 78 E9F73DCD1F338A0F004A3A6F /* HistoryListTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E9F73DCB1F338A0F004A3A6F /* HistoryListTableViewCell.xib */; };
75 E9F73DCC1F338A0F004A3A6F /* HistoryListTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E9F73DCA1F338A0F004A3A6F /* HistoryListTableViewCell.m */; }; 79 /* End PBXBuildFile section */
76 E9F73DCD1F338A0F004A3A6F /* HistoryListTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E9F73DCB1F338A0F004A3A6F /* HistoryListTableViewCell.xib */; }; 80
77 /* End PBXBuildFile section */ 81 /* Begin PBXContainerItemProxy section */
78 82 6E84E38B1F27A703001EB88E /* PBXContainerItemProxy */ = {
79 /* Begin PBXContainerItemProxy section */ 83 isa = PBXContainerItemProxy;
80 6E84E38B1F27A703001EB88E /* PBXContainerItemProxy */ = { 84 containerPortal = 6E84E3691F27A700001EB88E /* Project object */;
81 isa = PBXContainerItemProxy; 85 proxyType = 1;
82 containerPortal = 6E84E3691F27A700001EB88E /* Project object */; 86 remoteGlobalIDString = 6E84E3701F27A700001EB88E;
83 proxyType = 1; 87 remoteInfo = LifeLog;
84 remoteGlobalIDString = 6E84E3701F27A700001EB88E; 88 };
85 remoteInfo = LifeLog; 89 6E84E3961F27A703001EB88E /* PBXContainerItemProxy */ = {
86 }; 90 isa = PBXContainerItemProxy;
87 6E84E3961F27A703001EB88E /* PBXContainerItemProxy */ = { 91 containerPortal = 6E84E3691F27A700001EB88E /* Project object */;
88 isa = PBXContainerItemProxy; 92 proxyType = 1;
89 containerPortal = 6E84E3691F27A700001EB88E /* Project object */; 93 remoteGlobalIDString = 6E84E3701F27A700001EB88E;
90 proxyType = 1; 94 remoteInfo = LifeLog;
91 remoteGlobalIDString = 6E84E3701F27A700001EB88E; 95 };
92 remoteInfo = LifeLog; 96 /* End PBXContainerItemProxy section */
93 }; 97
94 /* End PBXContainerItemProxy section */ 98 /* Begin PBXFileReference section */
95 99 0FC2D57087AF4571C57FAE08 /* Pods-LifeLog.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LifeLog.debug.xcconfig"; path = "Pods/Target Support Files/Pods-LifeLog/Pods-LifeLog.debug.xcconfig"; sourceTree = "<group>"; };
96 /* Begin PBXFileReference section */ 100 2D9F4ED6F06C8F252B9EAF48 /* Pods_LifeLog.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_LifeLog.framework; sourceTree = BUILT_PRODUCTS_DIR; };
97 0FC2D57087AF4571C57FAE08 /* Pods-LifeLog.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LifeLog.debug.xcconfig"; path = "Pods/Target Support Files/Pods-LifeLog/Pods-LifeLog.debug.xcconfig"; sourceTree = "<group>"; }; 101 4CFDA5714AF852358A1EB515 /* Pods-LifeLog.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LifeLog.release.xcconfig"; path = "Pods/Target Support Files/Pods-LifeLog/Pods-LifeLog.release.xcconfig"; sourceTree = "<group>"; };
98 2D9F4ED6F06C8F252B9EAF48 /* Pods_LifeLog.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_LifeLog.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 102 6E18CED01F2E39DB0029891F /* LoginViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoginViewController.h; sourceTree = "<group>"; };
99 4CFDA5714AF852358A1EB515 /* Pods-LifeLog.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LifeLog.release.xcconfig"; path = "Pods/Target Support Files/Pods-LifeLog/Pods-LifeLog.release.xcconfig"; sourceTree = "<group>"; }; 103 6E18CED11F2E39DB0029891F /* LoginViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LoginViewController.m; sourceTree = "<group>"; };
100 6E18CED01F2E39DB0029891F /* LoginViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoginViewController.h; sourceTree = "<group>"; }; 104 6E18CED21F2E39DB0029891F /* LoginViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LoginViewController.xib; sourceTree = "<group>"; };
101 6E18CED11F2E39DB0029891F /* LoginViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LoginViewController.m; sourceTree = "<group>"; }; 105 6E18CED61F2E3C840029891F /* ServerAPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ServerAPI.h; sourceTree = "<group>"; };
102 6E18CED21F2E39DB0029891F /* LoginViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LoginViewController.xib; sourceTree = "<group>"; }; 106 6E18CED71F2E3C840029891F /* ServerAPI.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ServerAPI.m; sourceTree = "<group>"; };
103 6E18CED61F2E3C840029891F /* ServerAPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ServerAPI.h; sourceTree = "<group>"; }; 107 6E18CEDA1F2E40F50029891F /* User.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = User.h; sourceTree = "<group>"; };
104 6E18CED71F2E3C840029891F /* ServerAPI.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ServerAPI.m; sourceTree = "<group>"; }; 108 6E18CEDB1F2E40F50029891F /* User.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = User.m; sourceTree = "<group>"; };
105 6E18CEDA1F2E40F50029891F /* User.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = User.h; sourceTree = "<group>"; }; 109 6E18CEDD1F2E46570029891F /* Entities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Entities.h; sourceTree = "<group>"; };
106 6E18CEDB1F2E40F50029891F /* User.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = User.m; sourceTree = "<group>"; }; 110 6E48AF0B1F2F9D3200C1D184 /* CustomTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomTextField.h; sourceTree = "<group>"; };
107 6E18CEDD1F2E46570029891F /* Entities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Entities.h; sourceTree = "<group>"; }; 111 6E48AF0C1F2F9D3200C1D184 /* CustomTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CustomTextField.m; sourceTree = "<group>"; };
108 6E48AF0B1F2F9D3200C1D184 /* CustomTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomTextField.h; sourceTree = "<group>"; }; 112 6E7F933A1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TPKeyboardAvoidingCollectionView.h; sourceTree = "<group>"; };
109 6E48AF0C1F2F9D3200C1D184 /* CustomTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CustomTextField.m; sourceTree = "<group>"; }; 113 6E7F933B1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TPKeyboardAvoidingCollectionView.m; sourceTree = "<group>"; };
110 6E7F933A1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TPKeyboardAvoidingCollectionView.h; sourceTree = "<group>"; }; 114 6E7F933C1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TPKeyboardAvoidingScrollView.h; sourceTree = "<group>"; };
111 6E7F933B1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TPKeyboardAvoidingCollectionView.m; sourceTree = "<group>"; }; 115 6E7F933D1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TPKeyboardAvoidingScrollView.m; sourceTree = "<group>"; };
112 6E7F933C1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TPKeyboardAvoidingScrollView.h; sourceTree = "<group>"; }; 116 6E7F933E1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TPKeyboardAvoidingTableView.h; sourceTree = "<group>"; };
113 6E7F933D1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TPKeyboardAvoidingScrollView.m; sourceTree = "<group>"; }; 117 6E7F933F1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TPKeyboardAvoidingTableView.m; sourceTree = "<group>"; };
114 6E7F933E1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TPKeyboardAvoidingTableView.h; sourceTree = "<group>"; }; 118 6E7F93401F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIScrollView+TPKeyboardAvoidingAdditions.h"; sourceTree = "<group>"; };
115 6E7F933F1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TPKeyboardAvoidingTableView.m; sourceTree = "<group>"; }; 119 6E7F93411F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIScrollView+TPKeyboardAvoidingAdditions.m"; sourceTree = "<group>"; };
116 6E7F93401F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIScrollView+TPKeyboardAvoidingAdditions.h"; sourceTree = "<group>"; }; 120 6E84E3711F27A700001EB88E /* LifeLog.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LifeLog.app; sourceTree = BUILT_PRODUCTS_DIR; };
117 6E7F93411F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIScrollView+TPKeyboardAvoidingAdditions.m"; sourceTree = "<group>"; }; 121 6E84E3751F27A701001EB88E /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
118 6E84E3711F27A700001EB88E /* LifeLog.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LifeLog.app; sourceTree = BUILT_PRODUCTS_DIR; }; 122 6E84E3771F27A701001EB88E /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
119 6E84E3751F27A701001EB88E /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; }; 123 6E84E3781F27A701001EB88E /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
120 6E84E3771F27A701001EB88E /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; }; 124 6E84E3801F27A701001EB88E /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
121 6E84E3781F27A701001EB88E /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; }; 125 6E84E3831F27A701001EB88E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
122 6E84E3801F27A701001EB88E /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; 126 6E84E3851F27A701001EB88E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
123 6E84E3831F27A701001EB88E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; 127 6E84E38A1F27A703001EB88E /* LifeLogTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LifeLogTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
124 6E84E3851F27A701001EB88E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 128 6E84E38E1F27A703001EB88E /* LifeLogTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LifeLogTests.m; sourceTree = "<group>"; };
125 6E84E38A1F27A703001EB88E /* LifeLogTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LifeLogTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 129 6E84E3901F27A703001EB88E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
126 6E84E38E1F27A703001EB88E /* LifeLogTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LifeLogTests.m; sourceTree = "<group>"; }; 130 6E84E3951F27A703001EB88E /* LifeLogUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LifeLogUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
127 6E84E3901F27A703001EB88E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 131 6E84E3991F27A703001EB88E /* LifeLogUITests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LifeLogUITests.m; sourceTree = "<group>"; };
128 6E84E3951F27A703001EB88E /* LifeLogUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LifeLogUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 132 6E84E39B1F27A703001EB88E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
129 6E84E3991F27A703001EB88E /* LifeLogUITests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LifeLogUITests.m; sourceTree = "<group>"; }; 133 6E84E3AD1F27A975001EB88E /* HomeViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HomeViewController.h; sourceTree = "<group>"; };
130 6E84E39B1F27A703001EB88E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 134 6E84E3AE1F27A975001EB88E /* HomeViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HomeViewController.m; sourceTree = "<group>"; };
131 6E84E3AD1F27A975001EB88E /* HomeViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HomeViewController.h; sourceTree = "<group>"; }; 135 6E84E3AF1F27A975001EB88E /* HomeViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HomeViewController.xib; sourceTree = "<group>"; };
132 6E84E3AE1F27A975001EB88E /* HomeViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HomeViewController.m; sourceTree = "<group>"; }; 136 6E84E3B21F27A98B001EB88E /* HistoryViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryViewController.h; sourceTree = "<group>"; };
133 6E84E3AF1F27A975001EB88E /* HomeViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HomeViewController.xib; sourceTree = "<group>"; }; 137 6E84E3B31F27A98B001EB88E /* HistoryViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryViewController.m; sourceTree = "<group>"; };
134 6E84E3B21F27A98B001EB88E /* HistoryViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryViewController.h; sourceTree = "<group>"; }; 138 6E84E3B41F27A98B001EB88E /* HistoryViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HistoryViewController.xib; sourceTree = "<group>"; };
135 6E84E3B31F27A98B001EB88E /* HistoryViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryViewController.m; sourceTree = "<group>"; }; 139 6E84E3B71F27A9A0001EB88E /* RankingViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RankingViewController.h; sourceTree = "<group>"; };
136 6E84E3B41F27A98B001EB88E /* HistoryViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HistoryViewController.xib; sourceTree = "<group>"; }; 140 6E84E3B81F27A9A0001EB88E /* RankingViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RankingViewController.m; sourceTree = "<group>"; };
137 6E84E3B71F27A9A0001EB88E /* RankingViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RankingViewController.h; sourceTree = "<group>"; }; 141 6E84E3B91F27A9A0001EB88E /* RankingViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RankingViewController.xib; sourceTree = "<group>"; };
138 6E84E3B81F27A9A0001EB88E /* RankingViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RankingViewController.m; sourceTree = "<group>"; }; 142 6E84E3BC1F27A9B1001EB88E /* SNSViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SNSViewController.h; sourceTree = "<group>"; };
139 6E84E3B91F27A9A0001EB88E /* RankingViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RankingViewController.xib; sourceTree = "<group>"; }; 143 6E84E3BD1F27A9B1001EB88E /* SNSViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SNSViewController.m; sourceTree = "<group>"; };
140 6E84E3BC1F27A9B1001EB88E /* SNSViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SNSViewController.h; sourceTree = "<group>"; }; 144 6E84E3BE1F27A9B1001EB88E /* SNSViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SNSViewController.xib; sourceTree = "<group>"; };
141 6E84E3BD1F27A9B1001EB88E /* SNSViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SNSViewController.m; sourceTree = "<group>"; }; 145 6E84E3C21F27ACAE001EB88E /* MapViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MapViewController.h; sourceTree = "<group>"; };
142 6E84E3BE1F27A9B1001EB88E /* SNSViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SNSViewController.xib; sourceTree = "<group>"; }; 146 6E84E3C31F27ACAE001EB88E /* MapViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MapViewController.m; sourceTree = "<group>"; };
143 6E84E3C21F27ACAE001EB88E /* MapViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MapViewController.h; sourceTree = "<group>"; }; 147 6E84E3C41F27ACAE001EB88E /* MapViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapViewController.xib; sourceTree = "<group>"; };
144 6E84E3C31F27ACAE001EB88E /* MapViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MapViewController.m; sourceTree = "<group>"; }; 148 6E8DA0F41F2BAC3400CCE941 /* TodayViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TodayViewController.h; sourceTree = "<group>"; };
145 6E84E3C41F27ACAE001EB88E /* MapViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapViewController.xib; sourceTree = "<group>"; }; 149 6E8DA0F51F2BAC3400CCE941 /* TodayViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TodayViewController.m; sourceTree = "<group>"; };
146 6E8DA0F41F2BAC3400CCE941 /* TodayViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TodayViewController.h; sourceTree = "<group>"; }; 150 6E8DA0F61F2BAC3400CCE941 /* TodayViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TodayViewController.xib; sourceTree = "<group>"; };
147 6E8DA0F51F2BAC3400CCE941 /* TodayViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TodayViewController.m; sourceTree = "<group>"; }; 151 6EA4AF2B1F40BB7A00F52CFE /* StepObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StepObject.h; sourceTree = "<group>"; };
148 6E8DA0F61F2BAC3400CCE941 /* TodayViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TodayViewController.xib; sourceTree = "<group>"; }; 152 6EA4AF2C1F40BB7A00F52CFE /* StepObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StepObject.m; sourceTree = "<group>"; };
149 6EA4AF2B1F40BB7A00F52CFE /* StepObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StepObject.h; sourceTree = "<group>"; }; 153 6EA4AF2D1F40BB7A00F52CFE /* TargetInfor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TargetInfor.h; sourceTree = "<group>"; };
150 6EA4AF2C1F40BB7A00F52CFE /* StepObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StepObject.m; sourceTree = "<group>"; }; 154 6EA4AF2E1F40BB7A00F52CFE /* TargetInfor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TargetInfor.m; sourceTree = "<group>"; };
151 6EA4AF2D1F40BB7A00F52CFE /* TargetInfor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TargetInfor.h; sourceTree = "<group>"; }; 155 6EA4AF2F1F40BB7A00F52CFE /* TopObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TopObject.h; sourceTree = "<group>"; };
152 6EA4AF2E1F40BB7A00F52CFE /* TargetInfor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TargetInfor.m; sourceTree = "<group>"; }; 156 6EA4AF301F40BB7A00F52CFE /* TopObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TopObject.m; sourceTree = "<group>"; };
153 6EA4AF2F1F40BB7A00F52CFE /* TopObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TopObject.h; sourceTree = "<group>"; }; 157 6ECC406F1F2A5FEB00AAEB97 /* NSDate+helper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDate+helper.h"; sourceTree = "<group>"; };
154 6EA4AF301F40BB7A00F52CFE /* TopObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TopObject.m; sourceTree = "<group>"; }; 158 6ECC40701F2A5FEB00AAEB97 /* NSDate+helper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDate+helper.m"; sourceTree = "<group>"; };
155 6ECC406F1F2A5FEB00AAEB97 /* NSDate+helper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDate+helper.h"; sourceTree = "<group>"; }; 159 6EDC8BEC1F2C2FB800765ACC /* Utilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Utilities.h; sourceTree = "<group>"; };
156 6ECC40701F2A5FEB00AAEB97 /* NSDate+helper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDate+helper.m"; sourceTree = "<group>"; }; 160 6EDC8BED1F2C2FB800765ACC /* Utilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Utilities.m; sourceTree = "<group>"; };
157 6EDC8BEC1F2C2FB800765ACC /* Utilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Utilities.h; sourceTree = "<group>"; }; 161 6EDC8BF21F2C68D700765ACC /* CMMotionActivityExtra.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CMMotionActivityExtra.h; sourceTree = "<group>"; };
158 6EDC8BED1F2C2FB800765ACC /* Utilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Utilities.m; sourceTree = "<group>"; }; 162 6EDC8BF31F2C68D700765ACC /* CMMotionActivityExtra.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CMMotionActivityExtra.m; sourceTree = "<group>"; };
159 6EDC8BF21F2C68D700765ACC /* CMMotionActivityExtra.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CMMotionActivityExtra.h; sourceTree = "<group>"; }; 163 6EF163091F29069300DA306C /* Localizable.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; path = Localizable.strings; sourceTree = "<group>"; };
160 6EDC8BF31F2C68D700765ACC /* CMMotionActivityExtra.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CMMotionActivityExtra.m; sourceTree = "<group>"; }; 164 9CA8AEE71F31BB4600C5FC74 /* ConfirmForgetPassViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConfirmForgetPassViewController.h; sourceTree = "<group>"; };
161 6EF163091F29069300DA306C /* Localizable.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; path = Localizable.strings; sourceTree = "<group>"; }; 165 9CA8AEE81F31BB4600C5FC74 /* ConfirmForgetPassViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ConfirmForgetPassViewController.m; sourceTree = "<group>"; };
162 9CA8AEE71F31BB4600C5FC74 /* ConfirmForgetPassViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConfirmForgetPassViewController.h; sourceTree = "<group>"; }; 166 9CA8AEE91F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ConfirmForgetPassViewController.xib; sourceTree = "<group>"; };
163 9CA8AEE81F31BB4600C5FC74 /* ConfirmForgetPassViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ConfirmForgetPassViewController.m; sourceTree = "<group>"; }; 167 9CBDA0F81F2ECE2C0055DED1 /* BaseViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseViewController.h; sourceTree = "<group>"; };
164 9CA8AEE91F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ConfirmForgetPassViewController.xib; sourceTree = "<group>"; }; 168 9CBDA0F91F2ECE2C0055DED1 /* BaseViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BaseViewController.m; sourceTree = "<group>"; };
165 9CBDA0F81F2ECE2C0055DED1 /* BaseViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseViewController.h; sourceTree = "<group>"; }; 169 9CBDA0FC1F2F03810055DED1 /* RegisterViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegisterViewController.h; sourceTree = "<group>"; };
166 9CBDA0F91F2ECE2C0055DED1 /* BaseViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BaseViewController.m; sourceTree = "<group>"; }; 170 9CBDA0FD1F2F03810055DED1 /* RegisterViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RegisterViewController.m; sourceTree = "<group>"; };
167 9CBDA0FC1F2F03810055DED1 /* RegisterViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegisterViewController.h; sourceTree = "<group>"; }; 171 9CBDA0FE1F2F03810055DED1 /* RegisterViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RegisterViewController.xib; sourceTree = "<group>"; };
168 9CBDA0FD1F2F03810055DED1 /* RegisterViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RegisterViewController.m; sourceTree = "<group>"; }; 172 E933E6681F3E04A6002926F5 /* SearchGroupViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchGroupViewController.h; sourceTree = "<group>"; };
169 9CBDA0FE1F2F03810055DED1 /* RegisterViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RegisterViewController.xib; sourceTree = "<group>"; }; 173 E933E6691F3E04A6002926F5 /* SearchGroupViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SearchGroupViewController.m; sourceTree = "<group>"; };
170 E933E6681F3E04A6002926F5 /* SearchGroupViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchGroupViewController.h; sourceTree = "<group>"; }; 174 E933E66A1F3E04A6002926F5 /* SearchGroupViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SearchGroupViewController.xib; sourceTree = "<group>"; };
171 E933E6691F3E04A6002926F5 /* SearchGroupViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SearchGroupViewController.m; sourceTree = "<group>"; }; 175 E933E66D1F3E09B6002926F5 /* SearchGroupTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchGroupTableViewCell.h; sourceTree = "<group>"; };
172 E933E66A1F3E04A6002926F5 /* SearchGroupViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SearchGroupViewController.xib; sourceTree = "<group>"; }; 176 E933E66E1F3E09B6002926F5 /* SearchGroupTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SearchGroupTableViewCell.m; sourceTree = "<group>"; };
173 E933E66D1F3E09B6002926F5 /* SearchGroupTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchGroupTableViewCell.h; sourceTree = "<group>"; }; 177 E933E66F1F3E09B6002926F5 /* SearchGroupTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SearchGroupTableViewCell.xib; sourceTree = "<group>"; };
174 E933E66E1F3E09B6002926F5 /* SearchGroupTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SearchGroupTableViewCell.m; sourceTree = "<group>"; }; 178 E933E6721F3E0E4E002926F5 /* GroupObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GroupObject.h; sourceTree = "<group>"; };
175 E933E66F1F3E09B6002926F5 /* SearchGroupTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SearchGroupTableViewCell.xib; sourceTree = "<group>"; }; 179 E933E6731F3E0E4E002926F5 /* GroupObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GroupObject.m; sourceTree = "<group>"; };
176 E933E6721F3E0E4E002926F5 /* GroupObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GroupObject.h; sourceTree = "<group>"; }; 180 E933E6761F40513C002926F5 /* GroupDetailViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GroupDetailViewController.h; sourceTree = "<group>"; };
177 E933E6731F3E0E4E002926F5 /* GroupObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GroupObject.m; sourceTree = "<group>"; }; 181 E933E6771F40513C002926F5 /* GroupDetailViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GroupDetailViewController.m; sourceTree = "<group>"; };
178 E933E6761F40513C002926F5 /* GroupDetailViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GroupDetailViewController.h; sourceTree = "<group>"; }; 182 E933E6781F40513C002926F5 /* GroupDetailViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = GroupDetailViewController.xib; sourceTree = "<group>"; };
179 E933E6771F40513C002926F5 /* GroupDetailViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GroupDetailViewController.m; sourceTree = "<group>"; }; 183 E9373E451F3596940059355A /* AutoTransLabel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AutoTransLabel.h; sourceTree = "<group>"; };
180 E933E6781F40513C002926F5 /* GroupDetailViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = GroupDetailViewController.xib; sourceTree = "<group>"; }; 184 E9373E461F3596940059355A /* AutoTransLabel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AutoTransLabel.m; sourceTree = "<group>"; };
181 E9373E451F3596940059355A /* AutoTransLabel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AutoTransLabel.h; sourceTree = "<group>"; }; 185 E9373E481F35AA180059355A /* HistoryObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryObject.h; sourceTree = "<group>"; };
182 E9373E461F3596940059355A /* AutoTransLabel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AutoTransLabel.m; sourceTree = "<group>"; }; 186 E9373E491F35AA180059355A /* HistoryObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryObject.m; sourceTree = "<group>"; };
183 E9373E481F35AA180059355A /* HistoryObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryObject.h; sourceTree = "<group>"; }; 187 E9373E4B1F361A230059355A /* HistoryGraphObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryGraphObject.h; sourceTree = "<group>"; };
184 E9373E491F35AA180059355A /* HistoryObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryObject.m; sourceTree = "<group>"; }; 188 E9373E4C1F361A230059355A /* HistoryGraphObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryGraphObject.m; sourceTree = "<group>"; };
185 E9373E4B1F361A230059355A /* HistoryGraphObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryGraphObject.h; sourceTree = "<group>"; }; 189 E9497FD31F46EC1100E6AF8D /* MemberObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MemberObject.h; sourceTree = "<group>"; };
186 E9373E4C1F361A230059355A /* HistoryGraphObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryGraphObject.m; sourceTree = "<group>"; }; 190 E9497FD41F46EC1100E6AF8D /* MemberObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MemberObject.m; sourceTree = "<group>"; };
191 E95F4CEA1F475C6A00D27E80 /* CreateGroupViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CreateGroupViewController.h; sourceTree = "<group>"; };
192 E95F4CEB1F475C6A00D27E80 /* CreateGroupViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CreateGroupViewController.m; sourceTree = "<group>"; };
193 E95F4CEC1F475C6A00D27E80 /* CreateGroupViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CreateGroupViewController.xib; sourceTree = "<group>"; };
194 E95F4CF01F48B39200D27E80 /* MyGroupViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MyGroupViewController.h; sourceTree = "<group>"; };
195 E95F4CF11F48B39200D27E80 /* MyGroupViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MyGroupViewController.m; sourceTree = "<group>"; };
196 E95F4CF21F48B39200D27E80 /* MyGroupViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MyGroupViewController.xib; sourceTree = "<group>"; };
187 E9497FD31F46EC1100E6AF8D /* MemberObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MemberObject.h; sourceTree = "<group>"; }; 197 E9682E2B1F39675A00FE05A2 /* RankingTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RankingTableViewCell.h; sourceTree = "<group>"; };
188 E9497FD41F46EC1100E6AF8D /* MemberObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MemberObject.m; sourceTree = "<group>"; }; 198 E9682E2C1F39675A00FE05A2 /* RankingTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RankingTableViewCell.m; sourceTree = "<group>"; };
189 E95F4CEA1F475C6A00D27E80 /* CreateGroupViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CreateGroupViewController.h; sourceTree = "<group>"; }; 199 E9682E2D1F39675A00FE05A2 /* RankingTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RankingTableViewCell.xib; sourceTree = "<group>"; };
190 E95F4CEB1F475C6A00D27E80 /* CreateGroupViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CreateGroupViewController.m; sourceTree = "<group>"; }; 200 E96855081F3C444900317CEF /* AutoTransButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AutoTransButton.h; sourceTree = "<group>"; };
191 E95F4CEC1F475C6A00D27E80 /* CreateGroupViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CreateGroupViewController.xib; sourceTree = "<group>"; }; 201 E96855091F3C444900317CEF /* AutoTransButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AutoTransButton.m; sourceTree = "<group>"; };
192 E9682E2B1F39675A00FE05A2 /* RankingTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RankingTableViewCell.h; sourceTree = "<group>"; }; 202 E968550E1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SNSRecentTopicTableViewCell.h; sourceTree = "<group>"; };
193 E9682E2C1F39675A00FE05A2 /* RankingTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RankingTableViewCell.m; sourceTree = "<group>"; }; 203 E968550F1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SNSRecentTopicTableViewCell.m; sourceTree = "<group>"; };
194 E9682E2D1F39675A00FE05A2 /* RankingTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RankingTableViewCell.xib; sourceTree = "<group>"; }; 204 E96855101F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SNSRecentTopicTableViewCell.xib; sourceTree = "<group>"; };
195 E96855081F3C444900317CEF /* AutoTransButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AutoTransButton.h; sourceTree = "<group>"; }; 205 E997E0251F3AB66500709FB1 /* Social.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Social.framework; path = System/Library/Frameworks/Social.framework; sourceTree = SDKROOT; };
196 E96855091F3C444900317CEF /* AutoTransButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AutoTransButton.m; sourceTree = "<group>"; }; 206 E99E13A91F336F3600C78787 /* CollectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CollectionView.h; sourceTree = "<group>"; };
197 E968550E1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SNSRecentTopicTableViewCell.h; sourceTree = "<group>"; }; 207 E99E13AA1F336F3600C78787 /* CollectionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CollectionView.m; sourceTree = "<group>"; };
198 E968550F1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SNSRecentTopicTableViewCell.m; sourceTree = "<group>"; }; 208 E99E13AC1F336F4500C78787 /* CollectionView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CollectionView.xib; sourceTree = "<group>"; };
199 E96855101F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SNSRecentTopicTableViewCell.xib; sourceTree = "<group>"; }; 209 E99E13AE1F33720600C78787 /* LabelCollectionViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LabelCollectionViewCell.h; sourceTree = "<group>"; };
200 E997E0251F3AB66500709FB1 /* Social.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Social.framework; path = System/Library/Frameworks/Social.framework; sourceTree = SDKROOT; }; 210 E99E13AF1F33720600C78787 /* LabelCollectionViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LabelCollectionViewCell.m; sourceTree = "<group>"; };
201 E99E13A91F336F3600C78787 /* CollectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CollectionView.h; sourceTree = "<group>"; }; 211 E99E13B01F33720600C78787 /* LabelCollectionViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LabelCollectionViewCell.xib; sourceTree = "<group>"; };
202 E99E13AA1F336F3600C78787 /* CollectionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CollectionView.m; sourceTree = "<group>"; }; 212 E9D9091F1F3D559D004CF99F /* TweetObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TweetObject.h; sourceTree = "<group>"; };
203 E99E13AC1F336F4500C78787 /* CollectionView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CollectionView.xib; sourceTree = "<group>"; }; 213 E9D909201F3D559D004CF99F /* TweetObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TweetObject.m; sourceTree = "<group>"; };
204 E99E13AE1F33720600C78787 /* LabelCollectionViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LabelCollectionViewCell.h; sourceTree = "<group>"; }; 214 E9D909221F3D6E8C004CF99F /* BaseTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseTableViewController.h; sourceTree = "<group>"; };
205 E99E13AF1F33720600C78787 /* LabelCollectionViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LabelCollectionViewCell.m; sourceTree = "<group>"; }; 215 E9D909231F3D6E8C004CF99F /* BaseTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BaseTableViewController.m; sourceTree = "<group>"; };
206 E99E13B01F33720600C78787 /* LabelCollectionViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LabelCollectionViewCell.xib; sourceTree = "<group>"; }; 216 E9F73DC91F338A0F004A3A6F /* HistoryListTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryListTableViewCell.h; sourceTree = "<group>"; };
207 E9D9091F1F3D559D004CF99F /* TweetObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TweetObject.h; sourceTree = "<group>"; }; 217 E9F73DCA1F338A0F004A3A6F /* HistoryListTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryListTableViewCell.m; sourceTree = "<group>"; };
208 E9D909201F3D559D004CF99F /* TweetObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TweetObject.m; sourceTree = "<group>"; }; 218 E9F73DCB1F338A0F004A3A6F /* HistoryListTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HistoryListTableViewCell.xib; sourceTree = "<group>"; };
209 E9D909221F3D6E8C004CF99F /* BaseTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseTableViewController.h; sourceTree = "<group>"; }; 219 /* End PBXFileReference section */
210 E9D909231F3D6E8C004CF99F /* BaseTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BaseTableViewController.m; sourceTree = "<group>"; }; 220
211 E9F73DC91F338A0F004A3A6F /* HistoryListTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryListTableViewCell.h; sourceTree = "<group>"; }; 221 /* Begin PBXFrameworksBuildPhase section */
212 E9F73DCA1F338A0F004A3A6F /* HistoryListTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryListTableViewCell.m; sourceTree = "<group>"; }; 222 6E84E36E1F27A700001EB88E /* Frameworks */ = {
213 E9F73DCB1F338A0F004A3A6F /* HistoryListTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HistoryListTableViewCell.xib; sourceTree = "<group>"; }; 223 isa = PBXFrameworksBuildPhase;
214 /* End PBXFileReference section */ 224 buildActionMask = 2147483647;
215 225 files = (
216 /* Begin PBXFrameworksBuildPhase section */ 226 E997E0261F3AB66500709FB1 /* Social.framework in Frameworks */,
217 6E84E36E1F27A700001EB88E /* Frameworks */ = { 227 011799F0F2B47D80472673CE /* Pods_LifeLog.framework in Frameworks */,
218 isa = PBXFrameworksBuildPhase; 228 );
219 buildActionMask = 2147483647; 229 runOnlyForDeploymentPostprocessing = 0;
220 files = ( 230 };
221 E997E0261F3AB66500709FB1 /* Social.framework in Frameworks */, 231 6E84E3871F27A703001EB88E /* Frameworks */ = {
222 011799F0F2B47D80472673CE /* Pods_LifeLog.framework in Frameworks */, 232 isa = PBXFrameworksBuildPhase;
223 ); 233 buildActionMask = 2147483647;
224 runOnlyForDeploymentPostprocessing = 0; 234 files = (
225 }; 235 );
226 6E84E3871F27A703001EB88E /* Frameworks */ = { 236 runOnlyForDeploymentPostprocessing = 0;
227 isa = PBXFrameworksBuildPhase; 237 };
228 buildActionMask = 2147483647; 238 6E84E3921F27A703001EB88E /* Frameworks */ = {
229 files = ( 239 isa = PBXFrameworksBuildPhase;
230 ); 240 buildActionMask = 2147483647;
231 runOnlyForDeploymentPostprocessing = 0; 241 files = (
232 }; 242 );
233 6E84E3921F27A703001EB88E /* Frameworks */ = { 243 runOnlyForDeploymentPostprocessing = 0;
234 isa = PBXFrameworksBuildPhase; 244 };
235 buildActionMask = 2147483647; 245 /* End PBXFrameworksBuildPhase section */
236 files = ( 246
237 ); 247 /* Begin PBXGroup section */
238 runOnlyForDeploymentPostprocessing = 0; 248 020C1721B642EF36F31E1BB4 /* Frameworks */ = {
239 }; 249 isa = PBXGroup;
240 /* End PBXFrameworksBuildPhase section */ 250 children = (
241 251 E997E0251F3AB66500709FB1 /* Social.framework */,
242 /* Begin PBXGroup section */ 252 2D9F4ED6F06C8F252B9EAF48 /* Pods_LifeLog.framework */,
243 020C1721B642EF36F31E1BB4 /* Frameworks */ = { 253 );
244 isa = PBXGroup; 254 name = Frameworks;
245 children = ( 255 sourceTree = "<group>";
246 E997E0251F3AB66500709FB1 /* Social.framework */, 256 };
247 2D9F4ED6F06C8F252B9EAF48 /* Pods_LifeLog.framework */, 257 6E18CECF1F2E398C0029891F /* Login */ = {
248 ); 258 isa = PBXGroup;
249 name = Frameworks; 259 children = (
250 sourceTree = "<group>"; 260 9CA8AEE61F31BB1200C5FC74 /* ConfirmForgetPass */,
251 }; 261 6E18CED01F2E39DB0029891F /* LoginViewController.h */,
252 6E18CECF1F2E398C0029891F /* Login */ = { 262 6E18CED11F2E39DB0029891F /* LoginViewController.m */,
253 isa = PBXGroup; 263 6E18CED21F2E39DB0029891F /* LoginViewController.xib */,
254 children = ( 264 );
255 9CA8AEE61F31BB1200C5FC74 /* ConfirmForgetPass */, 265 name = Login;
256 6E18CED01F2E39DB0029891F /* LoginViewController.h */, 266 sourceTree = "<group>";
257 6E18CED11F2E39DB0029891F /* LoginViewController.m */, 267 };
258 6E18CED21F2E39DB0029891F /* LoginViewController.xib */, 268 6E18CED51F2E3C0E0029891F /* ServerAPI */ = {
259 ); 269 isa = PBXGroup;
260 name = Login; 270 children = (
261 sourceTree = "<group>"; 271 6E18CED61F2E3C840029891F /* ServerAPI.h */,
262 }; 272 6E18CED71F2E3C840029891F /* ServerAPI.m */,
263 6E18CED51F2E3C0E0029891F /* ServerAPI */ = { 273 );
264 isa = PBXGroup; 274 name = ServerAPI;
265 children = ( 275 sourceTree = "<group>";
266 6E18CED61F2E3C840029891F /* ServerAPI.h */, 276 };
267 6E18CED71F2E3C840029891F /* ServerAPI.m */, 277 6E18CED91F2E40AE0029891F /* Model */ = {
268 ); 278 isa = PBXGroup;
269 name = ServerAPI; 279 children = (
270 sourceTree = "<group>"; 280 6E18CEDD1F2E46570029891F /* Entities.h */,
271 }; 281 6EA4AF2B1F40BB7A00F52CFE /* StepObject.h */,
272 6E18CED91F2E40AE0029891F /* Model */ = { 282 6EA4AF2C1F40BB7A00F52CFE /* StepObject.m */,
273 isa = PBXGroup; 283 6EA4AF2D1F40BB7A00F52CFE /* TargetInfor.h */,
274 children = ( 284 6EA4AF2E1F40BB7A00F52CFE /* TargetInfor.m */,
275 6E18CEDD1F2E46570029891F /* Entities.h */, 285 6EA4AF2F1F40BB7A00F52CFE /* TopObject.h */,
276 6EA4AF2B1F40BB7A00F52CFE /* StepObject.h */, 286 6EA4AF301F40BB7A00F52CFE /* TopObject.m */,
277 6EA4AF2C1F40BB7A00F52CFE /* StepObject.m */, 287 6E18CEDA1F2E40F50029891F /* User.h */,
278 6EA4AF2D1F40BB7A00F52CFE /* TargetInfor.h */, 288 6E18CEDB1F2E40F50029891F /* User.m */,
279 6EA4AF2E1F40BB7A00F52CFE /* TargetInfor.m */, 289 E9373E481F35AA180059355A /* HistoryObject.h */,
280 6EA4AF2F1F40BB7A00F52CFE /* TopObject.h */, 290 E9373E491F35AA180059355A /* HistoryObject.m */,
281 6EA4AF301F40BB7A00F52CFE /* TopObject.m */, 291 E9373E4B1F361A230059355A /* HistoryGraphObject.h */,
282 6E18CEDA1F2E40F50029891F /* User.h */, 292 E9373E4C1F361A230059355A /* HistoryGraphObject.m */,
283 6E18CEDB1F2E40F50029891F /* User.m */, 293 E9D9091F1F3D559D004CF99F /* TweetObject.h */,
284 E9373E481F35AA180059355A /* HistoryObject.h */, 294 E9D909201F3D559D004CF99F /* TweetObject.m */,
285 E9373E491F35AA180059355A /* HistoryObject.m */, 295 E933E6721F3E0E4E002926F5 /* GroupObject.h */,
286 E9373E4B1F361A230059355A /* HistoryGraphObject.h */, 296 E933E6731F3E0E4E002926F5 /* GroupObject.m */,
287 E9373E4C1F361A230059355A /* HistoryGraphObject.m */, 297 E9497FD31F46EC1100E6AF8D /* MemberObject.h */,
288 E9D9091F1F3D559D004CF99F /* TweetObject.h */, 298 E9497FD41F46EC1100E6AF8D /* MemberObject.m */,
289 E9D909201F3D559D004CF99F /* TweetObject.m */, 299 );
290 E933E6721F3E0E4E002926F5 /* GroupObject.h */, 300 name = Model;
291 E933E6731F3E0E4E002926F5 /* GroupObject.m */, 301 sourceTree = "<group>";
292 E9497FD31F46EC1100E6AF8D /* MemberObject.h */, 302 };
293 E9497FD41F46EC1100E6AF8D /* MemberObject.m */, 303 6E7F93391F35870F00EFBC71 /* TPKeyboardAvoiding */ = {
294 ); 304 isa = PBXGroup;
295 name = Model; 305 children = (
296 sourceTree = "<group>"; 306 6E7F933A1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.h */,
297 }; 307 6E7F933B1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m */,
298 6E7F93391F35870F00EFBC71 /* TPKeyboardAvoiding */ = { 308 6E7F933C1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.h */,
299 isa = PBXGroup; 309 6E7F933D1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m */,
300 children = ( 310 6E7F933E1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.h */,
301 6E7F933A1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.h */, 311 6E7F933F1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m */,
302 6E7F933B1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m */, 312 6E7F93401F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.h */,
303 6E7F933C1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.h */, 313 6E7F93411F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m */,
304 6E7F933D1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m */, 314 );
305 6E7F933E1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.h */, 315 name = TPKeyboardAvoiding;
306 6E7F933F1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m */, 316 sourceTree = "<group>";
307 6E7F93401F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.h */, 317 };
308 6E7F93411F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m */, 318 6E84E3681F27A700001EB88E = {
309 ); 319 isa = PBXGroup;
310 name = TPKeyboardAvoiding; 320 children = (
311 sourceTree = "<group>"; 321 6E84E3731F27A700001EB88E /* LifeLog */,
312 }; 322 6E84E38D1F27A703001EB88E /* LifeLogTests */,
313 6E84E3681F27A700001EB88E = { 323 6E84E3981F27A703001EB88E /* LifeLogUITests */,
314 isa = PBXGroup; 324 DE8269E957EA47CD771BAB33 /* Pods */,
315 children = ( 325 020C1721B642EF36F31E1BB4 /* Frameworks */,
316 6E84E3731F27A700001EB88E /* LifeLog */, 326 783929CF869F5081762B3DCA /* Products */,
317 6E84E38D1F27A703001EB88E /* LifeLogTests */, 327 );
318 6E84E3981F27A703001EB88E /* LifeLogUITests */, 328 sourceTree = "<group>";
319 DE8269E957EA47CD771BAB33 /* Pods */, 329 };
320 020C1721B642EF36F31E1BB4 /* Frameworks */, 330 6E84E3721F27A700001EB88E /* Products */ = {
321 783929CF869F5081762B3DCA /* Products */, 331 isa = PBXGroup;
322 ); 332 children = (
323 sourceTree = "<group>"; 333 6E84E3711F27A700001EB88E /* LifeLog.app */,
324 }; 334 6E84E38A1F27A703001EB88E /* LifeLogTests.xctest */,
325 6E84E3721F27A700001EB88E /* Products */ = { 335 6E84E3951F27A703001EB88E /* LifeLogUITests.xctest */,
326 isa = PBXGroup; 336 );
327 children = ( 337 name = Products;
328 6E84E3711F27A700001EB88E /* LifeLog.app */, 338 sourceTree = "<group>";
329 6E84E38A1F27A703001EB88E /* LifeLogTests.xctest */, 339 };
330 6E84E3951F27A703001EB88E /* LifeLogUITests.xctest */, 340 6E84E3731F27A700001EB88E /* LifeLog */ = {
331 ); 341 isa = PBXGroup;
332 name = Products; 342 children = (
333 sourceTree = "<group>"; 343 6E18CED91F2E40AE0029891F /* Model */,
334 }; 344 6E18CED51F2E3C0E0029891F /* ServerAPI */,
335 6E84E3731F27A700001EB88E /* LifeLog */ = { 345 6EDC8BEB1F2C2F3300765ACC /* Common */,
336 isa = PBXGroup; 346 6ECC406D1F2A5FA500AAEB97 /* Library */,
337 children = ( 347 E99E13A71F336F0C00C78787 /* CustomView */,
338 6E18CED91F2E40AE0029891F /* Model */, 348 6E84E3A81F27A8A9001EB88E /* ViewControllers */,
339 6E18CED51F2E3C0E0029891F /* ServerAPI */, 349 6E84E3A71F27A887001EB88E /* AppDelegate */,
340 6EDC8BEB1F2C2F3300765ACC /* Common */, 350 6E84E3801F27A701001EB88E /* Assets.xcassets */,
341 6ECC406D1F2A5FA500AAEB97 /* Library */, 351 6E84E3821F27A701001EB88E /* LaunchScreen.storyboard */,
342 E99E13A71F336F0C00C78787 /* CustomView */, 352 6E84E3851F27A701001EB88E /* Info.plist */,
343 6E84E3A81F27A8A9001EB88E /* ViewControllers */, 353 6E84E3741F27A701001EB88E /* Supporting Files */,
344 6E84E3A71F27A887001EB88E /* AppDelegate */, 354 );
345 6E84E3801F27A701001EB88E /* Assets.xcassets */, 355 path = LifeLog;
346 6E84E3821F27A701001EB88E /* LaunchScreen.storyboard */, 356 sourceTree = "<group>";
347 6E84E3851F27A701001EB88E /* Info.plist */, 357 };
348 6E84E3741F27A701001EB88E /* Supporting Files */, 358 6E84E3741F27A701001EB88E /* Supporting Files */ = {
349 ); 359 isa = PBXGroup;
350 path = LifeLog; 360 children = (
351 sourceTree = "<group>"; 361 6E84E3751F27A701001EB88E /* main.m */,
352 }; 362 6EF163091F29069300DA306C /* Localizable.strings */,
353 6E84E3741F27A701001EB88E /* Supporting Files */ = { 363 );
354 isa = PBXGroup; 364 name = "Supporting Files";
355 children = ( 365 sourceTree = "<group>";
356 6E84E3751F27A701001EB88E /* main.m */, 366 };
357 6EF163091F29069300DA306C /* Localizable.strings */, 367 6E84E38D1F27A703001EB88E /* LifeLogTests */ = {
358 ); 368 isa = PBXGroup;
359 name = "Supporting Files"; 369 children = (
360 sourceTree = "<group>"; 370 6E84E38E1F27A703001EB88E /* LifeLogTests.m */,
361 }; 371 6E84E3901F27A703001EB88E /* Info.plist */,
362 6E84E38D1F27A703001EB88E /* LifeLogTests */ = { 372 );
363 isa = PBXGroup; 373 path = LifeLogTests;
364 children = ( 374 sourceTree = "<group>";
365 6E84E38E1F27A703001EB88E /* LifeLogTests.m */, 375 };
366 6E84E3901F27A703001EB88E /* Info.plist */, 376 6E84E3981F27A703001EB88E /* LifeLogUITests */ = {
367 ); 377 isa = PBXGroup;
368 path = LifeLogTests; 378 children = (
369 sourceTree = "<group>"; 379 6E84E3991F27A703001EB88E /* LifeLogUITests.m */,
370 }; 380 6E84E39B1F27A703001EB88E /* Info.plist */,
371 6E84E3981F27A703001EB88E /* LifeLogUITests */ = { 381 );
372 isa = PBXGroup; 382 path = LifeLogUITests;
373 children = ( 383 sourceTree = "<group>";
374 6E84E3991F27A703001EB88E /* LifeLogUITests.m */, 384 };
375 6E84E39B1F27A703001EB88E /* Info.plist */, 385 6E84E3A71F27A887001EB88E /* AppDelegate */ = {
376 ); 386 isa = PBXGroup;
377 path = LifeLogUITests; 387 children = (
378 sourceTree = "<group>"; 388 6E84E3771F27A701001EB88E /* AppDelegate.h */,
379 }; 389 6E84E3781F27A701001EB88E /* AppDelegate.m */,
380 6E84E3A71F27A887001EB88E /* AppDelegate */ = { 390 );
381 isa = PBXGroup; 391 name = AppDelegate;
382 children = ( 392 sourceTree = "<group>";
383 6E84E3771F27A701001EB88E /* AppDelegate.h */, 393 };
384 6E84E3781F27A701001EB88E /* AppDelegate.m */, 394 6E84E3A81F27A8A9001EB88E /* ViewControllers */ = {
385 ); 395 isa = PBXGroup;
386 name = AppDelegate; 396 children = (
387 sourceTree = "<group>"; 397 9CBDA0F71F2ECDFD0055DED1 /* BaseViewController */,
388 }; 398 9CBDA0FB1F2F03490055DED1 /* Register */,
389 6E84E3A81F27A8A9001EB88E /* ViewControllers */ = { 399 6E18CECF1F2E398C0029891F /* Login */,
390 isa = PBXGroup; 400 6E84E3AC1F27A954001EB88E /* SNS */,
391 children = ( 401 6E84E3C11F27AC89001EB88E /* Map */,
392 9CBDA0F71F2ECDFD0055DED1 /* BaseViewController */, 402 6E84E3AB1F27A946001EB88E /* Ranking */,
393 9CBDA0FB1F2F03490055DED1 /* Register */, 403 6E84E3AA1F27A924001EB88E /* History */,
394 6E18CECF1F2E398C0029891F /* Login */, 404 6E84E3A91F27A915001EB88E /* Home */,
395 6E84E3AC1F27A954001EB88E /* SNS */, 405 );
396 6E84E3C11F27AC89001EB88E /* Map */, 406 name = ViewControllers;
397 6E84E3AB1F27A946001EB88E /* Ranking */, 407 sourceTree = "<group>";
398 6E84E3AA1F27A924001EB88E /* History */, 408 };
399 6E84E3A91F27A915001EB88E /* Home */, 409 6E84E3A91F27A915001EB88E /* Home */ = {
400 ); 410 isa = PBXGroup;
401 name = ViewControllers; 411 children = (
402 sourceTree = "<group>"; 412 6E8DA0F31F2BAC0800CCE941 /* Today */,
403 }; 413 6E84E3AD1F27A975001EB88E /* HomeViewController.h */,
404 6E84E3A91F27A915001EB88E /* Home */ = { 414 6E84E3AE1F27A975001EB88E /* HomeViewController.m */,
405 isa = PBXGroup; 415 6E84E3AF1F27A975001EB88E /* HomeViewController.xib */,
406 children = ( 416 );
407 6E8DA0F31F2BAC0800CCE941 /* Today */, 417 name = Home;
408 6E84E3AD1F27A975001EB88E /* HomeViewController.h */, 418 sourceTree = "<group>";
409 6E84E3AE1F27A975001EB88E /* HomeViewController.m */, 419 };
410 6E84E3AF1F27A975001EB88E /* HomeViewController.xib */, 420 6E84E3AA1F27A924001EB88E /* History */ = {
411 ); 421 isa = PBXGroup;
412 name = Home; 422 children = (
413 sourceTree = "<group>"; 423 6E84E3B21F27A98B001EB88E /* HistoryViewController.h */,
414 }; 424 6E84E3B31F27A98B001EB88E /* HistoryViewController.m */,
415 6E84E3AA1F27A924001EB88E /* History */ = { 425 6E84E3B41F27A98B001EB88E /* HistoryViewController.xib */,
416 isa = PBXGroup; 426 E9F73DC91F338A0F004A3A6F /* HistoryListTableViewCell.h */,
417 children = ( 427 E9F73DCA1F338A0F004A3A6F /* HistoryListTableViewCell.m */,
418 6E84E3B21F27A98B001EB88E /* HistoryViewController.h */, 428 E9F73DCB1F338A0F004A3A6F /* HistoryListTableViewCell.xib */,
419 6E84E3B31F27A98B001EB88E /* HistoryViewController.m */, 429 );
420 6E84E3B41F27A98B001EB88E /* HistoryViewController.xib */, 430 name = History;
421 E9F73DC91F338A0F004A3A6F /* HistoryListTableViewCell.h */, 431 sourceTree = "<group>";
422 E9F73DCA1F338A0F004A3A6F /* HistoryListTableViewCell.m */, 432 };
423 E9F73DCB1F338A0F004A3A6F /* HistoryListTableViewCell.xib */, 433 6E84E3AB1F27A946001EB88E /* Ranking */ = {
424 ); 434 isa = PBXGroup;
425 name = History; 435 children = (
426 sourceTree = "<group>"; 436 6E84E3B71F27A9A0001EB88E /* RankingViewController.h */,
427 }; 437 6E84E3B81F27A9A0001EB88E /* RankingViewController.m */,
428 6E84E3AB1F27A946001EB88E /* Ranking */ = { 438 6E84E3B91F27A9A0001EB88E /* RankingViewController.xib */,
429 isa = PBXGroup; 439 E9682E2B1F39675A00FE05A2 /* RankingTableViewCell.h */,
430 children = ( 440 E9682E2C1F39675A00FE05A2 /* RankingTableViewCell.m */,
431 6E84E3B71F27A9A0001EB88E /* RankingViewController.h */, 441 E9682E2D1F39675A00FE05A2 /* RankingTableViewCell.xib */,
432 6E84E3B81F27A9A0001EB88E /* RankingViewController.m */, 442 );
433 6E84E3B91F27A9A0001EB88E /* RankingViewController.xib */, 443 name = Ranking;
434 E9682E2B1F39675A00FE05A2 /* RankingTableViewCell.h */, 444 sourceTree = "<group>";
435 E9682E2C1F39675A00FE05A2 /* RankingTableViewCell.m */, 445 };
436 E9682E2D1F39675A00FE05A2 /* RankingTableViewCell.xib */, 446 6E84E3AC1F27A954001EB88E /* SNS */ = {
437 ); 447 isa = PBXGroup;
438 name = Ranking; 448 children = (
449 E95F4CEF1F48B37100D27E80 /* MyGroup */,
450 E95F4CE91F475C4B00D27E80 /* CreateGroup */,
439 sourceTree = "<group>"; 451 E933E6751F4050E6002926F5 /* GroupDetail */,
440 }; 452 E933E6671F3E0479002926F5 /* SeachGroup */,
441 6E84E3AC1F27A954001EB88E /* SNS */ = { 453 6E84E3BC1F27A9B1001EB88E /* SNSViewController.h */,
442 isa = PBXGroup; 454 6E84E3BD1F27A9B1001EB88E /* SNSViewController.m */,
443 children = ( 455 6E84E3BE1F27A9B1001EB88E /* SNSViewController.xib */,
444 E95F4CE91F475C4B00D27E80 /* CreateGroup */, 456 E968550E1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.h */,
445 E933E6751F4050E6002926F5 /* GroupDetail */, 457 E968550F1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m */,
446 E933E6671F3E0479002926F5 /* SeachGroup */, 458 E96855101F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib */,
447 6E84E3BC1F27A9B1001EB88E /* SNSViewController.h */, 459 );
448 6E84E3BD1F27A9B1001EB88E /* SNSViewController.m */, 460 name = SNS;
449 6E84E3BE1F27A9B1001EB88E /* SNSViewController.xib */, 461 sourceTree = "<group>";
450 E968550E1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.h */, 462 };
451 E968550F1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m */, 463 6E84E3C11F27AC89001EB88E /* Map */ = {
452 E96855101F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib */, 464 isa = PBXGroup;
453 ); 465 children = (
454 name = SNS; 466 6E84E3C21F27ACAE001EB88E /* MapViewController.h */,
455 sourceTree = "<group>"; 467 6E84E3C31F27ACAE001EB88E /* MapViewController.m */,
456 }; 468 6E84E3C41F27ACAE001EB88E /* MapViewController.xib */,
457 6E84E3C11F27AC89001EB88E /* Map */ = { 469 );
458 isa = PBXGroup; 470 name = Map;
459 children = ( 471 sourceTree = "<group>";
460 6E84E3C21F27ACAE001EB88E /* MapViewController.h */, 472 };
461 6E84E3C31F27ACAE001EB88E /* MapViewController.m */, 473 6E8DA0F31F2BAC0800CCE941 /* Today */ = {
462 6E84E3C41F27ACAE001EB88E /* MapViewController.xib */, 474 isa = PBXGroup;
463 ); 475 children = (
464 name = Map; 476 6E8DA0F41F2BAC3400CCE941 /* TodayViewController.h */,
465 sourceTree = "<group>"; 477 6E8DA0F51F2BAC3400CCE941 /* TodayViewController.m */,
466 }; 478 6E8DA0F61F2BAC3400CCE941 /* TodayViewController.xib */,
467 6E8DA0F31F2BAC0800CCE941 /* Today */ = { 479 );
468 isa = PBXGroup; 480 name = Today;
469 children = ( 481 sourceTree = "<group>";
470 6E8DA0F41F2BAC3400CCE941 /* TodayViewController.h */, 482 };
471 6E8DA0F51F2BAC3400CCE941 /* TodayViewController.m */, 483 6ECC406D1F2A5FA500AAEB97 /* Library */ = {
472 6E8DA0F61F2BAC3400CCE941 /* TodayViewController.xib */, 484 isa = PBXGroup;
473 ); 485 children = (
474 name = Today; 486 6E7F93391F35870F00EFBC71 /* TPKeyboardAvoiding */,
475 sourceTree = "<group>"; 487 6ECC406E1F2A5FB200AAEB97 /* Category */,
476 }; 488 );
477 6ECC406D1F2A5FA500AAEB97 /* Library */ = { 489 name = Library;
478 isa = PBXGroup; 490 sourceTree = "<group>";
479 children = ( 491 };
480 6E7F93391F35870F00EFBC71 /* TPKeyboardAvoiding */, 492 6ECC406E1F2A5FB200AAEB97 /* Category */ = {
481 6ECC406E1F2A5FB200AAEB97 /* Category */, 493 isa = PBXGroup;
482 ); 494 children = (
483 name = Library; 495 6ECC406F1F2A5FEB00AAEB97 /* NSDate+helper.h */,
484 sourceTree = "<group>"; 496 6ECC40701F2A5FEB00AAEB97 /* NSDate+helper.m */,
485 }; 497 );
486 6ECC406E1F2A5FB200AAEB97 /* Category */ = { 498 name = Category;
487 isa = PBXGroup; 499 sourceTree = "<group>";
488 children = ( 500 };
489 6ECC406F1F2A5FEB00AAEB97 /* NSDate+helper.h */, 501 6EDC8BEB1F2C2F3300765ACC /* Common */ = {
490 6ECC40701F2A5FEB00AAEB97 /* NSDate+helper.m */, 502 isa = PBXGroup;
491 ); 503 children = (
492 name = Category; 504 6EDC8BEC1F2C2FB800765ACC /* Utilities.h */,
493 sourceTree = "<group>"; 505 6EDC8BED1F2C2FB800765ACC /* Utilities.m */,
494 }; 506 6EDC8BF21F2C68D700765ACC /* CMMotionActivityExtra.h */,
495 6EDC8BEB1F2C2F3300765ACC /* Common */ = { 507 6EDC8BF31F2C68D700765ACC /* CMMotionActivityExtra.m */,
496 isa = PBXGroup; 508 );
497 children = ( 509 name = Common;
498 6EDC8BEC1F2C2FB800765ACC /* Utilities.h */, 510 sourceTree = "<group>";
499 6EDC8BED1F2C2FB800765ACC /* Utilities.m */, 511 };
500 6EDC8BF21F2C68D700765ACC /* CMMotionActivityExtra.h */, 512 783929CF869F5081762B3DCA /* Products */ = {
501 6EDC8BF31F2C68D700765ACC /* CMMotionActivityExtra.m */, 513 isa = PBXGroup;
502 ); 514 children = (
503 name = Common; 515 );
504 sourceTree = "<group>"; 516 name = Products;
505 }; 517 sourceTree = "<group>";
506 783929CF869F5081762B3DCA /* Products */ = { 518 };
507 isa = PBXGroup; 519 9CA8AEE61F31BB1200C5FC74 /* ConfirmForgetPass */ = {
508 children = ( 520 isa = PBXGroup;
509 ); 521 children = (
510 name = Products; 522 9CA8AEE71F31BB4600C5FC74 /* ConfirmForgetPassViewController.h */,
511 sourceTree = "<group>"; 523 9CA8AEE81F31BB4600C5FC74 /* ConfirmForgetPassViewController.m */,
512 }; 524 9CA8AEE91F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib */,
513 9CA8AEE61F31BB1200C5FC74 /* ConfirmForgetPass */ = { 525 );
514 isa = PBXGroup; 526 name = ConfirmForgetPass;
515 children = ( 527 sourceTree = "<group>";
516 9CA8AEE71F31BB4600C5FC74 /* ConfirmForgetPassViewController.h */, 528 };
517 9CA8AEE81F31BB4600C5FC74 /* ConfirmForgetPassViewController.m */, 529 9CBDA0F71F2ECDFD0055DED1 /* BaseViewController */ = {
518 9CA8AEE91F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib */, 530 isa = PBXGroup;
519 ); 531 children = (
520 name = ConfirmForgetPass; 532 9CBDA0F81F2ECE2C0055DED1 /* BaseViewController.h */,
521 sourceTree = "<group>"; 533 9CBDA0F91F2ECE2C0055DED1 /* BaseViewController.m */,
522 }; 534 6E48AF0B1F2F9D3200C1D184 /* CustomTextField.h */,
523 9CBDA0F71F2ECDFD0055DED1 /* BaseViewController */ = { 535 6E48AF0C1F2F9D3200C1D184 /* CustomTextField.m */,
524 isa = PBXGroup; 536 E9D909221F3D6E8C004CF99F /* BaseTableViewController.h */,
525 children = ( 537 E9D909231F3D6E8C004CF99F /* BaseTableViewController.m */,
526 9CBDA0F81F2ECE2C0055DED1 /* BaseViewController.h */, 538 );
527 9CBDA0F91F2ECE2C0055DED1 /* BaseViewController.m */, 539 name = BaseViewController;
528 6E48AF0B1F2F9D3200C1D184 /* CustomTextField.h */, 540 sourceTree = "<group>";
529 6E48AF0C1F2F9D3200C1D184 /* CustomTextField.m */, 541 };
530 E9D909221F3D6E8C004CF99F /* BaseTableViewController.h */, 542 9CBDA0FB1F2F03490055DED1 /* Register */ = {
531 E9D909231F3D6E8C004CF99F /* BaseTableViewController.m */, 543 isa = PBXGroup;
532 ); 544 children = (
533 name = BaseViewController; 545 9CBDA0FC1F2F03810055DED1 /* RegisterViewController.h */,
534 sourceTree = "<group>"; 546 9CBDA0FD1F2F03810055DED1 /* RegisterViewController.m */,
535 }; 547 9CBDA0FE1F2F03810055DED1 /* RegisterViewController.xib */,
536 9CBDA0FB1F2F03490055DED1 /* Register */ = { 548 );
537 isa = PBXGroup; 549 name = Register;
538 children = ( 550 sourceTree = "<group>";
539 9CBDA0FC1F2F03810055DED1 /* RegisterViewController.h */, 551 };
540 9CBDA0FD1F2F03810055DED1 /* RegisterViewController.m */, 552 DE8269E957EA47CD771BAB33 /* Pods */ = {
541 9CBDA0FE1F2F03810055DED1 /* RegisterViewController.xib */, 553 isa = PBXGroup;
542 ); 554 children = (
543 name = Register; 555 6E84E3721F27A700001EB88E /* Products */,
544 sourceTree = "<group>"; 556 0FC2D57087AF4571C57FAE08 /* Pods-LifeLog.debug.xcconfig */,
545 }; 557 4CFDA5714AF852358A1EB515 /* Pods-LifeLog.release.xcconfig */,
546 DE8269E957EA47CD771BAB33 /* Pods */ = { 558 );
547 isa = PBXGroup; 559 name = Pods;
548 children = ( 560 sourceTree = "<group>";
549 6E84E3721F27A700001EB88E /* Products */, 561 };
550 0FC2D57087AF4571C57FAE08 /* Pods-LifeLog.debug.xcconfig */, 562 E933E6671F3E0479002926F5 /* SeachGroup */ = {
551 4CFDA5714AF852358A1EB515 /* Pods-LifeLog.release.xcconfig */, 563 isa = PBXGroup;
552 ); 564 children = (
553 name = Pods; 565 E933E6681F3E04A6002926F5 /* SearchGroupViewController.h */,
554 sourceTree = "<group>"; 566 E933E6691F3E04A6002926F5 /* SearchGroupViewController.m */,
555 }; 567 E933E66A1F3E04A6002926F5 /* SearchGroupViewController.xib */,
556 E933E6671F3E0479002926F5 /* SeachGroup */ = { 568 E933E66D1F3E09B6002926F5 /* SearchGroupTableViewCell.h */,
557 isa = PBXGroup; 569 E933E66E1F3E09B6002926F5 /* SearchGroupTableViewCell.m */,
558 children = ( 570 E933E66F1F3E09B6002926F5 /* SearchGroupTableViewCell.xib */,
559 E933E6681F3E04A6002926F5 /* SearchGroupViewController.h */, 571 );
560 E933E6691F3E04A6002926F5 /* SearchGroupViewController.m */, 572 name = SeachGroup;
561 E933E66A1F3E04A6002926F5 /* SearchGroupViewController.xib */, 573 sourceTree = "<group>";
562 E933E66D1F3E09B6002926F5 /* SearchGroupTableViewCell.h */, 574 };
563 E933E66E1F3E09B6002926F5 /* SearchGroupTableViewCell.m */, 575 E933E6751F4050E6002926F5 /* GroupDetail */ = {
564 E933E66F1F3E09B6002926F5 /* SearchGroupTableViewCell.xib */, 576 isa = PBXGroup;
565 ); 577 children = (
566 name = SeachGroup; 578 E933E6761F40513C002926F5 /* GroupDetailViewController.h */,
567 sourceTree = "<group>"; 579 E933E6771F40513C002926F5 /* GroupDetailViewController.m */,
568 }; 580 E933E6781F40513C002926F5 /* GroupDetailViewController.xib */,
569 E933E6751F4050E6002926F5 /* GroupDetail */ = { 581 );
570 isa = PBXGroup; 582 name = GroupDetail;
571 children = ( 583 sourceTree = "<group>";
572 E933E6761F40513C002926F5 /* GroupDetailViewController.h */, 584 };
573 E933E6771F40513C002926F5 /* GroupDetailViewController.m */, 585 E9373E441F35966D0059355A /* AutoTranslateView */ = {
574 E933E6781F40513C002926F5 /* GroupDetailViewController.xib */, 586 isa = PBXGroup;
575 ); 587 children = (
576 name = GroupDetail; 588 E9373E451F3596940059355A /* AutoTransLabel.h */,
577 sourceTree = "<group>"; 589 E9373E461F3596940059355A /* AutoTransLabel.m */,
578 }; 590 E96855081F3C444900317CEF /* AutoTransButton.h */,
579 E9373E441F35966D0059355A /* AutoTranslateView */ = { 591 E96855091F3C444900317CEF /* AutoTransButton.m */,
580 isa = PBXGroup; 592 );
581 children = ( 593 name = AutoTranslateView;
582 E9373E451F3596940059355A /* AutoTransLabel.h */, 594 sourceTree = "<group>";
583 E9373E461F3596940059355A /* AutoTransLabel.m */, 595 };
596 E95F4CE91F475C4B00D27E80 /* CreateGroup */ = {
597 isa = PBXGroup;
598 children = (
599 E95F4CEA1F475C6A00D27E80 /* CreateGroupViewController.h */,
600 E95F4CEB1F475C6A00D27E80 /* CreateGroupViewController.m */,
601 E95F4CEC1F475C6A00D27E80 /* CreateGroupViewController.xib */,
602 );
603 name = CreateGroup;
604 sourceTree = "<group>";
605 };
606 E95F4CEF1F48B37100D27E80 /* MyGroup */ = {
607 isa = PBXGroup;
608 children = (
609 E95F4CF01F48B39200D27E80 /* MyGroupViewController.h */,
610 E95F4CF11F48B39200D27E80 /* MyGroupViewController.m */,
611 E95F4CF21F48B39200D27E80 /* MyGroupViewController.xib */,
612 );
613 name = MyGroup;
614 sourceTree = "<group>";
615 };
584 E96855081F3C444900317CEF /* AutoTransButton.h */, 616 E99E13A71F336F0C00C78787 /* CustomView */ = {
585 E96855091F3C444900317CEF /* AutoTransButton.m */, 617 isa = PBXGroup;
586 ); 618 children = (
587 name = AutoTranslateView; 619 E9373E441F35966D0059355A /* AutoTranslateView */,
588 sourceTree = "<group>"; 620 E99E13A81F336F1700C78787 /* CollectionView */,
589 }; 621 );
590 E95F4CE91F475C4B00D27E80 /* CreateGroup */ = { 622 name = CustomView;
591 isa = PBXGroup; 623 sourceTree = "<group>";
592 children = ( 624 };
593 E95F4CEA1F475C6A00D27E80 /* CreateGroupViewController.h */, 625 E99E13A81F336F1700C78787 /* CollectionView */ = {
594 E95F4CEB1F475C6A00D27E80 /* CreateGroupViewController.m */, 626 isa = PBXGroup;
595 E95F4CEC1F475C6A00D27E80 /* CreateGroupViewController.xib */, 627 children = (
596 ); 628 E99E13AE1F33720600C78787 /* LabelCollectionViewCell.h */,
597 name = CreateGroup; 629 E99E13AF1F33720600C78787 /* LabelCollectionViewCell.m */,
598 sourceTree = "<group>"; 630 E99E13B01F33720600C78787 /* LabelCollectionViewCell.xib */,
599 }; 631 E99E13A91F336F3600C78787 /* CollectionView.h */,
600 E99E13A71F336F0C00C78787 /* CustomView */ = { 632 E99E13AA1F336F3600C78787 /* CollectionView.m */,
601 isa = PBXGroup; 633 E99E13AC1F336F4500C78787 /* CollectionView.xib */,
602 children = ( 634 );
603 E9373E441F35966D0059355A /* AutoTranslateView */, 635 name = CollectionView;
604 E99E13A81F336F1700C78787 /* CollectionView */, 636 sourceTree = "<group>";
605 ); 637 };
606 name = CustomView; 638 /* End PBXGroup section */
607 sourceTree = "<group>"; 639
608 }; 640 /* Begin PBXNativeTarget section */
609 E99E13A81F336F1700C78787 /* CollectionView */ = { 641 6E84E3701F27A700001EB88E /* LifeLog */ = {
610 isa = PBXGroup; 642 isa = PBXNativeTarget;
611 children = ( 643 buildConfigurationList = 6E84E39E1F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLog" */;
612 E99E13AE1F33720600C78787 /* LabelCollectionViewCell.h */, 644 buildPhases = (
613 E99E13AF1F33720600C78787 /* LabelCollectionViewCell.m */, 645 2BB22CAEC0728AA1E086BCE3 /* [CP] Check Pods Manifest.lock */,
614 E99E13B01F33720600C78787 /* LabelCollectionViewCell.xib */, 646 6E84E36D1F27A700001EB88E /* Sources */,
615 E99E13A91F336F3600C78787 /* CollectionView.h */, 647 6E84E36E1F27A700001EB88E /* Frameworks */,
616 E99E13AA1F336F3600C78787 /* CollectionView.m */, 648 6E84E36F1F27A700001EB88E /* Resources */,
617 E99E13AC1F336F4500C78787 /* CollectionView.xib */, 649 22F89B11794CEB4E265996AC /* [CP] Embed Pods Frameworks */,
618 ); 650 96653BDB2C24A87C2866C897 /* [CP] Copy Pods Resources */,
619 name = CollectionView; 651 );
620 sourceTree = "<group>"; 652 buildRules = (
621 }; 653 );
622 /* End PBXGroup section */ 654 dependencies = (
623 655 );
624 /* Begin PBXNativeTarget section */ 656 name = LifeLog;
625 6E84E3701F27A700001EB88E /* LifeLog */ = { 657 productName = LifeLog;
626 isa = PBXNativeTarget; 658 productReference = 6E84E3711F27A700001EB88E /* LifeLog.app */;
627 buildConfigurationList = 6E84E39E1F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLog" */; 659 productType = "com.apple.product-type.application";
628 buildPhases = ( 660 };
629 2BB22CAEC0728AA1E086BCE3 /* [CP] Check Pods Manifest.lock */, 661 6E84E3891F27A703001EB88E /* LifeLogTests */ = {
630 6E84E36D1F27A700001EB88E /* Sources */, 662 isa = PBXNativeTarget;
631 6E84E36E1F27A700001EB88E /* Frameworks */, 663 buildConfigurationList = 6E84E3A11F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogTests" */;
632 6E84E36F1F27A700001EB88E /* Resources */, 664 buildPhases = (
633 22F89B11794CEB4E265996AC /* [CP] Embed Pods Frameworks */, 665 6E84E3861F27A703001EB88E /* Sources */,
634 96653BDB2C24A87C2866C897 /* [CP] Copy Pods Resources */, 666 6E84E3871F27A703001EB88E /* Frameworks */,
635 ); 667 6E84E3881F27A703001EB88E /* Resources */,
636 buildRules = ( 668 );
637 ); 669 buildRules = (
638 dependencies = ( 670 );
639 ); 671 dependencies = (
640 name = LifeLog; 672 6E84E38C1F27A703001EB88E /* PBXTargetDependency */,
641 productName = LifeLog; 673 );
642 productReference = 6E84E3711F27A700001EB88E /* LifeLog.app */; 674 name = LifeLogTests;
643 productType = "com.apple.product-type.application"; 675 productName = LifeLogTests;
644 }; 676 productReference = 6E84E38A1F27A703001EB88E /* LifeLogTests.xctest */;
645 6E84E3891F27A703001EB88E /* LifeLogTests */ = { 677 productType = "com.apple.product-type.bundle.unit-test";
646 isa = PBXNativeTarget; 678 };
647 buildConfigurationList = 6E84E3A11F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogTests" */; 679 6E84E3941F27A703001EB88E /* LifeLogUITests */ = {
648 buildPhases = ( 680 isa = PBXNativeTarget;
649 6E84E3861F27A703001EB88E /* Sources */, 681 buildConfigurationList = 6E84E3A41F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogUITests" */;
650 6E84E3871F27A703001EB88E /* Frameworks */, 682 buildPhases = (
651 6E84E3881F27A703001EB88E /* Resources */, 683 6E84E3911F27A703001EB88E /* Sources */,
652 ); 684 6E84E3921F27A703001EB88E /* Frameworks */,
653 buildRules = ( 685 6E84E3931F27A703001EB88E /* Resources */,
654 ); 686 );
655 dependencies = ( 687 buildRules = (
656 6E84E38C1F27A703001EB88E /* PBXTargetDependency */, 688 );
657 ); 689 dependencies = (
658 name = LifeLogTests; 690 6E84E3971F27A703001EB88E /* PBXTargetDependency */,
659 productName = LifeLogTests; 691 );
660 productReference = 6E84E38A1F27A703001EB88E /* LifeLogTests.xctest */; 692 name = LifeLogUITests;
661 productType = "com.apple.product-type.bundle.unit-test"; 693 productName = LifeLogUITests;
662 }; 694 productReference = 6E84E3951F27A703001EB88E /* LifeLogUITests.xctest */;
663 6E84E3941F27A703001EB88E /* LifeLogUITests */ = { 695 productType = "com.apple.product-type.bundle.ui-testing";
664 isa = PBXNativeTarget; 696 };
665 buildConfigurationList = 6E84E3A41F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogUITests" */; 697 /* End PBXNativeTarget section */
666 buildPhases = ( 698
667 6E84E3911F27A703001EB88E /* Sources */, 699 /* Begin PBXProject section */
668 6E84E3921F27A703001EB88E /* Frameworks */, 700 6E84E3691F27A700001EB88E /* Project object */ = {
669 6E84E3931F27A703001EB88E /* Resources */, 701 isa = PBXProject;
670 ); 702 attributes = {
671 buildRules = ( 703 LastUpgradeCheck = 0830;
672 ); 704 ORGANIZATIONNAME = PhongNV;
673 dependencies = ( 705 TargetAttributes = {
674 6E84E3971F27A703001EB88E /* PBXTargetDependency */, 706 6E84E3701F27A700001EB88E = {
675 ); 707 CreatedOnToolsVersion = 8.3.3;
676 name = LifeLogUITests; 708 DevelopmentTeam = UXU4V3VUN4;
677 productName = LifeLogUITests; 709 ProvisioningStyle = Automatic;
678 productReference = 6E84E3951F27A703001EB88E /* LifeLogUITests.xctest */; 710 };
679 productType = "com.apple.product-type.bundle.ui-testing"; 711 6E84E3891F27A703001EB88E = {
680 }; 712 CreatedOnToolsVersion = 8.3.3;
681 /* End PBXNativeTarget section */ 713 ProvisioningStyle = Automatic;
682 714 TestTargetID = 6E84E3701F27A700001EB88E;
683 /* Begin PBXProject section */ 715 };
684 6E84E3691F27A700001EB88E /* Project object */ = { 716 6E84E3941F27A703001EB88E = {
685 isa = PBXProject; 717 CreatedOnToolsVersion = 8.3.3;
686 attributes = { 718 ProvisioningStyle = Automatic;
687 LastUpgradeCheck = 0830; 719 TestTargetID = 6E84E3701F27A700001EB88E;
688 ORGANIZATIONNAME = PhongNV; 720 };
689 TargetAttributes = { 721 };
690 6E84E3701F27A700001EB88E = { 722 };
691 CreatedOnToolsVersion = 8.3.3; 723 buildConfigurationList = 6E84E36C1F27A700001EB88E /* Build configuration list for PBXProject "LifeLog" */;
692 DevelopmentTeam = UXU4V3VUN4; 724 compatibilityVersion = "Xcode 3.2";
693 ProvisioningStyle = Automatic; 725 developmentRegion = English;
694 }; 726 hasScannedForEncodings = 0;
695 6E84E3891F27A703001EB88E = { 727 knownRegions = (
696 CreatedOnToolsVersion = 8.3.3; 728 en,
697 ProvisioningStyle = Automatic; 729 Base,
698 TestTargetID = 6E84E3701F27A700001EB88E; 730 );
699 }; 731 mainGroup = 6E84E3681F27A700001EB88E;
700 6E84E3941F27A703001EB88E = { 732 productRefGroup = 783929CF869F5081762B3DCA /* Products */;
701 CreatedOnToolsVersion = 8.3.3; 733 projectDirPath = "";
702 ProvisioningStyle = Automatic; 734 projectRoot = "";
703 TestTargetID = 6E84E3701F27A700001EB88E; 735 targets = (
704 }; 736 6E84E3701F27A700001EB88E /* LifeLog */,
705 }; 737 6E84E3891F27A703001EB88E /* LifeLogTests */,
706 }; 738 6E84E3941F27A703001EB88E /* LifeLogUITests */,
707 buildConfigurationList = 6E84E36C1F27A700001EB88E /* Build configuration list for PBXProject "LifeLog" */; 739 );
708 compatibilityVersion = "Xcode 3.2"; 740 };
709 developmentRegion = English; 741 /* End PBXProject section */
710 hasScannedForEncodings = 0; 742
711 knownRegions = ( 743 /* Begin PBXResourcesBuildPhase section */
712 en, 744 6E84E36F1F27A700001EB88E /* Resources */ = {
713 Base, 745 isa = PBXResourcesBuildPhase;
714 ); 746 buildActionMask = 2147483647;
715 mainGroup = 6E84E3681F27A700001EB88E; 747 files = (
716 productRefGroup = 783929CF869F5081762B3DCA /* Products */; 748 9CBDA1001F2F03810055DED1 /* RegisterViewController.xib in Resources */,
749 E95F4CEE1F475C6A00D27E80 /* CreateGroupViewController.xib in Resources */,
717 projectDirPath = ""; 750 6E18CED41F2E39DB0029891F /* LoginViewController.xib in Resources */,
718 projectRoot = ""; 751 E99E13AD1F336F4500C78787 /* CollectionView.xib in Resources */,
719 targets = ( 752 6E84E3BB1F27A9A0001EB88E /* RankingViewController.xib in Resources */,
720 6E84E3701F27A700001EB88E /* LifeLog */, 753 9CA8AEEB1F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib in Resources */,
721 6E84E3891F27A703001EB88E /* LifeLogTests */, 754 6E84E3C01F27A9B1001EB88E /* SNSViewController.xib in Resources */,
722 6E84E3941F27A703001EB88E /* LifeLogUITests */, 755 E9682E2F1F39675A00FE05A2 /* RankingTableViewCell.xib in Resources */,
723 ); 756 E933E6711F3E09B6002926F5 /* SearchGroupTableViewCell.xib in Resources */,
724 }; 757 6E8DA0F81F2BAC3500CCE941 /* TodayViewController.xib in Resources */,
725 /* End PBXProject section */ 758 6E84E3841F27A701001EB88E /* LaunchScreen.storyboard in Resources */,
726 759 6E84E3811F27A701001EB88E /* Assets.xcassets in Resources */,
727 /* Begin PBXResourcesBuildPhase section */ 760 6E84E3C61F27ACAE001EB88E /* MapViewController.xib in Resources */,
728 6E84E36F1F27A700001EB88E /* Resources */ = { 761 6EF1630A1F29069300DA306C /* Localizable.strings in Resources */,
729 isa = PBXResourcesBuildPhase; 762 6E84E3B11F27A975001EB88E /* HomeViewController.xib in Resources */,
730 buildActionMask = 2147483647; 763 6E84E3B61F27A98B001EB88E /* HistoryViewController.xib in Resources */,
764 E95F4CF41F48B39200D27E80 /* MyGroupViewController.xib in Resources */,
731 files = ( 765 E933E66C1F3E04A6002926F5 /* SearchGroupViewController.xib in Resources */,
732 9CBDA1001F2F03810055DED1 /* RegisterViewController.xib in Resources */, 766 E96855121F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib in Resources */,
733 E95F4CEE1F475C6A00D27E80 /* CreateGroupViewController.xib in Resources */, 767 E933E67A1F40513C002926F5 /* GroupDetailViewController.xib in Resources */,
734 6E18CED41F2E39DB0029891F /* LoginViewController.xib in Resources */, 768 E99E13B21F33720600C78787 /* LabelCollectionViewCell.xib in Resources */,
735 E99E13AD1F336F4500C78787 /* CollectionView.xib in Resources */, 769 E9F73DCD1F338A0F004A3A6F /* HistoryListTableViewCell.xib in Resources */,
736 6E84E3BB1F27A9A0001EB88E /* RankingViewController.xib in Resources */, 770 );
737 9CA8AEEB1F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib in Resources */, 771 runOnlyForDeploymentPostprocessing = 0;
738 6E84E3C01F27A9B1001EB88E /* SNSViewController.xib in Resources */, 772 };
739 E9682E2F1F39675A00FE05A2 /* RankingTableViewCell.xib in Resources */, 773 6E84E3881F27A703001EB88E /* Resources */ = {
740 E933E6711F3E09B6002926F5 /* SearchGroupTableViewCell.xib in Resources */, 774 isa = PBXResourcesBuildPhase;
741 6E8DA0F81F2BAC3500CCE941 /* TodayViewController.xib in Resources */, 775 buildActionMask = 2147483647;
742 6E84E3841F27A701001EB88E /* LaunchScreen.storyboard in Resources */, 776 files = (
743 6E84E3811F27A701001EB88E /* Assets.xcassets in Resources */, 777 );
744 6E84E3C61F27ACAE001EB88E /* MapViewController.xib in Resources */, 778 runOnlyForDeploymentPostprocessing = 0;
745 6EF1630A1F29069300DA306C /* Localizable.strings in Resources */, 779 };
746 6E84E3B11F27A975001EB88E /* HomeViewController.xib in Resources */, 780 6E84E3931F27A703001EB88E /* Resources */ = {
747 6E84E3B61F27A98B001EB88E /* HistoryViewController.xib in Resources */, 781 isa = PBXResourcesBuildPhase;
748 E933E66C1F3E04A6002926F5 /* SearchGroupViewController.xib in Resources */, 782 buildActionMask = 2147483647;
749 E96855121F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib in Resources */, 783 files = (
750 E933E67A1F40513C002926F5 /* GroupDetailViewController.xib in Resources */, 784 );
751 E99E13B21F33720600C78787 /* LabelCollectionViewCell.xib in Resources */, 785 runOnlyForDeploymentPostprocessing = 0;
752 E9F73DCD1F338A0F004A3A6F /* HistoryListTableViewCell.xib in Resources */, 786 };
753 ); 787 /* End PBXResourcesBuildPhase section */
754 runOnlyForDeploymentPostprocessing = 0; 788
755 }; 789 /* Begin PBXShellScriptBuildPhase section */
756 6E84E3881F27A703001EB88E /* Resources */ = { 790 22F89B11794CEB4E265996AC /* [CP] Embed Pods Frameworks */ = {
757 isa = PBXResourcesBuildPhase; 791 isa = PBXShellScriptBuildPhase;
758 buildActionMask = 2147483647; 792 buildActionMask = 2147483647;
759 files = ( 793 files = (
760 ); 794 );
761 runOnlyForDeploymentPostprocessing = 0; 795 inputPaths = (
762 }; 796 );
763 6E84E3931F27A703001EB88E /* Resources */ = { 797 name = "[CP] Embed Pods Frameworks";
764 isa = PBXResourcesBuildPhase; 798 outputPaths = (
765 buildActionMask = 2147483647; 799 );
766 files = ( 800 runOnlyForDeploymentPostprocessing = 0;
767 ); 801 shellPath = /bin/sh;
768 runOnlyForDeploymentPostprocessing = 0; 802 shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LifeLog/Pods-LifeLog-frameworks.sh\"\n";
769 }; 803 showEnvVarsInLog = 0;
770 /* End PBXResourcesBuildPhase section */ 804 };
771 805 2BB22CAEC0728AA1E086BCE3 /* [CP] Check Pods Manifest.lock */ = {
772 /* Begin PBXShellScriptBuildPhase section */ 806 isa = PBXShellScriptBuildPhase;
773 22F89B11794CEB4E265996AC /* [CP] Embed Pods Frameworks */ = { 807 buildActionMask = 2147483647;
774 isa = PBXShellScriptBuildPhase; 808 files = (
775 buildActionMask = 2147483647; 809 );
776 files = ( 810 inputPaths = (
777 ); 811 );
778 inputPaths = ( 812 name = "[CP] Check Pods Manifest.lock";
779 ); 813 outputPaths = (
780 name = "[CP] Embed Pods Frameworks"; 814 );
781 outputPaths = ( 815 runOnlyForDeploymentPostprocessing = 0;
782 ); 816 shellPath = /bin/sh;
783 runOnlyForDeploymentPostprocessing = 0; 817 shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n";
784 shellPath = /bin/sh; 818 showEnvVarsInLog = 0;
785 shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LifeLog/Pods-LifeLog-frameworks.sh\"\n"; 819 };
786 showEnvVarsInLog = 0; 820 96653BDB2C24A87C2866C897 /* [CP] Copy Pods Resources */ = {
787 }; 821 isa = PBXShellScriptBuildPhase;
788 2BB22CAEC0728AA1E086BCE3 /* [CP] Check Pods Manifest.lock */ = { 822 buildActionMask = 2147483647;
789 isa = PBXShellScriptBuildPhase; 823 files = (
790 buildActionMask = 2147483647; 824 );
791 files = ( 825 inputPaths = (
792 ); 826 );
793 inputPaths = ( 827 name = "[CP] Copy Pods Resources";
794 ); 828 outputPaths = (
795 name = "[CP] Check Pods Manifest.lock"; 829 );
796 outputPaths = ( 830 runOnlyForDeploymentPostprocessing = 0;
797 ); 831 shellPath = /bin/sh;
798 runOnlyForDeploymentPostprocessing = 0; 832 shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LifeLog/Pods-LifeLog-resources.sh\"\n";
799 shellPath = /bin/sh; 833 showEnvVarsInLog = 0;
800 shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; 834 };
801 showEnvVarsInLog = 0; 835 /* End PBXShellScriptBuildPhase section */
802 }; 836
803 96653BDB2C24A87C2866C897 /* [CP] Copy Pods Resources */ = { 837 /* Begin PBXSourcesBuildPhase section */
804 isa = PBXShellScriptBuildPhase; 838 6E84E36D1F27A700001EB88E /* Sources */ = {
805 buildActionMask = 2147483647; 839 isa = PBXSourcesBuildPhase;
806 files = ( 840 buildActionMask = 2147483647;
807 ); 841 files = (
808 inputPaths = ( 842 6E18CED81F2E3C840029891F /* ServerAPI.m in Sources */,
809 ); 843 6E7F93431F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m in Sources */,
810 name = "[CP] Copy Pods Resources"; 844 6E7F93421F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m in Sources */,
811 outputPaths = ( 845 E968550A1F3C444900317CEF /* AutoTransButton.m in Sources */,
812 ); 846 6EA4AF321F40BB7A00F52CFE /* TargetInfor.m in Sources */,
813 runOnlyForDeploymentPostprocessing = 0; 847 E933E6741F3E0E4E002926F5 /* GroupObject.m in Sources */,
814 shellPath = /bin/sh; 848 9CBDA0FA1F2ECE2C0055DED1 /* BaseViewController.m in Sources */,
815 shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LifeLog/Pods-LifeLog-resources.sh\"\n"; 849 6E8DA0F71F2BAC3400CCE941 /* TodayViewController.m in Sources */,
816 showEnvVarsInLog = 0; 850 6E7F93451F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m in Sources */,
817 }; 851 E9682E2E1F39675A00FE05A2 /* RankingTableViewCell.m in Sources */,
818 /* End PBXShellScriptBuildPhase section */ 852 E9D909211F3D559D004CF99F /* TweetObject.m in Sources */,
819 853 6E48AF0D1F2F9D3300C1D184 /* CustomTextField.m in Sources */,
820 /* Begin PBXSourcesBuildPhase section */ 854 E99E13AB1F336F3600C78787 /* CollectionView.m in Sources */,
821 6E84E36D1F27A700001EB88E /* Sources */ = { 855 6E84E3B01F27A975001EB88E /* HomeViewController.m in Sources */,
822 isa = PBXSourcesBuildPhase; 856 E9373E471F3596940059355A /* AutoTransLabel.m in Sources */,
823 buildActionMask = 2147483647; 857 6E84E3791F27A701001EB88E /* AppDelegate.m in Sources */,
824 files = ( 858 6E84E3BA1F27A9A0001EB88E /* RankingViewController.m in Sources */,
825 6E18CED81F2E3C840029891F /* ServerAPI.m in Sources */, 859 6E7F93441F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m in Sources */,
826 6E7F93431F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m in Sources */, 860 E9F73DCC1F338A0F004A3A6F /* HistoryListTableViewCell.m in Sources */,
827 6E7F93421F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m in Sources */, 861 6EDC8BF41F2C68D700765ACC /* CMMotionActivityExtra.m in Sources */,
828 E968550A1F3C444900317CEF /* AutoTransButton.m in Sources */, 862 E933E6791F40513C002926F5 /* GroupDetailViewController.m in Sources */,
829 6EA4AF321F40BB7A00F52CFE /* TargetInfor.m in Sources */, 863 6EA4AF311F40BB7A00F52CFE /* StepObject.m in Sources */,
864 E95F4CED1F475C6A00D27E80 /* CreateGroupViewController.m in Sources */,
830 E933E6741F3E0E4E002926F5 /* GroupObject.m in Sources */, 865 9CBDA0FF1F2F03810055DED1 /* RegisterViewController.m in Sources */,
831 9CBDA0FA1F2ECE2C0055DED1 /* BaseViewController.m in Sources */, 866 E9373E4A1F35AA180059355A /* HistoryObject.m in Sources */,
832 6E8DA0F71F2BAC3400CCE941 /* TodayViewController.m in Sources */, 867 9CA8AEEA1F31BB4600C5FC74 /* ConfirmForgetPassViewController.m in Sources */,
833 6E7F93451F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m in Sources */, 868 E99E13B11F33720600C78787 /* LabelCollectionViewCell.m in Sources */,
834 E9682E2E1F39675A00FE05A2 /* RankingTableViewCell.m in Sources */, 869 6EDC8BEE1F2C2FB800765ACC /* Utilities.m in Sources */,
835 E9D909211F3D559D004CF99F /* TweetObject.m in Sources */, 870 E96855111F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m in Sources */,
836 6E48AF0D1F2F9D3300C1D184 /* CustomTextField.m in Sources */, 871 6E84E3C51F27ACAE001EB88E /* MapViewController.m in Sources */,
837 E99E13AB1F336F3600C78787 /* CollectionView.m in Sources */, 872 6E18CEDC1F2E40F50029891F /* User.m in Sources */,
838 6E84E3B01F27A975001EB88E /* HomeViewController.m in Sources */, 873 6ECC40711F2A5FEB00AAEB97 /* NSDate+helper.m in Sources */,
839 E9373E471F3596940059355A /* AutoTransLabel.m in Sources */, 874 E9497FD51F46EC1100E6AF8D /* MemberObject.m in Sources */,
840 6E84E3791F27A701001EB88E /* AppDelegate.m in Sources */, 875 6E18CED31F2E39DB0029891F /* LoginViewController.m in Sources */,
841 6E84E3BA1F27A9A0001EB88E /* RankingViewController.m in Sources */, 876 6EA4AF331F40BB7A00F52CFE /* TopObject.m in Sources */,
842 6E7F93441F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m in Sources */, 877 E9D909241F3D6E8C004CF99F /* BaseTableViewController.m in Sources */,
843 E9F73DCC1F338A0F004A3A6F /* HistoryListTableViewCell.m in Sources */, 878 6E84E3761F27A701001EB88E /* main.m in Sources */,
844 6EDC8BF41F2C68D700765ACC /* CMMotionActivityExtra.m in Sources */, 879 E933E6701F3E09B6002926F5 /* SearchGroupTableViewCell.m in Sources */,
845 E933E6791F40513C002926F5 /* GroupDetailViewController.m in Sources */, 880 6E84E3B51F27A98B001EB88E /* HistoryViewController.m in Sources */,
881 E95F4CF31F48B39200D27E80 /* MyGroupViewController.m in Sources */,
846 6EA4AF311F40BB7A00F52CFE /* StepObject.m in Sources */, 882 E9373E4D1F361A230059355A /* HistoryGraphObject.m in Sources */,
847 E95F4CED1F475C6A00D27E80 /* CreateGroupViewController.m in Sources */, 883 E933E66B1F3E04A6002926F5 /* SearchGroupViewController.m in Sources */,
848 9CBDA0FF1F2F03810055DED1 /* RegisterViewController.m in Sources */, 884 6E84E3BF1F27A9B1001EB88E /* SNSViewController.m in Sources */,
849 E9373E4A1F35AA180059355A /* HistoryObject.m in Sources */, 885 );
850 9CA8AEEA1F31BB4600C5FC74 /* ConfirmForgetPassViewController.m in Sources */, 886 runOnlyForDeploymentPostprocessing = 0;
851 E99E13B11F33720600C78787 /* LabelCollectionViewCell.m in Sources */, 887 };
852 6EDC8BEE1F2C2FB800765ACC /* Utilities.m in Sources */, 888 6E84E3861F27A703001EB88E /* Sources */ = {
853 E96855111F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m in Sources */, 889 isa = PBXSourcesBuildPhase;
854 6E84E3C51F27ACAE001EB88E /* MapViewController.m in Sources */, 890 buildActionMask = 2147483647;
855 6E18CEDC1F2E40F50029891F /* User.m in Sources */, 891 files = (
856 6ECC40711F2A5FEB00AAEB97 /* NSDate+helper.m in Sources */, 892 6E84E38F1F27A703001EB88E /* LifeLogTests.m in Sources */,
857 E9497FD51F46EC1100E6AF8D /* MemberObject.m in Sources */, 893 );
858 6E18CED31F2E39DB0029891F /* LoginViewController.m in Sources */, 894 runOnlyForDeploymentPostprocessing = 0;
859 6EA4AF331F40BB7A00F52CFE /* TopObject.m in Sources */, 895 };
860 E9D909241F3D6E8C004CF99F /* BaseTableViewController.m in Sources */, 896 6E84E3911F27A703001EB88E /* Sources */ = {
861 6E84E3761F27A701001EB88E /* main.m in Sources */, 897 isa = PBXSourcesBuildPhase;
862 E933E6701F3E09B6002926F5 /* SearchGroupTableViewCell.m in Sources */, 898 buildActionMask = 2147483647;
863 6E84E3B51F27A98B001EB88E /* HistoryViewController.m in Sources */, 899 files = (
864 E9373E4D1F361A230059355A /* HistoryGraphObject.m in Sources */, 900 6E84E39A1F27A703001EB88E /* LifeLogUITests.m in Sources */,
865 E933E66B1F3E04A6002926F5 /* SearchGroupViewController.m in Sources */, 901 );
866 6E84E3BF1F27A9B1001EB88E /* SNSViewController.m in Sources */, 902 runOnlyForDeploymentPostprocessing = 0;
867 ); 903 };
868 runOnlyForDeploymentPostprocessing = 0; 904 /* End PBXSourcesBuildPhase section */
869 }; 905
870 6E84E3861F27A703001EB88E /* Sources */ = { 906 /* Begin PBXTargetDependency section */
871 isa = PBXSourcesBuildPhase; 907 6E84E38C1F27A703001EB88E /* PBXTargetDependency */ = {
872 buildActionMask = 2147483647; 908 isa = PBXTargetDependency;
873 files = ( 909 target = 6E84E3701F27A700001EB88E /* LifeLog */;
874 6E84E38F1F27A703001EB88E /* LifeLogTests.m in Sources */, 910 targetProxy = 6E84E38B1F27A703001EB88E /* PBXContainerItemProxy */;
875 ); 911 };
876 runOnlyForDeploymentPostprocessing = 0; 912 6E84E3971F27A703001EB88E /* PBXTargetDependency */ = {
877 }; 913 isa = PBXTargetDependency;
878 6E84E3911F27A703001EB88E /* Sources */ = { 914 target = 6E84E3701F27A700001EB88E /* LifeLog */;
879 isa = PBXSourcesBuildPhase; 915 targetProxy = 6E84E3961F27A703001EB88E /* PBXContainerItemProxy */;
880 buildActionMask = 2147483647; 916 };
881 files = ( 917 /* End PBXTargetDependency section */
882 6E84E39A1F27A703001EB88E /* LifeLogUITests.m in Sources */, 918
883 ); 919 /* Begin PBXVariantGroup section */
884 runOnlyForDeploymentPostprocessing = 0; 920 6E84E3821F27A701001EB88E /* LaunchScreen.storyboard */ = {
885 }; 921 isa = PBXVariantGroup;
886 /* End PBXSourcesBuildPhase section */ 922 children = (
887 923 6E84E3831F27A701001EB88E /* Base */,
888 /* Begin PBXTargetDependency section */ 924 );
889 6E84E38C1F27A703001EB88E /* PBXTargetDependency */ = { 925 name = LaunchScreen.storyboard;
890 isa = PBXTargetDependency; 926 sourceTree = "<group>";
891 target = 6E84E3701F27A700001EB88E /* LifeLog */; 927 };
892 targetProxy = 6E84E38B1F27A703001EB88E /* PBXContainerItemProxy */; 928 /* End PBXVariantGroup section */
893 }; 929
894 6E84E3971F27A703001EB88E /* PBXTargetDependency */ = { 930 /* Begin XCBuildConfiguration section */
895 isa = PBXTargetDependency; 931 6E84E39C1F27A703001EB88E /* Debug */ = {
896 target = 6E84E3701F27A700001EB88E /* LifeLog */; 932 isa = XCBuildConfiguration;
897 targetProxy = 6E84E3961F27A703001EB88E /* PBXContainerItemProxy */; 933 buildSettings = {
898 }; 934 ALWAYS_SEARCH_USER_PATHS = NO;
899 /* End PBXTargetDependency section */ 935 CLANG_ANALYZER_NONNULL = YES;
900 936 CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
901 /* Begin PBXVariantGroup section */ 937 CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
902 6E84E3821F27A701001EB88E /* LaunchScreen.storyboard */ = { 938 CLANG_CXX_LIBRARY = "libc++";
903 isa = PBXVariantGroup; 939 CLANG_ENABLE_MODULES = YES;
904 children = ( 940 CLANG_ENABLE_OBJC_ARC = YES;
905 6E84E3831F27A701001EB88E /* Base */, 941 CLANG_WARN_BOOL_CONVERSION = YES;
906 ); 942 CLANG_WARN_CONSTANT_CONVERSION = YES;
907 name = LaunchScreen.storyboard; 943 CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
908 sourceTree = "<group>"; 944 CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
909 }; 945 CLANG_WARN_EMPTY_BODY = YES;
910 /* End PBXVariantGroup section */ 946 CLANG_WARN_ENUM_CONVERSION = YES;
911 947 CLANG_WARN_INFINITE_RECURSION = YES;
912 /* Begin XCBuildConfiguration section */ 948 CLANG_WARN_INT_CONVERSION = YES;
913 6E84E39C1F27A703001EB88E /* Debug */ = { 949 CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
914 isa = XCBuildConfiguration; 950 CLANG_WARN_SUSPICIOUS_MOVE = YES;
915 buildSettings = { 951 CLANG_WARN_UNREACHABLE_CODE = YES;
916 ALWAYS_SEARCH_USER_PATHS = NO; 952 CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
917 CLANG_ANALYZER_NONNULL = YES; 953 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
918 CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 954 COPY_PHASE_STRIP = NO;
919 CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 955 DEBUG_INFORMATION_FORMAT = dwarf;
920 CLANG_CXX_LIBRARY = "libc++"; 956 ENABLE_STRICT_OBJC_MSGSEND = YES;
921 CLANG_ENABLE_MODULES = YES; 957 ENABLE_TESTABILITY = YES;
922 CLANG_ENABLE_OBJC_ARC = YES; 958 GCC_C_LANGUAGE_STANDARD = gnu99;
923 CLANG_WARN_BOOL_CONVERSION = YES; 959 GCC_DYNAMIC_NO_PIC = NO;
924 CLANG_WARN_CONSTANT_CONVERSION = YES; 960 GCC_NO_COMMON_BLOCKS = YES;
925 CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 961 GCC_OPTIMIZATION_LEVEL = 0;
926 CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 962 GCC_PREPROCESSOR_DEFINITIONS = (
927 CLANG_WARN_EMPTY_BODY = YES; 963 "DEBUG=1",
928 CLANG_WARN_ENUM_CONVERSION = YES; 964 "$(inherited)",
929 CLANG_WARN_INFINITE_RECURSION = YES; 965 );
930 CLANG_WARN_INT_CONVERSION = YES; 966 GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
931 CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 967 GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
932 CLANG_WARN_SUSPICIOUS_MOVE = YES; 968 GCC_WARN_UNDECLARED_SELECTOR = YES;
933 CLANG_WARN_UNREACHABLE_CODE = YES; 969 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
934 CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 970 GCC_WARN_UNUSED_FUNCTION = YES;
935 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 971 GCC_WARN_UNUSED_VARIABLE = YES;
936 COPY_PHASE_STRIP = NO; 972 IPHONEOS_DEPLOYMENT_TARGET = 10.3;
937 DEBUG_INFORMATION_FORMAT = dwarf; 973 MTL_ENABLE_DEBUG_INFO = YES;
938 ENABLE_STRICT_OBJC_MSGSEND = YES; 974 ONLY_ACTIVE_ARCH = YES;
939 ENABLE_TESTABILITY = YES; 975 SDKROOT = iphoneos;
940 GCC_C_LANGUAGE_STANDARD = gnu99; 976 TARGETED_DEVICE_FAMILY = "1,2";
941 GCC_DYNAMIC_NO_PIC = NO; 977 };
942 GCC_NO_COMMON_BLOCKS = YES; 978 name = Debug;
943 GCC_OPTIMIZATION_LEVEL = 0; 979 };
944 GCC_PREPROCESSOR_DEFINITIONS = ( 980 6E84E39D1F27A703001EB88E /* Release */ = {
945 "DEBUG=1", 981 isa = XCBuildConfiguration;
946 "$(inherited)", 982 buildSettings = {
947 ); 983 ALWAYS_SEARCH_USER_PATHS = NO;
948 GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 984 CLANG_ANALYZER_NONNULL = YES;
949 GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 985 CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
950 GCC_WARN_UNDECLARED_SELECTOR = YES; 986 CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
951 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 987 CLANG_CXX_LIBRARY = "libc++";
952 GCC_WARN_UNUSED_FUNCTION = YES; 988 CLANG_ENABLE_MODULES = YES;
953 GCC_WARN_UNUSED_VARIABLE = YES; 989 CLANG_ENABLE_OBJC_ARC = YES;
954 IPHONEOS_DEPLOYMENT_TARGET = 10.3; 990 CLANG_WARN_BOOL_CONVERSION = YES;
955 MTL_ENABLE_DEBUG_INFO = YES; 991 CLANG_WARN_CONSTANT_CONVERSION = YES;
956 ONLY_ACTIVE_ARCH = YES; 992 CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
957 SDKROOT = iphoneos; 993 CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
958 TARGETED_DEVICE_FAMILY = "1,2"; 994 CLANG_WARN_EMPTY_BODY = YES;
959 }; 995 CLANG_WARN_ENUM_CONVERSION = YES;
960 name = Debug; 996 CLANG_WARN_INFINITE_RECURSION = YES;
961 }; 997 CLANG_WARN_INT_CONVERSION = YES;
962 6E84E39D1F27A703001EB88E /* Release */ = { 998 CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
963 isa = XCBuildConfiguration; 999 CLANG_WARN_SUSPICIOUS_MOVE = YES;
964 buildSettings = { 1000 CLANG_WARN_UNREACHABLE_CODE = YES;
965 ALWAYS_SEARCH_USER_PATHS = NO; 1001 CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
966 CLANG_ANALYZER_NONNULL = YES; 1002 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
967 CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 1003 COPY_PHASE_STRIP = NO;
968 CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 1004 DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
969 CLANG_CXX_LIBRARY = "libc++"; 1005 ENABLE_NS_ASSERTIONS = NO;
970 CLANG_ENABLE_MODULES = YES; 1006 ENABLE_STRICT_OBJC_MSGSEND = YES;
971 CLANG_ENABLE_OBJC_ARC = YES; 1007 GCC_C_LANGUAGE_STANDARD = gnu99;
972 CLANG_WARN_BOOL_CONVERSION = YES; 1008 GCC_NO_COMMON_BLOCKS = YES;
973 CLANG_WARN_CONSTANT_CONVERSION = YES; 1009 GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
974 CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 1010 GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
975 CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 1011 GCC_WARN_UNDECLARED_SELECTOR = YES;
976 CLANG_WARN_EMPTY_BODY = YES; 1012 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
977 CLANG_WARN_ENUM_CONVERSION = YES; 1013 GCC_WARN_UNUSED_FUNCTION = YES;
978 CLANG_WARN_INFINITE_RECURSION = YES; 1014 GCC_WARN_UNUSED_VARIABLE = YES;
979 CLANG_WARN_INT_CONVERSION = YES; 1015 IPHONEOS_DEPLOYMENT_TARGET = 10.3;
980 CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 1016 MTL_ENABLE_DEBUG_INFO = NO;
981 CLANG_WARN_SUSPICIOUS_MOVE = YES; 1017 SDKROOT = iphoneos;
982 CLANG_WARN_UNREACHABLE_CODE = YES; 1018 TARGETED_DEVICE_FAMILY = "1,2";
983 CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 1019 VALIDATE_PRODUCT = YES;
984 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 1020 };
985 COPY_PHASE_STRIP = NO; 1021 name = Release;
986 DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 1022 };
987 ENABLE_NS_ASSERTIONS = NO; 1023 6E84E39F1F27A703001EB88E /* Debug */ = {
988 ENABLE_STRICT_OBJC_MSGSEND = YES; 1024 isa = XCBuildConfiguration;
989 GCC_C_LANGUAGE_STANDARD = gnu99; 1025 baseConfigurationReference = 0FC2D57087AF4571C57FAE08 /* Pods-LifeLog.debug.xcconfig */;
990 GCC_NO_COMMON_BLOCKS = YES; 1026 buildSettings = {
991 GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 1027 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
992 GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 1028 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
993 GCC_WARN_UNDECLARED_SELECTOR = YES; 1029 DEVELOPMENT_TEAM = "";
994 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 1030 INFOPLIST_FILE = LifeLog/Info.plist;
995 GCC_WARN_UNUSED_FUNCTION = YES; 1031 IPHONEOS_DEPLOYMENT_TARGET = 9.0;
996 GCC_WARN_UNUSED_VARIABLE = YES; 1032 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
997 IPHONEOS_DEPLOYMENT_TARGET = 10.3; 1033 OTHER_LDFLAGS = (
998 MTL_ENABLE_DEBUG_INFO = NO; 1034 "$(inherited)",
999 SDKROOT = iphoneos; 1035 "-framework",
1000 TARGETED_DEVICE_FAMILY = "1,2"; 1036 "\"CircleProgressBar\"",
1001 VALIDATE_PRODUCT = YES; 1037 "-all_load",
1002 }; 1038 "-ObjC",
1003 name = Release; 1039 );
1004 }; 1040 PRODUCT_BUNDLE_IDENTIFIER = mobileworld.jp.lifelog;
1005 6E84E39F1F27A703001EB88E /* Debug */ = { 1041 PRODUCT_NAME = "$(TARGET_NAME)";
1006 isa = XCBuildConfiguration; 1042 PROVISIONING_PROFILE = "";
1007 baseConfigurationReference = 0FC2D57087AF4571C57FAE08 /* Pods-LifeLog.debug.xcconfig */; 1043 PROVISIONING_PROFILE_SPECIFIER = "";
1008 buildSettings = { 1044 };
1009 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 1045 name = Debug;
1010 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 1046 };
1011 DEVELOPMENT_TEAM = ""; 1047 6E84E3A01F27A703001EB88E /* Release */ = {
1012 INFOPLIST_FILE = LifeLog/Info.plist; 1048 isa = XCBuildConfiguration;
1013 IPHONEOS_DEPLOYMENT_TARGET = 9.0; 1049 baseConfigurationReference = 4CFDA5714AF852358A1EB515 /* Pods-LifeLog.release.xcconfig */;
1014 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 1050 buildSettings = {
1015 OTHER_LDFLAGS = ( 1051 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
1016 "$(inherited)", 1052 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
1017 "-framework", 1053 DEVELOPMENT_TEAM = "";
1018 "\"CircleProgressBar\"", 1054 INFOPLIST_FILE = LifeLog/Info.plist;
1019 "-all_load", 1055 IPHONEOS_DEPLOYMENT_TARGET = 9.0;
1020 "-ObjC", 1056 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
1021 ); 1057 OTHER_LDFLAGS = (
1022 PRODUCT_BUNDLE_IDENTIFIER = mobileworld.jp.lifelog; 1058 "$(inherited)",
1023 PRODUCT_NAME = "$(TARGET_NAME)"; 1059 "-framework",
1024 PROVISIONING_PROFILE = ""; 1060 "\"CircleProgressBar\"",
1025 PROVISIONING_PROFILE_SPECIFIER = ""; 1061 "-all_load",
1026 }; 1062 "-ObjC",
1027 name = Debug; 1063 );
1028 }; 1064 PRODUCT_BUNDLE_IDENTIFIER = mobileworld.jp.lifelog;
1029 6E84E3A01F27A703001EB88E /* Release */ = { 1065 PRODUCT_NAME = "$(TARGET_NAME)";
1030 isa = XCBuildConfiguration; 1066 PROVISIONING_PROFILE = "";
1031 baseConfigurationReference = 4CFDA5714AF852358A1EB515 /* Pods-LifeLog.release.xcconfig */; 1067 PROVISIONING_PROFILE_SPECIFIER = "";
1032 buildSettings = { 1068 };
1033 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 1069 name = Release;
1034 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 1070 };
1035 DEVELOPMENT_TEAM = ""; 1071 6E84E3A21F27A703001EB88E /* Debug */ = {
1036 INFOPLIST_FILE = LifeLog/Info.plist; 1072 isa = XCBuildConfiguration;
1037 IPHONEOS_DEPLOYMENT_TARGET = 9.0; 1073 buildSettings = {
1038 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 1074 BUNDLE_LOADER = "$(TEST_HOST)";
1039 OTHER_LDFLAGS = ( 1075 INFOPLIST_FILE = LifeLogTests/Info.plist;
1040 "$(inherited)", 1076 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
1041 "-framework", 1077 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogTests;
1042 "\"CircleProgressBar\"", 1078 PRODUCT_NAME = "$(TARGET_NAME)";
1043 "-all_load", 1079 TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LifeLog.app/LifeLog";
1044 "-ObjC", 1080 };
1045 ); 1081 name = Debug;
1046 PRODUCT_BUNDLE_IDENTIFIER = mobileworld.jp.lifelog; 1082 };
1047 PRODUCT_NAME = "$(TARGET_NAME)"; 1083 6E84E3A31F27A703001EB88E /* Release */ = {
1048 PROVISIONING_PROFILE = ""; 1084 isa = XCBuildConfiguration;
1049 PROVISIONING_PROFILE_SPECIFIER = ""; 1085 buildSettings = {
1050 }; 1086 BUNDLE_LOADER = "$(TEST_HOST)";
1051 name = Release; 1087 INFOPLIST_FILE = LifeLogTests/Info.plist;
1052 }; 1088 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
1053 6E84E3A21F27A703001EB88E /* Debug */ = { 1089 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogTests;
1054 isa = XCBuildConfiguration; 1090 PRODUCT_NAME = "$(TARGET_NAME)";
1055 buildSettings = { 1091 TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LifeLog.app/LifeLog";
1056 BUNDLE_LOADER = "$(TEST_HOST)"; 1092 };
1057 INFOPLIST_FILE = LifeLogTests/Info.plist; 1093 name = Release;
1058 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 1094 };
1059 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogTests; 1095 6E84E3A51F27A703001EB88E /* Debug */ = {
1060 PRODUCT_NAME = "$(TARGET_NAME)"; 1096 isa = XCBuildConfiguration;
1061 TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LifeLog.app/LifeLog"; 1097 buildSettings = {
1062 }; 1098 INFOPLIST_FILE = LifeLogUITests/Info.plist;
1063 name = Debug; 1099 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
1064 }; 1100 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogUITests;
1065 6E84E3A31F27A703001EB88E /* Release */ = { 1101 PRODUCT_NAME = "$(TARGET_NAME)";
1066 isa = XCBuildConfiguration; 1102 TEST_TARGET_NAME = LifeLog;
1067 buildSettings = { 1103 };
1068 BUNDLE_LOADER = "$(TEST_HOST)"; 1104 name = Debug;
1069 INFOPLIST_FILE = LifeLogTests/Info.plist; 1105 };
1070 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 1106 6E84E3A61F27A703001EB88E /* Release */ = {
1071 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogTests; 1107 isa = XCBuildConfiguration;
1072 PRODUCT_NAME = "$(TARGET_NAME)"; 1108 buildSettings = {
1073 TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LifeLog.app/LifeLog"; 1109 INFOPLIST_FILE = LifeLogUITests/Info.plist;
1074 }; 1110 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
1075 name = Release; 1111 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogUITests;
1076 }; 1112 PRODUCT_NAME = "$(TARGET_NAME)";
1077 6E84E3A51F27A703001EB88E /* Debug */ = { 1113 TEST_TARGET_NAME = LifeLog;
1078 isa = XCBuildConfiguration; 1114 };
1079 buildSettings = { 1115 name = Release;
1080 INFOPLIST_FILE = LifeLogUITests/Info.plist; 1116 };
1081 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 1117 /* End XCBuildConfiguration section */
1082 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogUITests; 1118
1083 PRODUCT_NAME = "$(TARGET_NAME)"; 1119 /* Begin XCConfigurationList section */
1084 TEST_TARGET_NAME = LifeLog; 1120 6E84E36C1F27A700001EB88E /* Build configuration list for PBXProject "LifeLog" */ = {
1085 }; 1121 isa = XCConfigurationList;
1086 name = Debug; 1122 buildConfigurations = (
1087 }; 1123 6E84E39C1F27A703001EB88E /* Debug */,
1088 6E84E3A61F27A703001EB88E /* Release */ = { 1124 6E84E39D1F27A703001EB88E /* Release */,
1089 isa = XCBuildConfiguration; 1125 );
1090 buildSettings = { 1126 defaultConfigurationIsVisible = 0;
1091 INFOPLIST_FILE = LifeLogUITests/Info.plist; 1127 defaultConfigurationName = Release;
1092 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 1128 };
1093 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogUITests; 1129 6E84E39E1F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLog" */ = {
1094 PRODUCT_NAME = "$(TARGET_NAME)"; 1130 isa = XCConfigurationList;
1095 TEST_TARGET_NAME = LifeLog; 1131 buildConfigurations = (
1096 }; 1132 6E84E39F1F27A703001EB88E /* Debug */,
1097 name = Release; 1133 6E84E3A01F27A703001EB88E /* Release */,
1098 }; 1134 );
1099 /* End XCBuildConfiguration section */ 1135 defaultConfigurationIsVisible = 0;
1100 1136 defaultConfigurationName = Release;
1101 /* Begin XCConfigurationList section */ 1137 };
1102 6E84E36C1F27A700001EB88E /* Build configuration list for PBXProject "LifeLog" */ = { 1138 6E84E3A11F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogTests" */ = {
1103 isa = XCConfigurationList; 1139 isa = XCConfigurationList;
1104 buildConfigurations = ( 1140 buildConfigurations = (
1105 6E84E39C1F27A703001EB88E /* Debug */, 1141 6E84E3A21F27A703001EB88E /* Debug */,
1106 6E84E39D1F27A703001EB88E /* Release */, 1142 6E84E3A31F27A703001EB88E /* Release */,
1107 ); 1143 );
1108 defaultConfigurationIsVisible = 0; 1144 defaultConfigurationIsVisible = 0;
1109 defaultConfigurationName = Release; 1145 defaultConfigurationName = Release;
1110 }; 1146 };
1111 6E84E39E1F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLog" */ = { 1147 6E84E3A41F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogUITests" */ = {
1112 isa = XCConfigurationList; 1148 isa = XCConfigurationList;
1113 buildConfigurations = ( 1149 buildConfigurations = (
1114 6E84E39F1F27A703001EB88E /* Debug */, 1150 6E84E3A51F27A703001EB88E /* Debug */,
1115 6E84E3A01F27A703001EB88E /* Release */, 1151 6E84E3A61F27A703001EB88E /* Release */,
1116 ); 1152 );
1117 defaultConfigurationIsVisible = 0; 1153 defaultConfigurationIsVisible = 0;
1118 defaultConfigurationName = Release; 1154 defaultConfigurationName = Release;
1119 }; 1155 };
1120 6E84E3A11F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogTests" */ = { 1156 /* End XCConfigurationList section */
1121 isa = XCConfigurationList; 1157 };
1122 buildConfigurations = ( 1158 rootObject = 6E84E3691F27A700001EB88E /* Project object */;
1123 6E84E3A21F27A703001EB88E /* Debug */, 1159 }
1124 6E84E3A31F27A703001EB88E /* Release */, 1160
LifeLog/LifeLog/Assets.xcassets/History/arrow_down.imageset/Contents.json
File was created 1 {
2 "images" : [
3 {
4 "idiom" : "universal",
5 "scale" : "1x"
6 },
7 {
8 "idiom" : "universal",
9 "filename" : "arrow_down.png",
10 "scale" : "2x"
11 },
12 {
13 "idiom" : "universal",
14 "scale" : "3x"
15 }
16 ],
17 "info" : {
18 "version" : 1,
19 "author" : "xcode"
20 }
21 }
LifeLog/LifeLog/Assets.xcassets/History/arrow_down.imageset/arrow_down.png

527 Bytes

LifeLog/LifeLog/BaseTableViewController.m
1 // 1 //
2 // BaseTableViewController.m 2 // BaseTableViewController.m
3 // LifeLog 3 // LifeLog
4 // 4 //
5 // Created by nvtu on 8/11/17. 5 // Created by nvtu on 8/11/17.
6 // Copyright © 2017 PhongNV. All rights reserved. 6 // Copyright © 2017 PhongNV. All rights reserved.
7 // 7 //
8 8
9 #import "BaseTableViewController.h" 9 #import "BaseTableViewController.h"
10 #import "Utilities.h" 10 #import "Utilities.h"
11 11
12 @interface BaseTableViewController () 12 @interface BaseTableViewController ()
13 13
14 @end 14 @end
15 15
16 @implementation BaseTableViewController 16 @implementation BaseTableViewController
17 17
18 - (void)viewDidLoad { 18 - (void)viewDidLoad {
19 [super viewDidLoad]; 19 [super viewDidLoad];
20 _firstTime = false; 20 _firstTime = false;
21 _curPage = 1; 21 _curPage = 1;
22 _isEndOfResult = false; 22 _isEndOfResult = false;
23 _curDataList = [[NSMutableArray alloc] init]; 23 _curDataList = [[NSMutableArray alloc] init];
24 self.refreshControl = [[UIRefreshControl alloc] init]; 24 self.refreshControl = [[UIRefreshControl alloc] init];
25 [self.refreshControl addTarget:self action:@selector(refreshTable) forControlEvents:UIControlEventValueChanged]; 25 [self.refreshControl addTarget:self action:@selector(refreshTable) forControlEvents:UIControlEventValueChanged];
26 [self.tableBase addSubview:self.refreshControl]; 26 [self.tableBase addSubview:self.refreshControl];
27 // Do any additional setup after loading the view. 27 // Do any additional setup after loading the view.
28 } 28 }
29 29
30 - (void)didReceiveMemoryWarning { 30 - (void)didReceiveMemoryWarning {
31 [super didReceiveMemoryWarning]; 31 [super didReceiveMemoryWarning];
32 // Dispose of any resources that can be recreated. 32 // Dispose of any resources that can be recreated.
33 } 33 }
34 34
35 -(void) callRequestToUpdateData { 35 -(void) callRequestToUpdateData {
36 _isLoading = true; 36 _isLoading = true;
37 } 37 }
38 38
39 -(void) resetData { 39 -(void) resetData {
40 _isLoading = false; 40 _isLoading = false;
41 _isEndOfResult = false; 41 _isEndOfResult = false;
42 _firstTime = false; 42 _firstTime = false;
43 _curPage = 1; 43 _curPage = 1;
44 [_curDataList removeAllObjects]; 44 [_curDataList removeAllObjects];
45 [self.tableBase reloadData]; 45 [self.tableBase reloadData];
46 [self callRequestToUpdateData]; 46 [self callRequestToUpdateData];
47 } 47 }
48 48
49 -(void) refreshTable { 49 -(void) refreshTable {
50 [self resetData]; 50 [self resetData];
51 } 51 }
52 52
53 -(void) updateTableData : (NSArray *) array error: (NSError *) error { 53 -(void) updateTableData : (NSArray *) array error: (NSError *) error {
54 BaseTableViewController __weak *weakSelf = self; 54 BaseTableViewController __weak *weakSelf = self;
55 _isLoading = false; 55 _isLoading = false;
56 _firstTime = true; 56 _firstTime = true;
57 if(self.refreshControl != nil) { 57 if(self.refreshControl != nil) {
58 dispatch_async(dispatch_get_main_queue(), ^{ 58 dispatch_async(dispatch_get_main_queue(), ^{
59 [self.refreshControl endRefreshing]; 59 [self.refreshControl endRefreshing];
60 }); 60 });
61 } 61 }
62 if(error == nil) { 62 if(error == nil) {
63 if(array.count != 0) { 63 if(array.count != 0) {
64 if(_curPage == 1) {
65 [_curDataList removeAllObjects];
66 }
64 if(_curPage == 1) { 67 [_curDataList addObjectsFromArray:array];
65 [_curDataList removeAllObjects]; 68 dispatch_async(dispatch_get_main_queue(), ^{
66 } 69 [weakSelf.tableBase reloadData];
67 [_curDataList addObjectsFromArray:array]; 70 });
68 dispatch_async(dispatch_get_main_queue(), ^{ 71 }
69 [weakSelf.tableBase reloadData]; 72 else {
70 }); 73 if(_curPage != 1) {
71 } 74 _isEndOfResult = true;
72 else { 75 _curPage -= 1;
73 if(_curPage != 1) { 76 }
74 _isEndOfResult = true; 77 else {
75 _curPage -= 1; 78 dispatch_async(dispatch_get_main_queue(), ^{
76 } 79 [weakSelf.tableBase reloadData];
77 else { 80 });
78 dispatch_async(dispatch_get_main_queue(), ^{ 81 }
79 [weakSelf.tableBase reloadData]; 82 }
80 }); 83 }
81 } 84 else {
82 } 85 _curPage = MAX(1, _curPage - 1);
83 } 86 dispatch_async(dispatch_get_main_queue(), ^{
84 else { 87 NSString *message = [error.userInfo objectForKey:@"message"];
85 _curPage = MAX(1, _curPage - 1); 88 [Utilities showErrorMessage:message withViewController:weakSelf];
86 dispatch_async(dispatch_get_main_queue(), ^{ 89 });
87 NSString *message = [error.userInfo objectForKey:@"message"]; 90 }
88 [Utilities showErrorMessage:message withViewController:weakSelf]; 91 }
89 }); 92
90 } 93 #pragma mark UITableView Delegate
91 } 94 - (NSInteger) numberOfSectionsInTableView:(UITableView *)tableView {
92 95 if((_curDataList == nil || _curDataList.count == 0) && _firstTime) {
93 #pragma mark UITableView Delegate 96 UILabel * noDataLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, tableView.frame.size.height)];
94 - (NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { 97 noDataLabel.text = @"No data available";
95 if((_curDataList == nil || _curDataList.count == 0) && _firstTime) { 98 noDataLabel.backgroundColor = [UIColor clearColor];
96 UILabel * noDataLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, tableView.frame.size.height)]; 99 noDataLabel.textColor = [UIColor whiteColor];
97 noDataLabel.text = @"No data available"; 100 noDataLabel.textAlignment = NSTextAlignmentCenter;
98 noDataLabel.backgroundColor = [UIColor clearColor]; 101 tableView.backgroundView = noDataLabel;
99 noDataLabel.textColor = [UIColor whiteColor]; 102 tableView.backgroundView.layer.zPosition -= 1;
100 noDataLabel.textAlignment = NSTextAlignmentCenter; 103 return 0;
101 tableView.backgroundView = noDataLabel; 104 }
102 tableView.backgroundView.layer.zPosition -= 1; 105 tableView.backgroundView = nil;
103 return 0; 106 return 1;
104 } 107 }
105 tableView.backgroundView = nil; 108
106 return 1; 109 - (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
107 } 110 return _curDataList.count;
108 111 }
109 - (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 112
110 return _curDataList.count; 113 - (void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
111 } 114 NSInteger lastRowIndex = [tableView numberOfRowsInSection:0] - 1;
112 115 if (indexPath.row == lastRowIndex) {
113 - (void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { 116 // This is the last cell
114 NSInteger lastRowIndex = [tableView numberOfRowsInSection:0] - 1; 117 if(!_isLoading) {
115 if (indexPath.row == lastRowIndex) { 118 _curPage += 1;
116 // This is the last cell 119 [self callRequestToUpdateData];
117 if(!_isLoading) { 120 }
118 _curPage += 1; 121 }
119 [self callRequestToUpdateData]; 122 }
120 } 123 @end
121 } 124
LifeLog/LifeLog/CreateGroupViewController.h
File was created 1 //
2 // CreateGroupViewController.h
3 // LifeLog
4 //
5 // Created by nvtu on 8/19/17.
6 // Copyright © 2017 PhongNV. All rights reserved.
7 //
8
9 #import <UIKit/UIKit.h>
10 #import "BaseViewController.h"
11 #import "AutoTransButton.h"
12 #import "Utilities.h"
13 #import "Entities.h"
14
15 @interface CreateGroupViewController : BaseViewController<UITextFieldDelegate, UITextViewDelegate>
16
17 @property (weak, nonatomic) IBOutlet UITextField *textName;
18 @property (weak, nonatomic) IBOutlet UITextField *textGoalWalk;
19 @property (weak, nonatomic) IBOutlet UITextField *textGoalRun;
20 @property (weak, nonatomic) IBOutlet UITextField *textGoalBike;
21
22 @property (weak, nonatomic) IBOutlet UITextView *textGoal;
23
24 @property (weak, nonatomic) IBOutlet UISwitch *switchWalk;
25 @property (weak, nonatomic) IBOutlet UISwitch *switchBike;
26 @property (weak, nonatomic) IBOutlet UISwitch *switchRun;
27 @property (weak, nonatomic) IBOutlet UISwitch *switchStep;
28 @property (weak, nonatomic) IBOutlet UISwitch *switchGym;
29 @property (weak, nonatomic) IBOutlet UISwitch *switchBegin;
30
31 @property (copy) void (^createGroupSuccess)(GroupObject * group);
32
33 - (IBAction)clickBack:(UIButton *)sender;
34 - (IBAction)clickCreateGroup:(AutoTransButton *)sender;
35
36 @end
1 // 37
LifeLog/LifeLog/CreateGroupViewController.m
File was created 1 //
2 // CreateGroupViewController.m
3 // LifeLog
4 //
5 // Created by nvtu on 8/19/17.
6 // Copyright © 2017 PhongNV. All rights reserved.
7 //
8
9 #import "CreateGroupViewController.h"
10 #import "ServerAPI.h"
11
12 @interface CreateGroupViewController ()
13
14 @end
15
16 @implementation CreateGroupViewController
17
18 - (void)viewDidLoad {
19 [super viewDidLoad];
20 // Do any additional setup after loading the view from its nib.
21 }
22
23 - (void)didReceiveMemoryWarning {
24 [super didReceiveMemoryWarning];
25 // Dispose of any resources that can be recreated.
26 }
27
28 #pragma mark IBAction
29
30 - (IBAction)clickBack:(UIButton *)sender {
31 [self.navigationController popViewControllerAnimated:true];
32 }
33
34 - (IBAction)clickCreateGroup:(AutoTransButton *)sender {
35 NSString *name = self.textName.text;
36 NSString *goal = self.textGoal.text;
37 if(name.length == 0) {
38 [Utilities showErrorMessage:@"Fill name of group!" withViewController:self];
39 return;
40 }
41 else if(name.length >= 255) {
42 [Utilities showErrorMessage:@"Name of group is too long!" withViewController:self];
43 return;
44 }
45 else if(goal.length == 0) {
46 [Utilities showErrorMessage:@"Fill information for goal of group" withViewController:self];
47 return;
48 }
49 if(self.switchWalk.on && [self.textGoalWalk.text intValue] == 0) {
50 [Utilities showErrorMessage:@"Add goal for walk mode" withViewController:self];
51 return;
52 }
53 if(self.switchBike.on && [self.textGoalBike.text intValue] == 0) {
54 [Utilities showErrorMessage:@"Add goal for bike mode" withViewController:self];
55 return;
56 }
57 if(self.switchRun.on && [self.textGoalRun.text intValue] == 0) {
58 [Utilities showErrorMessage:@"Add goal for run mode" withViewController:self];
59 return;
60 }
61 GroupObject *object = [[GroupObject alloc] init];
62 object.name = name;
63 object.goal = goal;
64 object.walkMode = self.switchWalk.on;
65 object.runMode = self.switchRun.on;
66 object.bikeMode = self.switchBike.on;
67 object.stepMode = self.switchStep.on;
68 object.gymMode = self.switchGym.on;
69 object.beginMode = self.switchBegin.on;
70 object.walkGoal = [self.textGoalWalk.text intValue];
71 object.bikeGoal = [self.textGoalBike.text intValue];
72 object.runGoal = [self.textGoalRun.text intValue];
73
74 NSLog(@"%@", object.name);
75 NSLog(@"%@", object.goal);
76 NSLog(@"%d", object.walkGoal);
77 NSLog(@"%d", object.bikeGoal);
78 NSLog(@"%d", object.runGoal);
79 NSLog(@"%d", object.walkMode);
80 NSLog(@"%d", object.runMode);
81 NSLog(@"%d", object.bikeMode);
82 NSLog(@"%d", object.stepMode);
83 NSLog(@"%d", object.gymMode);
84 NSLog(@"%d", object.beginMode);
85
86 NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken];
87 MBProgressHUD *hudView = [MBProgressHUD showHUDAddedTo:self.view animated:true];
88 [[ServerAPI server] requestCreateGroup:token withGroup:object CompletionHandler:^(GroupObject * group, NSError * error) {
89 CreateGroupViewController __weak *weakSelf = self;
90 if(error == nil) {
91 dispatch_async(dispatch_get_main_queue(), ^{
92 if(weakSelf.createGroupSuccess != nil) {
93 [hudView hideAnimated:true];
94 [weakSelf clickBack:nil];
95 weakSelf.createGroupSuccess(object);
96 }
97 });
98 }
99 else {
100 dispatch_async(dispatch_get_main_queue(), ^{
101 [hudView hideAnimated:true];
102 NSString *message = [error.userInfo objectForKey:@"message"];
103 [Utilities showErrorMessage:message withViewController:weakSelf];
104 });
105 }
106 }];
107 }
108
109 #pragma mark UITextView Delegate
110
111 -(BOOL) textFieldShouldReturn:(UITextField *)textField {
112 [self.view endEditing:true];
113 return true;
114 }
115
116 @end
1 // 117
LifeLog/LifeLog/CreateGroupViewController.xib
File was created 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">
3 <device id="retina4_7" orientation="portrait">
4 <adaptation id="fullscreen"/>
5 </device>
6 <dependencies>
7 <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12086"/>
8 <capability name="Aspect ratio constraints" minToolsVersion="5.1"/>
9 <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
10 </dependencies>
11 <objects>
12 <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="CreateGroupViewController">
13 <connections>
14 <outlet property="switchBegin" destination="e63-8i-6aa" id="bbT-m6-3CV"/>
15 <outlet property="switchBike" destination="fGW-Vw-PwQ" id="ncx-kP-qdd"/>
16 <outlet property="switchGym" destination="Yga-UQ-xoU" id="rIN-kO-wmO"/>
17 <outlet property="switchRun" destination="2gX-B2-tkR" id="yak-gV-Cas"/>
18 <outlet property="switchStep" destination="RoR-w7-dNT" id="19b-K3-qAu"/>
19 <outlet property="switchWalk" destination="3xD-aH-JHl" id="OZ9-l7-Rww"/>
20 <outlet property="textGoal" destination="hWb-vU-yVd" id="dp0-yK-P60"/>
21 <outlet property="textGoalBike" destination="eOi-eo-GYn" id="qfW-ns-tsM"/>
22 <outlet property="textGoalRun" destination="3aE-uP-KLS" id="WAE-tl-O94"/>
23 <outlet property="textGoalWalk" destination="4JZ-J2-3D9" id="yHV-mB-rcn"/>
24 <outlet property="textName" destination="pXO-K0-vne" id="ePQ-35-RLr"/>
25 <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
26 </connections>
27 </placeholder>
28 <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
29 <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
30 <rect key="frame" x="0.0" y="0.0" width="320" height="626"/>
31 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
32 <subviews>
33 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="QYv-QM-Bkk" userLabel="ViewHeader">
34 <rect key="frame" x="0.0" y="0.0" width="320" height="46"/>
35 <subviews>
36 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="コミュニティー グループ作成" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9hM-Gv-AxQ" customClass="AutoTransLabel">
37 <rect key="frame" x="0.0" y="0.0" width="320" height="46"/>
38 <fontDescription key="fontDescription" type="system" pointSize="16"/>
39 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
40 <nil key="highlightedColor"/>
41 <userDefinedRuntimeAttributes>
42 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.createGr.title"/>
43 </userDefinedRuntimeAttributes>
44 </label>
45 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="O23-Hy-4Ld">
46 <rect key="frame" x="0.0" y="5" width="70" height="36"/>
47 <constraints>
48 <constraint firstAttribute="width" constant="70" id="8vZ-Ta-Rzv"/>
49 </constraints>
50 <state key="normal" image="today_back_button"/>
51 <connections>
52 <action selector="clickBack:" destination="-1" eventType="touchUpInside" id="BO6-jx-vuO"/>
53 </connections>
54 </button>
55 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fPg-VP-VkU">
56 <rect key="frame" x="275" y="0.0" width="45" height="46"/>
57 <constraints>
58 <constraint firstAttribute="width" constant="45" id="k1W-Oc-mRq"/>
59 </constraints>
60 <state key="normal" image="icon_menu"/>
61 </button>
62 </subviews>
63 <color key="backgroundColor" red="0.098039215690000001" green="0.098039215690000001" blue="0.098039215690000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
64 <constraints>
65 <constraint firstAttribute="trailing" secondItem="9hM-Gv-AxQ" secondAttribute="trailing" id="5f8-Xt-vKd"/>
66 <constraint firstAttribute="bottom" secondItem="9hM-Gv-AxQ" secondAttribute="bottom" id="Q3z-hF-VbV"/>
67 <constraint firstItem="9hM-Gv-AxQ" firstAttribute="top" secondItem="QYv-QM-Bkk" secondAttribute="top" id="XNi-3d-xFW"/>
68 <constraint firstItem="O23-Hy-4Ld" firstAttribute="leading" secondItem="QYv-QM-Bkk" secondAttribute="leading" id="aMc-uz-vGA"/>
69 <constraint firstItem="fPg-VP-VkU" firstAttribute="top" secondItem="QYv-QM-Bkk" secondAttribute="top" id="bLC-DU-cJf"/>
70 <constraint firstItem="9hM-Gv-AxQ" firstAttribute="leading" secondItem="QYv-QM-Bkk" secondAttribute="leading" id="cUY-dT-Rh0"/>
71 <constraint firstAttribute="trailing" secondItem="fPg-VP-VkU" secondAttribute="trailing" id="fn0-SY-e1Z"/>
72 <constraint firstAttribute="height" constant="46" id="lBP-32-aFw"/>
73 <constraint firstItem="O23-Hy-4Ld" firstAttribute="top" secondItem="QYv-QM-Bkk" secondAttribute="top" constant="5" id="ogR-c4-QQ3"/>
74 <constraint firstAttribute="bottom" secondItem="fPg-VP-VkU" secondAttribute="bottom" id="wdr-SH-Wm2"/>
75 <constraint firstAttribute="bottom" secondItem="O23-Hy-4Ld" secondAttribute="bottom" constant="5" id="yJ4-81-rJx"/>
76 </constraints>
77 </view>
78 <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="aKu-bd-xMP" customClass="TPKeyboardAvoidingScrollView">
79 <rect key="frame" x="0.0" y="46" width="320" height="580"/>
80 <subviews>
81 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="9w1-87-U1W">
82 <rect key="frame" x="0.0" y="0.0" width="320" height="580"/>
83 <subviews>
84 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="名称" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ZtU-mt-3Ov" customClass="AutoTransLabel">
85 <rect key="frame" x="8" y="10" width="70" height="30"/>
86 <constraints>
87 <constraint firstAttribute="width" constant="70" id="Zvx-V3-7AW"/>
88 <constraint firstAttribute="height" constant="30" id="nok-hA-mW9"/>
89 </constraints>
90 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
91 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
92 <nil key="highlightedColor"/>
93 <userDefinedRuntimeAttributes>
94 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.createGr.lbl.name"/>
95 </userDefinedRuntimeAttributes>
96 </label>
97 <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="pXO-K0-vne">
98 <rect key="frame" x="88" y="10" width="222" height="30"/>
99 <constraints>
100 <constraint firstAttribute="height" constant="30" id="YJe-TW-hvA"/>
101 </constraints>
102 <nil key="textColor"/>
103 <fontDescription key="fontDescription" type="system" pointSize="14"/>
104 <textInputTraits key="textInputTraits"/>
105 <connections>
106 <outlet property="delegate" destination="-1" id="3NL-Ya-JuM"/>
107 </connections>
108 </textField>
109 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ONn-27-HqB">
110 <rect key="frame" x="10" y="50" width="140" height="120"/>
111 <subviews>
112 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="S2z-DI-pIE">
113 <rect key="frame" x="0.0" y="0.0" width="140" height="40"/>
114 <subviews>
115 <switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="3xD-aH-JHl">
116 <rect key="frame" x="85" y="4" width="51" height="31"/>
117 <constraints>
118 <constraint firstAttribute="width" secondItem="3xD-aH-JHl" secondAttribute="height" multiplier="49:31" id="7LJ-H5-oQR"/>
119 </constraints>
120 <color key="onTintColor" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
121 </switch>
122 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="WALK" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yFv-kp-ag8" customClass="AutoTransLabel">
123 <rect key="frame" x="6" y="10.5" width="47.5" height="20.5"/>
124 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
125 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
126 <nil key="highlightedColor"/>
127 <userDefinedRuntimeAttributes>
128 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.createGr.lbl.walk"/>
129 </userDefinedRuntimeAttributes>
130 </label>
131 </subviews>
132 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
133 <constraints>
134 <constraint firstAttribute="trailing" secondItem="3xD-aH-JHl" secondAttribute="trailing" constant="6" id="KNe-Rx-lun"/>
135 <constraint firstAttribute="height" constant="40" id="akz-T7-d2v"/>
136 <constraint firstItem="3xD-aH-JHl" firstAttribute="centerY" secondItem="S2z-DI-pIE" secondAttribute="centerY" id="oRy-OM-Om1"/>
137 <constraint firstItem="yFv-kp-ag8" firstAttribute="leading" secondItem="S2z-DI-pIE" secondAttribute="leading" constant="6" id="prt-UF-Ori"/>
138 <constraint firstItem="yFv-kp-ag8" firstAttribute="centerY" secondItem="S2z-DI-pIE" secondAttribute="centerY" id="xEl-Rl-8C1"/>
139 </constraints>
140 </view>
141 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="dVh-y2-XTr">
142 <rect key="frame" x="0.0" y="40" width="140" height="40"/>
143 <subviews>
144 <switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="2gX-B2-tkR">
145 <rect key="frame" x="85" y="4" width="51" height="31"/>
146 <constraints>
147 <constraint firstAttribute="width" secondItem="2gX-B2-tkR" secondAttribute="height" multiplier="49:31" id="pBG-Mw-aNK"/>
148 </constraints>
149 <color key="onTintColor" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
150 </switch>
151 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="RUN" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="r9v-yX-mx8" customClass="AutoTransLabel">
152 <rect key="frame" x="6" y="10.5" width="36" height="20.5"/>
153 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
154 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
155 <nil key="highlightedColor"/>
156 <userDefinedRuntimeAttributes>
157 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.createGr.lbl.run"/>
158 </userDefinedRuntimeAttributes>
159 </label>
160 </subviews>
161 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
162 <constraints>
163 <constraint firstItem="2gX-B2-tkR" firstAttribute="centerY" secondItem="dVh-y2-XTr" secondAttribute="centerY" id="bNR-wC-PQG"/>
164 <constraint firstItem="r9v-yX-mx8" firstAttribute="leading" secondItem="dVh-y2-XTr" secondAttribute="leading" constant="6" id="iHM-Q7-Z1Z"/>
165 <constraint firstAttribute="height" constant="40" id="s8W-Ak-VrH"/>
166 <constraint firstAttribute="trailing" secondItem="2gX-B2-tkR" secondAttribute="trailing" constant="6" id="usV-BG-oqp"/>
167 <constraint firstItem="r9v-yX-mx8" firstAttribute="centerY" secondItem="dVh-y2-XTr" secondAttribute="centerY" id="yZW-Wk-raQ"/>
168 </constraints>
169 </view>
170 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="7PQ-zz-N0X">
171 <rect key="frame" x="0.0" y="80" width="140" height="40"/>
172 <subviews>
173 <switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Yga-UQ-xoU">
174 <rect key="frame" x="85" y="4" width="51" height="31"/>
175 <constraints>
176 <constraint firstAttribute="width" secondItem="Yga-UQ-xoU" secondAttribute="height" multiplier="49:31" id="laB-Zs-gOj"/>
177 </constraints>
178 <color key="onTintColor" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
179 </switch>
180 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="ジム" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="EFD-Ys-PqS" customClass="AutoTransLabel">
181 <rect key="frame" x="6" y="10.5" width="35" height="20.5"/>
182 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
183 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
184 <nil key="highlightedColor"/>
185 <userDefinedRuntimeAttributes>
186 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.createGr.lbl.gym"/>
187 </userDefinedRuntimeAttributes>
188 </label>
189 </subviews>
190 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
191 <constraints>
192 <constraint firstItem="EFD-Ys-PqS" firstAttribute="centerY" secondItem="7PQ-zz-N0X" secondAttribute="centerY" id="Ein-vC-mpy"/>
193 <constraint firstAttribute="height" constant="40" id="aKm-hG-Hyh"/>
194 <constraint firstAttribute="trailing" secondItem="Yga-UQ-xoU" secondAttribute="trailing" constant="6" id="cfd-4G-1NF"/>
195 <constraint firstItem="EFD-Ys-PqS" firstAttribute="leading" secondItem="7PQ-zz-N0X" secondAttribute="leading" constant="6" id="ojT-rz-8oC"/>
196 <constraint firstItem="Yga-UQ-xoU" firstAttribute="centerY" secondItem="7PQ-zz-N0X" secondAttribute="centerY" id="xYy-kb-5Sk"/>
197 </constraints>
198 </view>
199 </subviews>
200 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
201 <constraints>
202 <constraint firstItem="dVh-y2-XTr" firstAttribute="top" secondItem="S2z-DI-pIE" secondAttribute="bottom" id="2LH-28-ssn"/>
203 <constraint firstItem="7PQ-zz-N0X" firstAttribute="leading" secondItem="ONn-27-HqB" secondAttribute="leading" id="6md-Y8-lIk"/>
204 <constraint firstAttribute="height" constant="120" id="7Tb-oJ-5eC"/>
205 <constraint firstItem="7PQ-zz-N0X" firstAttribute="top" secondItem="dVh-y2-XTr" secondAttribute="bottom" id="Fsa-Ai-cKQ"/>
206 <constraint firstAttribute="trailing" secondItem="S2z-DI-pIE" secondAttribute="trailing" id="OV6-wK-IJj"/>
207 <constraint firstItem="dVh-y2-XTr" firstAttribute="leading" secondItem="ONn-27-HqB" secondAttribute="leading" id="TFE-bH-HwH"/>
208 <constraint firstAttribute="trailing" secondItem="dVh-y2-XTr" secondAttribute="trailing" id="Vul-EM-V8H"/>
209 <constraint firstItem="S2z-DI-pIE" firstAttribute="top" secondItem="ONn-27-HqB" secondAttribute="top" id="Yf4-Rz-E4g"/>
210 <constraint firstAttribute="trailing" secondItem="7PQ-zz-N0X" secondAttribute="trailing" id="hLr-NV-hyv"/>
211 <constraint firstItem="S2z-DI-pIE" firstAttribute="leading" secondItem="ONn-27-HqB" secondAttribute="leading" id="zMY-Vd-Ge9"/>
212 </constraints>
213 </view>
214 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Kpa-HJ-7cE">
215 <rect key="frame" x="170" y="50" width="140" height="120"/>
216 <subviews>
217 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ALk-sL-SXG">
218 <rect key="frame" x="0.0" y="0.0" width="140" height="40"/>
219 <subviews>
220 <switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="fGW-Vw-PwQ">
221 <rect key="frame" x="85" y="4" width="51" height="31"/>
222 <constraints>
223 <constraint firstAttribute="width" secondItem="fGW-Vw-PwQ" secondAttribute="height" multiplier="49:31" id="qd5-Cg-6pG"/>
224 </constraints>
225 <color key="onTintColor" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
226 </switch>
227 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="BIKE" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="WfE-YM-vVU" customClass="AutoTransLabel">
228 <rect key="frame" x="6" y="10.5" width="36.5" height="20.5"/>
229 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
230 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
231 <nil key="highlightedColor"/>
232 <userDefinedRuntimeAttributes>
233 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.createGr.lbl.bike"/>
234 </userDefinedRuntimeAttributes>
235 </label>
236 </subviews>
237 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
238 <constraints>
239 <constraint firstItem="WfE-YM-vVU" firstAttribute="leading" secondItem="ALk-sL-SXG" secondAttribute="leading" constant="6" id="7xm-U8-L7U"/>
240 <constraint firstAttribute="height" constant="40" id="L4u-uj-rHa"/>
241 <constraint firstItem="fGW-Vw-PwQ" firstAttribute="centerY" secondItem="ALk-sL-SXG" secondAttribute="centerY" id="PBA-tv-gec"/>
242 <constraint firstAttribute="trailing" secondItem="fGW-Vw-PwQ" secondAttribute="trailing" constant="6" id="bHc-Ih-6ar"/>
243 <constraint firstItem="WfE-YM-vVU" firstAttribute="centerY" secondItem="ALk-sL-SXG" secondAttribute="centerY" id="te7-Im-Oqh"/>
244 </constraints>
245 </view>
246 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="4Az-6N-8u4">
247 <rect key="frame" x="0.0" y="40" width="140" height="40"/>
248 <subviews>
249 <switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="RoR-w7-dNT">
250 <rect key="frame" x="85" y="4" width="51" height="31"/>
251 <constraints>
252 <constraint firstAttribute="width" secondItem="RoR-w7-dNT" secondAttribute="height" multiplier="49:31" id="YUz-Eh-EmZ"/>
253 </constraints>
254 <color key="onTintColor" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
255 </switch>
256 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="STEP" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ZyO-6K-2gA" customClass="AutoTransLabel">
257 <rect key="frame" x="6" y="10.5" width="42" height="20.5"/>
258 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
259 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
260 <nil key="highlightedColor"/>
261 <userDefinedRuntimeAttributes>
262 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.createGr.lbl.step"/>
263 </userDefinedRuntimeAttributes>
264 </label>
265 </subviews>
266 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
267 <constraints>
268 <constraint firstAttribute="trailing" secondItem="RoR-w7-dNT" secondAttribute="trailing" constant="6" id="Cc4-W7-Qc8"/>
269 <constraint firstItem="ZyO-6K-2gA" firstAttribute="leading" secondItem="4Az-6N-8u4" secondAttribute="leading" constant="6" id="ER7-Bx-w9j"/>
270 <constraint firstAttribute="height" constant="40" id="Kcy-ij-IsH"/>
271 <constraint firstItem="RoR-w7-dNT" firstAttribute="centerY" secondItem="4Az-6N-8u4" secondAttribute="centerY" id="O1R-k3-iBZ"/>
272 <constraint firstItem="ZyO-6K-2gA" firstAttribute="centerY" secondItem="4Az-6N-8u4" secondAttribute="centerY" id="fWH-tG-gSV"/>
273 </constraints>
274 </view>
275 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ORZ-El-owx">
276 <rect key="frame" x="0.0" y="80" width="140" height="40"/>
277 <subviews>
278 <switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="e63-8i-6aa">
279 <rect key="frame" x="85" y="4" width="51" height="31"/>
280 <constraints>
281 <constraint firstAttribute="width" secondItem="e63-8i-6aa" secondAttribute="height" multiplier="49:31" id="TTd-tM-PrG"/>
282 </constraints>
283 <color key="onTintColor" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
284 </switch>
285 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="初心者" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="RfO-1U-s4W" customClass="AutoTransLabel">
286 <rect key="frame" x="6" y="10.5" width="52" height="20.5"/>
287 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
288 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
289 <nil key="highlightedColor"/>
290 <userDefinedRuntimeAttributes>
291 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.createGr.lbl.begin"/>
292 </userDefinedRuntimeAttributes>
293 </label>
294 </subviews>
295 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
296 <constraints>
297 <constraint firstItem="RfO-1U-s4W" firstAttribute="leading" secondItem="ORZ-El-owx" secondAttribute="leading" constant="6" id="5Vq-B2-215"/>
298 <constraint firstAttribute="trailing" secondItem="e63-8i-6aa" secondAttribute="trailing" constant="6" id="NUX-0H-z8v"/>
299 <constraint firstAttribute="height" constant="40" id="PdI-3J-BTC"/>
300 <constraint firstItem="e63-8i-6aa" firstAttribute="centerY" secondItem="ORZ-El-owx" secondAttribute="centerY" id="Vxw-Vk-POY"/>
301 <constraint firstItem="RfO-1U-s4W" firstAttribute="centerY" secondItem="ORZ-El-owx" secondAttribute="centerY" id="tX1-Qb-pKG"/>
302 </constraints>
303 </view>
304 </subviews>
305 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
306 <constraints>
307 <constraint firstAttribute="height" constant="120" id="1Z3-Ap-Qv1"/>
308 <constraint firstAttribute="trailing" secondItem="ALk-sL-SXG" secondAttribute="trailing" id="2DO-V0-pH1"/>
309 <constraint firstItem="ORZ-El-owx" firstAttribute="top" secondItem="4Az-6N-8u4" secondAttribute="bottom" id="9ap-NH-2HO"/>
310 <constraint firstItem="ALk-sL-SXG" firstAttribute="top" secondItem="Kpa-HJ-7cE" secondAttribute="top" id="Lc0-Xq-rka"/>
311 <constraint firstItem="4Az-6N-8u4" firstAttribute="leading" secondItem="Kpa-HJ-7cE" secondAttribute="leading" id="PVG-jU-N5c"/>
312 <constraint firstAttribute="trailing" secondItem="ORZ-El-owx" secondAttribute="trailing" id="WYz-Kv-H08"/>
313 <constraint firstItem="ORZ-El-owx" firstAttribute="leading" secondItem="Kpa-HJ-7cE" secondAttribute="leading" id="a7E-Je-SkO"/>
314 <constraint firstAttribute="bottom" secondItem="ORZ-El-owx" secondAttribute="bottom" id="dr5-Tk-AAg"/>
315 <constraint firstAttribute="trailing" secondItem="4Az-6N-8u4" secondAttribute="trailing" id="wOX-wa-25X"/>
316 <constraint firstItem="4Az-6N-8u4" firstAttribute="top" secondItem="ALk-sL-SXG" secondAttribute="bottom" id="xgc-3W-TS2"/>
317 <constraint firstItem="ALk-sL-SXG" firstAttribute="leading" secondItem="Kpa-HJ-7cE" secondAttribute="leading" id="yrE-eZ-Vg4"/>
318 </constraints>
319 </view>
320 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="目標" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="KTY-Ed-NJL" customClass="AutoTransLabel">
321 <rect key="frame" x="10" y="178" width="70" height="30"/>
322 <constraints>
323 <constraint firstAttribute="width" constant="70" id="Zlu-jK-x6p"/>
324 <constraint firstAttribute="height" constant="30" id="tVk-5e-QAY"/>
325 </constraints>
326 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
327 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
328 <nil key="highlightedColor"/>
329 <userDefinedRuntimeAttributes>
330 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.createGr.lbl.goal"/>
331 </userDefinedRuntimeAttributes>
332 </label>
333 <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="hWb-vU-yVd">
334 <rect key="frame" x="88" y="178" width="222" height="120"/>
335 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
336 <constraints>
337 <constraint firstAttribute="height" constant="120" id="iYo-mA-ZGR"/>
338 </constraints>
339 <fontDescription key="fontDescription" type="system" pointSize="14"/>
340 <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
341 <userDefinedRuntimeAttributes>
342 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
343 <integer key="value" value="10"/>
344 </userDefinedRuntimeAttribute>
345 </userDefinedRuntimeAttributes>
346 <connections>
347 <outlet property="delegate" destination="-1" id="fVh-oh-7St"/>
348 </connections>
349 </textView>
350 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="マップ" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qdi-Na-zsj" customClass="AutoTransLabel">
351 <rect key="frame" x="10" y="313" width="70" height="30"/>
352 <constraints>
353 <constraint firstAttribute="height" constant="30" id="Ptf-0N-ewh"/>
354 <constraint firstAttribute="width" constant="70" id="mT3-FA-eev"/>
355 </constraints>
356 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
357 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
358 <nil key="highlightedColor"/>
359 <userDefinedRuntimeAttributes>
360 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.createGr.lbl.map"/>
361 </userDefinedRuntimeAttributes>
362 </label>
363 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="1日目標" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qfU-7x-uss" customClass="AutoTransLabel">
364 <rect key="frame" x="10" y="353" width="300" height="30"/>
365 <constraints>
366 <constraint firstAttribute="height" constant="30" id="9dB-8p-Wdv"/>
367 </constraints>
368 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
369 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
370 <nil key="highlightedColor"/>
371 <userDefinedRuntimeAttributes>
372 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.createGr.lbl.goal1day"/>
373 </userDefinedRuntimeAttributes>
374 </label>
375 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="KEy-T1-mdK" customClass="AutoTransButton">
376 <rect key="frame" x="88" y="313" width="110" height="30"/>
377 <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
378 <constraints>
379 <constraint firstAttribute="height" constant="30" id="MWc-Aj-2JZ"/>
380 <constraint firstAttribute="width" constant="110" id="V16-pC-FRv"/>
381 </constraints>
382 <state key="normal" title="マップ作成">
383 <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
384 </state>
385 <userDefinedRuntimeAttributes>
386 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
387 <integer key="value" value="5"/>
388 </userDefinedRuntimeAttribute>
389 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.createGr.bt.map"/>
390 </userDefinedRuntimeAttributes>
391 </button>
392 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="WALK" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3QV-Ov-PmX" customClass="AutoTransLabel">
393 <rect key="frame" x="10" y="391" width="70" height="30"/>
394 <constraints>
395 <constraint firstAttribute="height" constant="30" id="GSj-Tq-AsU"/>
396 <constraint firstAttribute="width" constant="70" id="uIv-Ty-eR2"/>
397 </constraints>
398 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
399 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
400 <nil key="highlightedColor"/>
401 <userDefinedRuntimeAttributes>
402 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.createGr.lbl.walk"/>
403 </userDefinedRuntimeAttributes>
404 </label>
405 <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="4JZ-J2-3D9">
406 <rect key="frame" x="95" y="391" width="130" height="30"/>
407 <constraints>
408 <constraint firstAttribute="height" constant="30" id="JaF-D4-zT2"/>
409 <constraint firstAttribute="width" constant="130" id="qCj-P5-l4y"/>
410 </constraints>
411 <nil key="textColor"/>
412 <fontDescription key="fontDescription" type="system" pointSize="14"/>
413 <textInputTraits key="textInputTraits" keyboardType="numberPad"/>
414 </textField>
415 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="m" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="o9b-Am-GTl">
416 <rect key="frame" x="240" y="391" width="70" height="30"/>
417 <constraints>
418 <constraint firstAttribute="width" constant="70" id="MN1-fg-mf1"/>
419 <constraint firstAttribute="height" constant="30" id="l7E-J3-Syw"/>
420 </constraints>
421 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
422 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
423 <nil key="highlightedColor"/>
424 <userDefinedRuntimeAttributes>
425 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.createGr.lbl.name"/>
426 </userDefinedRuntimeAttributes>
427 </label>
428 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="RUN" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bq4-nh-Cxk" customClass="AutoTransLabel">
429 <rect key="frame" x="10" y="429" width="70" height="30"/>
430 <constraints>
431 <constraint firstAttribute="height" constant="30" id="MmK-Nk-eFt"/>
432 <constraint firstAttribute="width" constant="70" id="nuP-fj-jk2"/>
433 </constraints>
434 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
435 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
436 <nil key="highlightedColor"/>
437 <userDefinedRuntimeAttributes>
438 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.createGr.lbl.run"/>
439 </userDefinedRuntimeAttributes>
440 </label>
441 <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="3aE-uP-KLS">
442 <rect key="frame" x="95" y="429" width="130" height="30"/>
443 <constraints>
444 <constraint firstAttribute="height" constant="30" id="37e-2c-qka"/>
445 <constraint firstAttribute="width" constant="130" id="owG-Ob-QnB"/>
446 </constraints>
447 <nil key="textColor"/>
448 <fontDescription key="fontDescription" type="system" pointSize="14"/>
449 <textInputTraits key="textInputTraits" keyboardType="numberPad"/>
450 </textField>
451 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="m" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="CGA-Xm-2ll">
452 <rect key="frame" x="240" y="429" width="70" height="30"/>
453 <constraints>
454 <constraint firstAttribute="width" constant="70" id="6cf-Y6-Dwq"/>
455 <constraint firstAttribute="height" constant="30" id="dHv-kM-AX2"/>
456 </constraints>
457 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
458 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
459 <nil key="highlightedColor"/>
460 <userDefinedRuntimeAttributes>
461 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.createGr.lbl.name"/>
462 </userDefinedRuntimeAttributes>
463 </label>
464 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="BIKE" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="mvZ-9L-7a8" customClass="AutoTransLabel">
465 <rect key="frame" x="10" y="467" width="70" height="30"/>
466 <constraints>
467 <constraint firstAttribute="height" constant="30" id="hX2-SJ-SMG"/>
468 <constraint firstAttribute="width" constant="70" id="roN-jL-tXp"/>
469 </constraints>
470 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
471 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
472 <nil key="highlightedColor"/>
473 <userDefinedRuntimeAttributes>
474 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.createGr.lbl.bike"/>
475 </userDefinedRuntimeAttributes>
476 </label>
477 <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="eOi-eo-GYn">
478 <rect key="frame" x="95" y="467" width="130" height="30"/>
479 <constraints>
480 <constraint firstAttribute="width" constant="130" id="SBb-jw-NHP"/>
481 <constraint firstAttribute="height" constant="30" id="ida-Ih-wRM"/>
482 </constraints>
483 <nil key="textColor"/>
484 <fontDescription key="fontDescription" type="system" pointSize="14"/>
485 <textInputTraits key="textInputTraits" keyboardType="numberPad"/>
486 </textField>
487 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="m" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="t6i-sV-ycx">
488 <rect key="frame" x="240" y="467" width="70" height="30"/>
489 <constraints>
490 <constraint firstAttribute="width" constant="70" id="DoG-hb-QbI"/>
491 <constraint firstAttribute="height" constant="30" id="pAs-GK-YE3"/>
492 </constraints>
493 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
494 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
495 <nil key="highlightedColor"/>
496 <userDefinedRuntimeAttributes>
497 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.createGr.lbl.name"/>
498 </userDefinedRuntimeAttributes>
499 </label>
500 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="sef-8T-0hQ" customClass="AutoTransButton">
501 <rect key="frame" x="10" y="509" width="300" height="30"/>
502 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
503 <constraints>
504 <constraint firstAttribute="height" constant="30" id="8XP-Y1-hlJ"/>
505 </constraints>
506 <state key="normal" title="グループを作成する">
507 <color key="titleColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
508 </state>
509 <userDefinedRuntimeAttributes>
510 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
511 <integer key="value" value="5"/>
512 </userDefinedRuntimeAttribute>
513 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.createGr.bt.createGr"/>
514 </userDefinedRuntimeAttributes>
515 <connections>
516 <action selector="clickCreateGroup:" destination="-1" eventType="touchUpInside" id="n8x-KR-til"/>
517 </connections>
518 </button>
519 </subviews>
520 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
521 <constraints>
522 <constraint firstItem="KTY-Ed-NJL" firstAttribute="leading" secondItem="9w1-87-U1W" secondAttribute="leading" constant="10" id="08M-tc-J6o"/>
523 <constraint firstItem="3QV-Ov-PmX" firstAttribute="leading" secondItem="qfU-7x-uss" secondAttribute="leading" id="1CN-mt-xv7"/>
524 <constraint firstItem="3aE-uP-KLS" firstAttribute="top" secondItem="bq4-nh-Cxk" secondAttribute="top" id="1YH-oa-gPy"/>
525 <constraint firstAttribute="trailing" secondItem="qfU-7x-uss" secondAttribute="trailing" constant="10" id="1fh-fC-Tvd"/>
526 <constraint firstItem="t6i-sV-ycx" firstAttribute="leading" secondItem="eOi-eo-GYn" secondAttribute="trailing" constant="15" id="2d5-8C-v4q"/>
527 <constraint firstItem="4JZ-J2-3D9" firstAttribute="top" secondItem="3QV-Ov-PmX" secondAttribute="top" id="2rO-Pd-t8O"/>
528 <constraint firstItem="t6i-sV-ycx" firstAttribute="top" secondItem="mvZ-9L-7a8" secondAttribute="top" id="4rc-co-XRr"/>
529 <constraint firstAttribute="trailing" secondItem="sef-8T-0hQ" secondAttribute="trailing" constant="10" id="89W-o8-uLa"/>
530 <constraint firstItem="qdi-Na-zsj" firstAttribute="leading" secondItem="9w1-87-U1W" secondAttribute="leading" constant="10" id="8Cr-Gt-ts7"/>
531 <constraint firstItem="ZtU-mt-3Ov" firstAttribute="leading" secondItem="9w1-87-U1W" secondAttribute="leading" constant="8" id="8QA-ZH-zig"/>
532 <constraint firstItem="KTY-Ed-NJL" firstAttribute="top" secondItem="ONn-27-HqB" secondAttribute="bottom" constant="8" id="8cI-hb-3IU"/>
533 <constraint firstItem="CGA-Xm-2ll" firstAttribute="leading" secondItem="3aE-uP-KLS" secondAttribute="trailing" constant="15" id="AJD-KP-oLm"/>
534 <constraint firstItem="qfU-7x-uss" firstAttribute="leading" secondItem="9w1-87-U1W" secondAttribute="leading" constant="10" id="Akh-2h-Y5Z"/>
535 <constraint firstItem="mvZ-9L-7a8" firstAttribute="leading" secondItem="qfU-7x-uss" secondAttribute="leading" id="CyJ-DC-cmk"/>
536 <constraint firstAttribute="trailing" secondItem="hWb-vU-yVd" secondAttribute="trailing" constant="10" id="Gpv-Cf-wmA"/>
537 <constraint firstItem="ONn-27-HqB" firstAttribute="leading" secondItem="9w1-87-U1W" secondAttribute="leading" constant="10" id="GqQ-jG-2Ss"/>
538 <constraint firstItem="Kpa-HJ-7cE" firstAttribute="top" secondItem="ONn-27-HqB" secondAttribute="top" id="I8B-QJ-8Kw"/>
539 <constraint firstItem="ONn-27-HqB" firstAttribute="top" secondItem="pXO-K0-vne" secondAttribute="bottom" constant="10" id="IUV-iX-zqx"/>
540 <constraint firstItem="pXO-K0-vne" firstAttribute="leading" secondItem="ZtU-mt-3Ov" secondAttribute="trailing" constant="10" id="JQi-T2-HRB"/>
541 <constraint firstItem="o9b-Am-GTl" firstAttribute="top" secondItem="3QV-Ov-PmX" secondAttribute="top" id="Osm-tS-nSE"/>
542 <constraint firstItem="sef-8T-0hQ" firstAttribute="top" secondItem="t6i-sV-ycx" secondAttribute="bottom" constant="12" id="PNY-xc-4go"/>
543 <constraint firstItem="3aE-uP-KLS" firstAttribute="leading" secondItem="bq4-nh-Cxk" secondAttribute="trailing" constant="15" id="QhW-Vx-RNc"/>
544 <constraint firstItem="mvZ-9L-7a8" firstAttribute="top" secondItem="bq4-nh-Cxk" secondAttribute="bottom" constant="8" id="Qu7-jT-zZM"/>
545 <constraint firstItem="qdi-Na-zsj" firstAttribute="top" secondItem="KTY-Ed-NJL" secondAttribute="bottom" constant="105" id="Rbx-GC-D0X"/>
546 <constraint firstItem="eOi-eo-GYn" firstAttribute="leading" secondItem="mvZ-9L-7a8" secondAttribute="trailing" constant="15" id="Rcg-h2-Qfa"/>
547 <constraint firstItem="pXO-K0-vne" firstAttribute="top" secondItem="ZtU-mt-3Ov" secondAttribute="top" id="T8M-OQ-0Wk"/>
548 <constraint firstItem="o9b-Am-GTl" firstAttribute="leading" secondItem="4JZ-J2-3D9" secondAttribute="trailing" constant="15" id="UyE-qx-Mtp"/>
549 <constraint firstItem="4JZ-J2-3D9" firstAttribute="top" secondItem="3QV-Ov-PmX" secondAttribute="top" id="aRK-i9-XKN"/>
550 <constraint firstItem="hWb-vU-yVd" firstAttribute="top" secondItem="Kpa-HJ-7cE" secondAttribute="bottom" constant="8" id="chw-2w-QOv"/>
551 <constraint firstItem="sef-8T-0hQ" firstAttribute="leading" secondItem="9w1-87-U1W" secondAttribute="leading" constant="10" id="dfN-4U-9Oc"/>
552 <constraint firstItem="eOi-eo-GYn" firstAttribute="top" secondItem="mvZ-9L-7a8" secondAttribute="top" id="e8C-p7-obk"/>
553 <constraint firstItem="bq4-nh-Cxk" firstAttribute="top" secondItem="3QV-Ov-PmX" secondAttribute="bottom" constant="8" id="gjA-dw-4j6"/>
554 <constraint firstItem="4JZ-J2-3D9" firstAttribute="leading" secondItem="3QV-Ov-PmX" secondAttribute="trailing" constant="15" id="hCs-KK-0oG"/>
555 <constraint firstItem="Kpa-HJ-7cE" firstAttribute="width" secondItem="ONn-27-HqB" secondAttribute="width" id="i0I-s6-95a"/>
556 <constraint firstAttribute="trailing" secondItem="pXO-K0-vne" secondAttribute="trailing" constant="10" id="j2H-Na-egE"/>
557 <constraint firstItem="bq4-nh-Cxk" firstAttribute="leading" secondItem="qfU-7x-uss" secondAttribute="leading" id="kTU-cF-wdS"/>
558 <constraint firstItem="hWb-vU-yVd" firstAttribute="leading" secondItem="KTY-Ed-NJL" secondAttribute="trailing" constant="8" id="ka5-tK-yxs"/>
559 <constraint firstItem="eOi-eo-GYn" firstAttribute="top" secondItem="mvZ-9L-7a8" secondAttribute="top" id="klA-2z-2Kx"/>
560 <constraint firstItem="3aE-uP-KLS" firstAttribute="top" secondItem="bq4-nh-Cxk" secondAttribute="top" id="pdY-Ef-eHr"/>
561 <constraint firstItem="3QV-Ov-PmX" firstAttribute="top" secondItem="qfU-7x-uss" secondAttribute="bottom" constant="8" id="qLb-a1-eOB"/>
562 <constraint firstItem="Kpa-HJ-7cE" firstAttribute="leading" secondItem="ONn-27-HqB" secondAttribute="trailing" constant="20" id="rMt-rx-zDY"/>
563 <constraint firstItem="KEy-T1-mdK" firstAttribute="top" secondItem="hWb-vU-yVd" secondAttribute="bottom" constant="15" id="sIJ-Rk-gj3"/>
564 <constraint firstItem="ZtU-mt-3Ov" firstAttribute="top" secondItem="9w1-87-U1W" secondAttribute="top" constant="10" id="tBp-C6-fjS"/>
565 <constraint firstItem="CGA-Xm-2ll" firstAttribute="top" secondItem="bq4-nh-Cxk" secondAttribute="top" id="uaB-yp-z16"/>
566 <constraint firstItem="qfU-7x-uss" firstAttribute="top" secondItem="KEy-T1-mdK" secondAttribute="bottom" constant="10" id="w4X-lJ-yL1"/>
567 <constraint firstAttribute="trailing" secondItem="Kpa-HJ-7cE" secondAttribute="trailing" constant="10" id="wvh-Lk-tt9"/>
568 <constraint firstItem="KEy-T1-mdK" firstAttribute="leading" secondItem="qdi-Na-zsj" secondAttribute="trailing" constant="8" id="xGa-CF-V9a"/>
569 </constraints>
570 </view>
571 </subviews>
572 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
573 <constraints>
574 <constraint firstItem="9w1-87-U1W" firstAttribute="leading" secondItem="aKu-bd-xMP" secondAttribute="leading" id="BLm-dD-oN3"/>
575 <constraint firstItem="9w1-87-U1W" firstAttribute="centerY" secondItem="aKu-bd-xMP" secondAttribute="centerY" id="DT9-CK-3ZL"/>
576 <constraint firstItem="9w1-87-U1W" firstAttribute="top" secondItem="aKu-bd-xMP" secondAttribute="top" id="PZC-BJ-DLV"/>
577 <constraint firstAttribute="trailing" secondItem="9w1-87-U1W" secondAttribute="trailing" id="RDM-mt-Fjr"/>
578 <constraint firstAttribute="bottom" secondItem="9w1-87-U1W" secondAttribute="bottom" id="w42-vd-D7e"/>
579 <constraint firstItem="9w1-87-U1W" firstAttribute="centerX" secondItem="aKu-bd-xMP" secondAttribute="centerX" id="wJD-gn-ctq"/>
580 </constraints>
581 </scrollView>
582 </subviews>
583 <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
584 <constraints>
585 <constraint firstItem="aKu-bd-xMP" firstAttribute="top" secondItem="QYv-QM-Bkk" secondAttribute="bottom" id="Q7l-Ra-0wb"/>
586 <constraint firstAttribute="trailing" secondItem="aKu-bd-xMP" secondAttribute="trailing" id="WAl-wE-FB4"/>
587 <constraint firstAttribute="trailing" secondItem="QYv-QM-Bkk" secondAttribute="trailing" id="XdX-OA-ALX"/>
588 <constraint firstItem="aKu-bd-xMP" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="cE7-y5-LL4"/>
589 <constraint firstItem="QYv-QM-Bkk" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="dAn-YE-2s3"/>
590 <constraint firstItem="QYv-QM-Bkk" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="fFF-bj-0uk"/>
591 <constraint firstAttribute="bottom" secondItem="aKu-bd-xMP" secondAttribute="bottom" id="oPE-ST-BIo"/>
592 </constraints>
593 <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
594 <point key="canvasLocation" x="26" y="125"/>
595 </view>
596 </objects>
597 <resources>
598 <image name="icon_menu" width="30" height="30"/>
599 <image name="today_back_button" width="73" height="37"/>
600 </resources>
601 </document>
1 <?xml version="1.0" encoding="UTF-8"?> 602
LifeLog/LifeLog/GroupDetailViewController.xib
1 <?xml version="1.0" encoding="UTF-8"?> 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="12118" systemVersion="16D32" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
3 <device id="retina4_7" orientation="portrait"> 3 <device id="retina4_7" orientation="portrait">
4 <adaptation id="fullscreen"/> 4 <adaptation id="fullscreen"/>
5 </device> 5 </device>
6 <dependencies> 6 <dependencies>
7 <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12086"/> 7 <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12086"/>
8 <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> 8 <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
9 </dependencies> 9 </dependencies>
10 <objects> 10 <objects>
11 <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="GroupDetailViewController"> 11 <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="GroupDetailViewController">
12 <connections> 12 <connections>
13 <outlet property="btJoinGrp" destination="caN-x7-hJz" id="B17-YC-Rmk"/> 13 <outlet property="btJoinGrp" destination="caN-x7-hJz" id="B17-YC-Rmk"/>
14 <outlet property="btSwitch" destination="gBg-k9-tgw" id="3ZZ-Qb-d3a"/> 14 <outlet property="btSwitch" destination="gBg-k9-tgw" id="3ZZ-Qb-d3a"/>
15 <outlet property="imgAva" destination="qYg-Gw-R2b" id="f9w-A2-u4G"/> 15 <outlet property="imgAva" destination="qYg-Gw-R2b" id="f9w-A2-u4G"/>
16 <outlet property="lbbGrpActiveMode" destination="O8z-6V-YFd" id="s8J-3i-pW3"/> 16 <outlet property="lbbGrpActiveMode" destination="O8z-6V-YFd" id="s8J-3i-pW3"/>
17 <outlet property="lblGrpGoal" destination="Bdy-dI-j47" id="AKx-8y-Ifm"/> 17 <outlet property="lblGrpGoal" destination="Bdy-dI-j47" id="AKx-8y-Ifm"/>
18 <outlet property="lblGrpName" destination="YWV-pS-TCo" id="VeU-Ov-uSD"/> 18 <outlet property="lblGrpName" destination="YWV-pS-TCo" id="VeU-Ov-uSD"/>
19 <outlet property="tableBase" destination="4VU-Ye-7Au" id="m1e-cS-Sxf"/> 19 <outlet property="tableBase" destination="4VU-Ye-7Au" id="m1e-cS-Sxf"/>
20 <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> 20 <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
21 </connections> 21 </connections>
22 </placeholder> 22 </placeholder>
23 <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> 23 <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
24 <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT"> 24 <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
25 <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> 25 <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
26 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> 26 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
27 <subviews> 27 <subviews>
28 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="25d-3H-0fr" userLabel="ViewHeader"> 28 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="25d-3H-0fr" userLabel="ViewHeader">
29 <rect key="frame" x="0.0" y="0.0" width="375" height="46"/> 29 <rect key="frame" x="0.0" y="0.0" width="375" height="46"/>
30 <subviews> 30 <subviews>
31 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="SNS" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="DxD-Cy-0wi" customClass="AutoTransLabel"> 31 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="SNS" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="DxD-Cy-0wi" customClass="AutoTransLabel">
32 <rect key="frame" x="0.0" y="0.0" width="375" height="46"/> 32 <rect key="frame" x="0.0" y="0.0" width="375" height="46"/>
33 <fontDescription key="fontDescription" type="system" pointSize="17"/> 33 <fontDescription key="fontDescription" type="system" pointSize="17"/>
34 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 34 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
35 <nil key="highlightedColor"/> 35 <nil key="highlightedColor"/>
36 <userDefinedRuntimeAttributes> 36 <userDefinedRuntimeAttributes>
37 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.grDetail.title"/> 37 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.grDetail.title"/>
38 </userDefinedRuntimeAttributes> 38 </userDefinedRuntimeAttributes>
39 </label> 39 </label>
40 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="O3M-Ba-zHF"> 40 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="O3M-Ba-zHF">
41 <rect key="frame" x="0.0" y="5" width="70" height="36"/> 41 <rect key="frame" x="0.0" y="5" width="70" height="36"/>
42 <constraints> 42 <constraints>
43 <constraint firstAttribute="width" constant="70" id="2Mk-ly-c0t"/> 43 <constraint firstAttribute="width" constant="70" id="2Mk-ly-c0t"/>
44 </constraints> 44 </constraints>
45 <state key="normal" image="today_back_button"/> 45 <state key="normal" image="today_back_button"/>
46 <connections> 46 <connections>
47 <action selector="clickBack:" destination="-1" eventType="touchUpInside" id="gS4-F3-fzi"/> 47 <action selector="clickBack:" destination="-1" eventType="touchUpInside" id="gS4-F3-fzi"/>
48 </connections> 48 </connections>
49 </button> 49 </button>
50 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="y09-DG-Krp"> 50 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="y09-DG-Krp">
51 <rect key="frame" x="330" y="0.0" width="45" height="46"/> 51 <rect key="frame" x="330" y="0.0" width="45" height="46"/>
52 <constraints> 52 <constraints>
53 <constraint firstAttribute="width" constant="45" id="hHa-aE-1zd"/> 53 <constraint firstAttribute="width" constant="45" id="hHa-aE-1zd"/>
54 </constraints> 54 </constraints>
55 <state key="normal" image="icon_menu"/> 55 <state key="normal" image="icon_menu"/>
56 </button> 56 </button>
57 </subviews> 57 </subviews>
58 <color key="backgroundColor" red="0.098039215690000001" green="0.098039215690000001" blue="0.098039215690000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> 58 <color key="backgroundColor" red="0.098039215690000001" green="0.098039215690000001" blue="0.098039215690000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
59 <constraints> 59 <constraints>
60 <constraint firstItem="y09-DG-Krp" firstAttribute="top" secondItem="25d-3H-0fr" secondAttribute="top" id="65z-ZM-a3D"/> 60 <constraint firstItem="y09-DG-Krp" firstAttribute="top" secondItem="25d-3H-0fr" secondAttribute="top" id="65z-ZM-a3D"/>
61 <constraint firstItem="O3M-Ba-zHF" firstAttribute="leading" secondItem="25d-3H-0fr" secondAttribute="leading" id="CQk-IB-W9y"/> 61 <constraint firstItem="O3M-Ba-zHF" firstAttribute="leading" secondItem="25d-3H-0fr" secondAttribute="leading" id="CQk-IB-W9y"/>
62 <constraint firstAttribute="bottom" secondItem="y09-DG-Krp" secondAttribute="bottom" id="IWC-4b-gp6"/> 62 <constraint firstAttribute="bottom" secondItem="y09-DG-Krp" secondAttribute="bottom" id="IWC-4b-gp6"/>
63 <constraint firstItem="O3M-Ba-zHF" firstAttribute="top" secondItem="25d-3H-0fr" secondAttribute="top" constant="5" id="JWL-bD-I2Z"/> 63 <constraint firstItem="O3M-Ba-zHF" firstAttribute="top" secondItem="25d-3H-0fr" secondAttribute="top" constant="5" id="JWL-bD-I2Z"/>
64 <constraint firstItem="DxD-Cy-0wi" firstAttribute="top" secondItem="25d-3H-0fr" secondAttribute="top" id="WYM-oV-6xn"/> 64 <constraint firstItem="DxD-Cy-0wi" firstAttribute="top" secondItem="25d-3H-0fr" secondAttribute="top" id="WYM-oV-6xn"/>
65 <constraint firstAttribute="bottom" secondItem="O3M-Ba-zHF" secondAttribute="bottom" constant="5" id="ZA0-Bo-IQF"/> 65 <constraint firstAttribute="bottom" secondItem="O3M-Ba-zHF" secondAttribute="bottom" constant="5" id="ZA0-Bo-IQF"/>
66 <constraint firstItem="DxD-Cy-0wi" firstAttribute="leading" secondItem="25d-3H-0fr" secondAttribute="leading" id="cbx-fE-OaR"/> 66 <constraint firstItem="DxD-Cy-0wi" firstAttribute="leading" secondItem="25d-3H-0fr" secondAttribute="leading" id="cbx-fE-OaR"/>
67 <constraint firstAttribute="trailing" secondItem="DxD-Cy-0wi" secondAttribute="trailing" id="i0L-w8-Oxm"/> 67 <constraint firstAttribute="trailing" secondItem="DxD-Cy-0wi" secondAttribute="trailing" id="i0L-w8-Oxm"/>
68 <constraint firstAttribute="trailing" secondItem="y09-DG-Krp" secondAttribute="trailing" id="nNZ-jP-k6U"/> 68 <constraint firstAttribute="trailing" secondItem="y09-DG-Krp" secondAttribute="trailing" id="nNZ-jP-k6U"/>
69 <constraint firstAttribute="bottom" secondItem="DxD-Cy-0wi" secondAttribute="bottom" id="oxP-oa-3FJ"/> 69 <constraint firstAttribute="bottom" secondItem="DxD-Cy-0wi" secondAttribute="bottom" id="oxP-oa-3FJ"/>
70 <constraint firstAttribute="height" constant="46" id="u2G-4s-RB5"/> 70 <constraint firstAttribute="height" constant="46" id="u2G-4s-RB5"/>
71 </constraints> 71 </constraints>
72 </view> 72 </view>
73 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YWV-pS-TCo"> 73 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YWV-pS-TCo">
74 <rect key="frame" x="15" y="54" width="345" height="21"/> 74 <rect key="frame" x="15" y="54" width="345" height="21"/>
75 <constraints> 75 <constraints>
76 <constraint firstAttribute="height" constant="21" id="fQO-ja-W9R"/> 76 <constraint firstAttribute="height" constant="21" id="fQO-ja-W9R"/>
77 </constraints> 77 </constraints>
78 <fontDescription key="fontDescription" type="system" pointSize="17"/> 78 <fontDescription key="fontDescription" type="system" pointSize="17"/>
79 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 79 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
80 <nil key="highlightedColor"/> 80 <nil key="highlightedColor"/>
81 </label> 81 </label>
82 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="O8z-6V-YFd"> 82 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="O8z-6V-YFd">
83 <rect key="frame" x="15" y="85" width="243" height="60"/> 83 <rect key="frame" x="15" y="85" width="243" height="60"/>
84 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> 84 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
85 <constraints> 85 <constraints>
86 <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="60" id="Bid-NM-Ree"/> 86 <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="60" id="Bid-NM-Ree"/>
87 </constraints> 87 </constraints>
88 <fontDescription key="fontDescription" type="system" pointSize="14"/> 88 <fontDescription key="fontDescription" type="system" pointSize="14"/>
89 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 89 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
90 <nil key="highlightedColor"/> 90 <nil key="highlightedColor"/>
91 </label> 91 </label>
92 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Bdy-dI-j47"> 92 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Bdy-dI-j47">
93 <rect key="frame" x="15" y="160" width="345" height="80"/> 93 <rect key="frame" x="15" y="160" width="345" height="80"/>
94 <constraints> 94 <constraints>
95 <constraint firstAttribute="height" constant="80" id="jgH-57-Bae"/> 95 <constraint firstAttribute="height" constant="80" id="jgH-57-Bae"/>
96 </constraints> 96 </constraints>
97 <fontDescription key="fontDescription" type="system" pointSize="17"/> 97 <fontDescription key="fontDescription" type="system" pointSize="17"/>
98 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 98 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
99 <nil key="highlightedColor"/> 99 <nil key="highlightedColor"/>
100 </label> 100 </label>
101 <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="qYg-Gw-R2b"> 101 <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="qYg-Gw-R2b">
102 <rect key="frame" x="280" y="85" width="80" height="60"/> 102 <rect key="frame" x="280" y="85" width="80" height="60"/>
103 <constraints> 103 <constraints>
104 <constraint firstAttribute="width" constant="80" id="NEk-vg-zus"/> 104 <constraint firstAttribute="width" constant="80" id="NEk-vg-zus"/>
105 <constraint firstAttribute="height" constant="60" id="qlv-ht-SUw"/> 105 <constraint firstAttribute="height" constant="60" id="qlv-ht-SUw"/>
106 </constraints> 106 </constraints>
107 </imageView> 107 </imageView>
108 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="gBg-k9-tgw" customClass="AutoTransButton"> 108 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="gBg-k9-tgw" customClass="AutoTransButton">
109 <rect key="frame" x="15" y="270" width="162" height="30"/> 109 <rect key="frame" x="15" y="270" width="162" height="30"/>
110 <color key="backgroundColor" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> 110 <color key="backgroundColor" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
111 <constraints> 111 <constraints>
112 <constraint firstAttribute="height" constant="30" id="6Ir-ZZ-NOb"/> 112 <constraint firstAttribute="height" constant="30" id="6Ir-ZZ-NOb"/>
113 </constraints> 113 </constraints>
114 <state key="normal" title="メンバーを見る"> 114 <state key="normal" title="メンバーを見る">
115 <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 115 <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
116 </state> 116 </state>
117 <userDefinedRuntimeAttributes> 117 <userDefinedRuntimeAttributes>
118 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius"> 118 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
119 <integer key="value" value="5"/> 119 <integer key="value" value="5"/>
120 </userDefinedRuntimeAttribute> 120 </userDefinedRuntimeAttribute>
121 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.grDetail.bt.viewMem"/> 121 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.grDetail.bt.viewMem"/>
122 </userDefinedRuntimeAttributes> 122 </userDefinedRuntimeAttributes>
123 <connections> 123 <connections>
124 <action selector="clickSwitch:" destination="-1" eventType="touchUpInside" id="z4V-ym-fqS"/> 124 <action selector="clickSwitch:" destination="-1" eventType="touchUpInside" id="z4V-ym-fqS"/>
125 </connections> 125 </connections>
126 </button> 126 </button>
127 <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="caN-x7-hJz" customClass="AutoTransButton"> 127 <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="caN-x7-hJz" customClass="AutoTransButton">
128 <rect key="frame" x="197" y="270" width="162" height="30"/> 128 <rect key="frame" x="197" y="270" width="162" height="30"/>
129 <color key="backgroundColor" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> 129 <color key="backgroundColor" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
130 <constraints> 130 <constraints>
131 <constraint firstAttribute="height" constant="30" id="gIs-Km-dbx"/> 131 <constraint firstAttribute="height" constant="30" id="gIs-Km-dbx"/>
132 </constraints> 132 </constraints>
133 <state key="normal" title="グループに参加する"> 133 <state key="normal" title="グループに参加する">
134 <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 134 <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
135 </state> 135 </state>
136 <userDefinedRuntimeAttributes> 136 <userDefinedRuntimeAttributes>
137 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius"> 137 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
138 <integer key="value" value="5"/> 138 <integer key="value" value="5"/>
139 </userDefinedRuntimeAttribute> 139 </userDefinedRuntimeAttribute>
140 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.grDetail.bt.joinGr"/> 140 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.grDetail.bt.joinGr"/>
141 </userDefinedRuntimeAttributes> 141 </userDefinedRuntimeAttributes>
142 <connections> 142 <connections>
143 <action selector="clickJoin:" destination="-1" eventType="touchUpInside" id="Ukt-bi-Sw2"/> 143 <action selector="clickJoin:" destination="-1" eventType="touchUpInside" id="Ukt-bi-Sw2"/>
144 </connections> 144 </connections>
145 </button> 145 </button>
146 <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="plain" separatorStyle="none" rowHeight="100" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="4VU-Ye-7Au"> 146 <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="plain" separatorStyle="none" rowHeight="100" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="4VU-Ye-7Au">
147 <rect key="frame" x="0.0" y="310" width="375" height="307"/> 147 <rect key="frame" x="0.0" y="310" width="375" height="307"/>
148 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> 148 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
149 <connections> 149 <connections>
150 <outlet property="dataSource" destination="-1" id="TLB-6X-bRI"/> 150 <outlet property="dataSource" destination="-1" id="TLB-6X-bRI"/>
151 <outlet property="delegate" destination="-1" id="QcJ-Yh-deE"/> 151 <outlet property="delegate" destination="-1" id="QcJ-Yh-deE"/>
152 </connections> 152 </connections>
153 </tableView> 153 </tableView>
154 </subviews> 154 </subviews>
155 <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/> 155 <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
156 <constraints> 156 <constraints>
157 <constraint firstItem="25d-3H-0fr" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="5o2-0w-AL5"/> 157 <constraint firstItem="25d-3H-0fr" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="5o2-0w-AL5"/>
158 <constraint firstAttribute="trailing" secondItem="25d-3H-0fr" secondAttribute="trailing" id="7IX-2R-C0n"/> 158 <constraint firstAttribute="trailing" secondItem="25d-3H-0fr" secondAttribute="trailing" id="7IX-2R-C0n"/>
159 <constraint firstItem="O8z-6V-YFd" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="15" id="81K-BQ-6tU"/> 159 <constraint firstItem="O8z-6V-YFd" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="15" id="81K-BQ-6tU"/>
160 <constraint firstAttribute="bottom" secondItem="4VU-Ye-7Au" secondAttribute="bottom" constant="50" id="GKY-NB-YYF"/> 160 <constraint firstAttribute="bottom" secondItem="4VU-Ye-7Au" secondAttribute="bottom" constant="50" id="GKY-NB-YYF"/>
161 <constraint firstItem="O8z-6V-YFd" firstAttribute="top" secondItem="YWV-pS-TCo" secondAttribute="bottom" constant="10" id="HOo-rH-ysj"/> 161 <constraint firstItem="O8z-6V-YFd" firstAttribute="top" secondItem="YWV-pS-TCo" secondAttribute="bottom" constant="10" id="HOo-rH-ysj"/>
162 <constraint firstItem="Bdy-dI-j47" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="15" id="I1a-bY-ME9"/> 162 <constraint firstItem="Bdy-dI-j47" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="15" id="I1a-bY-ME9"/>
163 <constraint firstItem="YWV-pS-TCo" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="15" id="IS9-SU-75m"/> 163 <constraint firstItem="YWV-pS-TCo" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="15" id="IS9-SU-75m"/>
164 <constraint firstAttribute="trailing" secondItem="Bdy-dI-j47" secondAttribute="trailing" constant="15" id="Ka2-Ki-Pu6"/> 164 <constraint firstAttribute="trailing" secondItem="Bdy-dI-j47" secondAttribute="trailing" constant="15" id="Ka2-Ki-Pu6"/>
165 <constraint firstItem="qYg-Gw-R2b" firstAttribute="top" secondItem="YWV-pS-TCo" secondAttribute="bottom" constant="10" id="One-fp-LTK"/> 165 <constraint firstItem="qYg-Gw-R2b" firstAttribute="top" secondItem="YWV-pS-TCo" secondAttribute="bottom" constant="10" id="One-fp-LTK"/>
166 <constraint firstAttribute="trailing" secondItem="qYg-Gw-R2b" secondAttribute="trailing" constant="15" id="PMd-CT-MVj"/> 166 <constraint firstAttribute="trailing" secondItem="qYg-Gw-R2b" secondAttribute="trailing" constant="15" id="PMd-CT-MVj"/>
167 <constraint firstItem="gBg-k9-tgw" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="15" id="bTf-qW-d1y"/> 167 <constraint firstItem="gBg-k9-tgw" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="15" id="bTf-qW-d1y"/>
168 <constraint firstItem="YWV-pS-TCo" firstAttribute="top" secondItem="25d-3H-0fr" secondAttribute="bottom" constant="8" id="cKj-l3-dgv"/> 168 <constraint firstItem="YWV-pS-TCo" firstAttribute="top" secondItem="25d-3H-0fr" secondAttribute="bottom" constant="8" id="cKj-l3-dgv"/>
169 <constraint firstItem="4VU-Ye-7Au" firstAttribute="top" secondItem="caN-x7-hJz" secondAttribute="bottom" constant="10" id="eQe-Kl-cMp"/> 169 <constraint firstItem="4VU-Ye-7Au" firstAttribute="top" secondItem="caN-x7-hJz" secondAttribute="bottom" constant="10" id="eQe-Kl-cMp"/>
170 <constraint firstItem="4VU-Ye-7Au" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="fru-BN-M5T"/> 170 <constraint firstItem="4VU-Ye-7Au" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="fru-BN-M5T"/>
171 <constraint firstItem="caN-x7-hJz" firstAttribute="top" secondItem="gBg-k9-tgw" secondAttribute="top" id="gUS-Ty-4Hk"/> 171 <constraint firstItem="caN-x7-hJz" firstAttribute="top" secondItem="gBg-k9-tgw" secondAttribute="top" id="gUS-Ty-4Hk"/>
172 <constraint firstItem="qYg-Gw-R2b" firstAttribute="leading" secondItem="O8z-6V-YFd" secondAttribute="trailing" constant="22" id="gzU-2Q-G96"/> 172 <constraint firstItem="qYg-Gw-R2b" firstAttribute="leading" secondItem="O8z-6V-YFd" secondAttribute="trailing" constant="22" id="gzU-2Q-G96"/>
173 <constraint firstItem="caN-x7-hJz" firstAttribute="leading" secondItem="gBg-k9-tgw" secondAttribute="trailing" constant="20" id="hWK-jf-zee"/> 173 <constraint firstItem="caN-x7-hJz" firstAttribute="leading" secondItem="gBg-k9-tgw" secondAttribute="trailing" constant="20" id="hWK-jf-zee"/>
174 <constraint firstItem="25d-3H-0fr" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="jhT-CE-fr7"/> 174 <constraint firstItem="25d-3H-0fr" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="jhT-CE-fr7"/>
175 <constraint firstItem="caN-x7-hJz" firstAttribute="width" secondItem="gBg-k9-tgw" secondAttribute="width" id="mD6-eL-KB7"/> 175 <constraint firstItem="caN-x7-hJz" firstAttribute="width" secondItem="gBg-k9-tgw" secondAttribute="width" id="mD6-eL-KB7"/>
176 <constraint firstItem="gBg-k9-tgw" firstAttribute="top" secondItem="Bdy-dI-j47" secondAttribute="bottom" constant="30" id="mgw-uX-VOK"/> 176 <constraint firstItem="gBg-k9-tgw" firstAttribute="top" secondItem="Bdy-dI-j47" secondAttribute="bottom" constant="30" id="mgw-uX-VOK"/>
177 <constraint firstAttribute="trailing" secondItem="YWV-pS-TCo" secondAttribute="trailing" constant="15" id="rEO-bb-Pqr"/> 177 <constraint firstAttribute="trailing" secondItem="YWV-pS-TCo" secondAttribute="trailing" constant="15" id="rEO-bb-Pqr"/>
178 <constraint firstAttribute="trailing" secondItem="caN-x7-hJz" secondAttribute="trailing" constant="16" id="rRn-Vw-t5g"/> 178 <constraint firstAttribute="trailing" secondItem="caN-x7-hJz" secondAttribute="trailing" constant="16" id="rRn-Vw-t5g"/>
179 <constraint firstItem="Bdy-dI-j47" firstAttribute="top" secondItem="O8z-6V-YFd" secondAttribute="bottom" constant="15" id="xEO-fP-Riz"/> 179 <constraint firstItem="Bdy-dI-j47" firstAttribute="top" secondItem="O8z-6V-YFd" secondAttribute="bottom" constant="15" id="xEO-fP-Riz"/>
180 <constraint firstAttribute="trailing" secondItem="4VU-Ye-7Au" secondAttribute="trailing" id="ylN-vm-QF2"/> 180 <constraint firstAttribute="trailing" secondItem="4VU-Ye-7Au" secondAttribute="trailing" id="ylN-vm-QF2"/>
181 </constraints> 181 </constraints>
182 <point key="canvasLocation" x="24.5" y="52.5"/> 182 <point key="canvasLocation" x="24.5" y="52.5"/>
183 </view> 183 </view>
184 </objects> 184 </objects>
185 <resources> 185 <resources>
186 <image name="icon_menu" width="30" height="30"/> 186 <image name="icon_menu" width="30" height="30"/>
187 <image name="today_back_button" width="73" height="37"/> 187 <image name="today_back_button" width="73" height="37"/>
188 </resources> 188 </resources>
189 </document> 189 </document>
190 190
LifeLog/LifeLog/GroupObject.h
1 // 1 //
2 // GroupObject.h 2 // GroupObject.h
3 // LifeLog 3 // LifeLog
4 // 4 //
5 // Created by nvtu on 8/11/17. 5 // Created by nvtu on 8/11/17.
6 // Copyright © 2017 PhongNV. All rights reserved. 6 // Copyright © 2017 PhongNV. All rights reserved.
7 // 7 //
8 8
9 #import <Foundation/Foundation.h> 9 #import <Foundation/Foundation.h>
10 10
11 @interface GroupObject : NSObject 11 @interface GroupObject : NSObject
12 12
13 @property (nonatomic) int groupID; 13 @property (nonatomic) int groupID;
14 @property (nonatomic) int numSearch; 14 @property (nonatomic) int numSearch;
15 15
16 @property (nonatomic) int walkGoal; 16 @property (nonatomic) int walkGoal;
17 @property (nonatomic) int runGoal; 17 @property (nonatomic) int runGoal;
18 @property (nonatomic) int bikeGoal; 18 @property (nonatomic) int bikeGoal;
19 @property (nonatomic) int stepGoal; 19 @property (nonatomic) int stepGoal;
20 @property (nonatomic) int gymGoal; 20 @property (nonatomic) int gymGoal;
21 @property (nonatomic) int beginGoal; 21 @property (nonatomic) int beginGoal;
22 22
23 @property (nonatomic) BOOL isJoin; 23 @property (nonatomic) BOOL isJoin;
24 @property (nonatomic) BOOL walkMode; 24 @property (nonatomic) BOOL walkMode;
25 @property (nonatomic) BOOL runMode; 25 @property (nonatomic) BOOL runMode;
26 @property (nonatomic) BOOL bikeMode; 26 @property (nonatomic) BOOL bikeMode;
27 @property (nonatomic) BOOL stepMode; 27 @property (nonatomic) BOOL stepMode;
28 @property (nonatomic) BOOL gymMode; 28 @property (nonatomic) BOOL gymMode;
29 @property (nonatomic) BOOL beginMode; 29 @property (nonatomic) BOOL beginMode;
30 30
31 @property (nonatomic, strong) NSString * name; 31 @property (nonatomic, strong) NSString * name;
32 @property (nonatomic, strong) NSString * avatar; 32 @property (nonatomic, strong) NSString * avatar;
33 @property (nonatomic, strong) NSString * goal; 33 @property (nonatomic, strong) NSString * goal;
34 34
35 @property (nonatomic, strong) NSDate * createDate; 35 @property (nonatomic, strong) NSDate * createDate;
36 36
37 -(id) initWithShortData : (NSDictionary *) dict;
37 -(id) initWithData : (NSDictionary *) dict; 38 -(id) initWithData : (NSDictionary *) dict;
38 -(id) initWithData : (NSDictionary *) dict andGroupID : (int) groupID; 39 -(id) initWithData : (NSDictionary *) dict andGroupID : (int) groupID;
39 -(void) updateDate : (GroupObject *) obj; 40 -(void) updateDate : (GroupObject *) obj;
40 @end 41 @end
41 42
LifeLog/LifeLog/GroupObject.m
1 // 1 //
2 // GroupObject.m 2 // GroupObject.m
3 // LifeLog 3 // LifeLog
4 // 4 //
5 // Created by nvtu on 8/11/17. 5 // Created by nvtu on 8/11/17.
6 // Copyright © 2017 PhongNV. All rights reserved. 6 // Copyright © 2017 PhongNV. All rights reserved.
7 // 7 //
8 8
9 #import "GroupObject.h" 9 #import "GroupObject.h"
10 #import "Utilities.h" 10 #import "Utilities.h"
11 11
12 @implementation GroupObject 12 @implementation GroupObject
13
14 -(id) initWithShortData : (NSDictionary *) dict {
15 if([dict objectForKey:@"id"] != nil) {
16 self.groupID = [dict[@"id"] intValue];
17 }
18 if([dict objectForKey:@"group_name"] != nil) {
19 self.name = dict[@"group_name"];
20 }
21 return self;
22 }
23
13 -(id) initWithData : (NSDictionary *) dict { 24 -(id) initWithData : (NSDictionary *) dict {
14 if([dict objectForKey:@"group_id"] != nil) { 25 if([dict objectForKey:@"group_id"] != nil) {
15 self.groupID = [dict[@"group_id"] intValue]; 26 self.groupID = [dict[@"group_id"] intValue];
16 } 27 }
17 if([dict objectForKey:@"group_avatar"] != nil) { 28 if([dict objectForKey:@"group_avatar"] != nil) {
18 self.avatar = dict[@"group_avatar"]; 29 self.avatar = dict[@"group_avatar"];
19 } 30 }
20 if([dict objectForKey:@"created_at"] != nil && ![[dict objectForKey:@"created_at"] isKindOfClass:[NSNull class]]) { 31 if([dict objectForKey:@"created_at"] != nil && ![[dict objectForKey:@"created_at"] isKindOfClass:[NSNull class]]) {
21 NSString *dateString = dict[@"created_at"]; 32 NSString *dateString = dict[@"created_at"];
22 self.createDate = [Utilities dateFromString:dateString withFormat:@"yyyy-MM-dd hh:mm:ss"]; 33 self.createDate = [Utilities dateFromString:dateString withFormat:@"yyyy-MM-dd hh:mm:ss"];
23 } 34 }
24 else { 35 else {
25 self.createDate = [NSDate date]; 36 self.createDate = [NSDate date];
26 } 37 }
27 if([dict objectForKey:@"num_search"] != nil) { 38 if([dict objectForKey:@"num_search"] != nil) {
28 self.numSearch = [dict[@"num_search"] intValue]; 39 self.numSearch = [dict[@"num_search"] intValue];
29 } 40 }
30 [self parseData:dict]; 41 [self parseData:dict];
31 return self; 42 return self;
32 } 43 }
33 44
34 -(id) initWithData : (NSDictionary *) dict andGroupID : (int) groupID { 45 -(id) initWithData : (NSDictionary *) dict andGroupID : (int) groupID {
35 self.groupID = groupID; 46 self.groupID = groupID;
36 if([dict objectForKey:@"join_group"] != nil && ![[dict objectForKey:@"join_group"] isKindOfClass:[NSNull class]]) { 47 if([dict objectForKey:@"join_group"] != nil && ![[dict objectForKey:@"join_group"] isKindOfClass:[NSNull class]]) {
37 self.isJoin = [dict[@"join_group"] boolValue]; 48 self.isJoin = [dict[@"join_group"] boolValue];
38 } 49 }
39 if([dict objectForKey:@"goal"] != nil && ![[dict objectForKey:@"goal"] isKindOfClass:[NSNull class]]) { 50 if([dict objectForKey:@"goal"] != nil && ![[dict objectForKey:@"goal"] isKindOfClass:[NSNull class]]) {
40 self.goal = dict[@"goal"]; 51 self.goal = dict[@"goal"];
41 } 52 }
42 else { 53 else {
43 self.goal = @""; 54 self.goal = @"";
44 } 55 }
45 if([dict objectForKey:@"walk_mode_goal"] != nil && ![[dict objectForKey:@"walk_mode_goal"] isKindOfClass:[NSNull class]]) { 56 if([dict objectForKey:@"walk_mode_goal"] != nil && ![[dict objectForKey:@"walk_mode_goal"] isKindOfClass:[NSNull class]]) {
46 self.walkGoal = [dict[@"walk_mode_goal"] intValue]; 57 self.walkGoal = [dict[@"walk_mode_goal"] intValue];
47 } 58 }
48 if([dict objectForKey:@"run_mode_goal"] != nil && ![[dict objectForKey:@"run_mode_goal"] isKindOfClass:[NSNull class]]) { 59 if([dict objectForKey:@"run_mode_goal"] != nil && ![[dict objectForKey:@"run_mode_goal"] isKindOfClass:[NSNull class]]) {
49 self.runGoal = [dict[@"run_mode_goal"] intValue]; 60 self.runGoal = [dict[@"run_mode_goal"] intValue];
50 } 61 }
51 if([dict objectForKey:@"bike_mode_goal"] != nil && ![[dict objectForKey:@"bike_mode_goal"] isKindOfClass:[NSNull class]]) { 62 if([dict objectForKey:@"bike_mode_goal"] != nil && ![[dict objectForKey:@"bike_mode_goal"] isKindOfClass:[NSNull class]]) {
52 self.bikeGoal = [dict[@"bike_mode_goal"] intValue]; 63 self.bikeGoal = [dict[@"bike_mode_goal"] intValue];
53 } 64 }
54 if([dict objectForKey:@"step_mode_goal"] != nil && ![[dict objectForKey:@"step_mode_goal"] isKindOfClass:[NSNull class]]) { 65 if([dict objectForKey:@"step_mode_goal"] != nil && ![[dict objectForKey:@"step_mode_goal"] isKindOfClass:[NSNull class]]) {
55 self.stepGoal = [dict[@"step_mode_goal"] intValue]; 66 self.stepGoal = [dict[@"step_mode_goal"] intValue];
56 } 67 }
57 if([dict objectForKey:@"gym_mode_goal"] != nil && ![[dict objectForKey:@"gym_mode_goal"] isKindOfClass:[NSNull class]]) { 68 if([dict objectForKey:@"gym_mode_goal"] != nil && ![[dict objectForKey:@"gym_mode_goal"] isKindOfClass:[NSNull class]]) {
58 self.gymGoal = [dict[@"gym_mode_goal"] intValue]; 69 self.gymGoal = [dict[@"gym_mode_goal"] intValue];
59 } 70 }
60 if([dict objectForKey:@"beginer_mode_goal"] != nil && ![[dict objectForKey:@"beginer_mode_goal"] isKindOfClass:[NSNull class]]) { 71 if([dict objectForKey:@"beginer_mode_goal"] != nil && ![[dict objectForKey:@"beginer_mode_goal"] isKindOfClass:[NSNull class]]) {
61 self.beginGoal = [dict[@"beginer_mode_goal"] intValue]; 72 self.beginGoal = [dict[@"beginer_mode_goal"] intValue];
62 } 73 }
63 [self parseData:dict]; 74 [self parseData:dict];
64 return self; 75 return self;
65 } 76 }
66 77
67 -(void) parseData : (NSDictionary *) dict { 78 -(void) parseData : (NSDictionary *) dict {
68 if([dict objectForKey:@"group_name"] != nil) { 79 if([dict objectForKey:@"group_name"] != nil) {
69 self.name = dict[@"group_name"]; 80 self.name = dict[@"group_name"];
70 } 81 }
71 if([dict objectForKey:@"walk_mode_active"] != nil && ![[dict objectForKey:@"walk_mode_active"] isKindOfClass:[NSNull class]]) { 82 if([dict objectForKey:@"walk_mode_active"] != nil && ![[dict objectForKey:@"walk_mode_active"] isKindOfClass:[NSNull class]]) {
72 self.walkMode = [dict[@"walk_mode_active"] boolValue]; 83 self.walkMode = [dict[@"walk_mode_active"] boolValue];
73 } 84 }
74 if([dict objectForKey:@"run_mode_active"] != nil && ![[dict objectForKey:@"run_mode_active"] isKindOfClass:[NSNull class]]) { 85 if([dict objectForKey:@"run_mode_active"] != nil && ![[dict objectForKey:@"run_mode_active"] isKindOfClass:[NSNull class]]) {
75 self.runMode = [dict[@"run_mode_active"] boolValue]; 86 self.runMode = [dict[@"run_mode_active"] boolValue];
76 } 87 }
77 if([dict objectForKey:@"bike_mode_active"] != nil && ![[dict objectForKey:@"bike_mode_active"] isKindOfClass:[NSNull class]]) { 88 if([dict objectForKey:@"bike_mode_active"] != nil && ![[dict objectForKey:@"bike_mode_active"] isKindOfClass:[NSNull class]]) {
78 self.bikeMode = [dict[@"bike_mode_active"] boolValue]; 89 self.bikeMode = [dict[@"bike_mode_active"] boolValue];
79 } 90 }
80 if([dict objectForKey:@"step_mode_active"] != nil && ![[dict objectForKey:@"step_mode_active"] isKindOfClass:[NSNull class]]) { 91 if([dict objectForKey:@"step_mode_active"] != nil && ![[dict objectForKey:@"step_mode_active"] isKindOfClass:[NSNull class]]) {
81 self.stepMode = [dict[@"step_mode_active"] boolValue]; 92 self.stepMode = [dict[@"step_mode_active"] boolValue];
82 } 93 }
83 if([dict objectForKey:@"gym_mode_active"] != nil && ![[dict objectForKey:@"gym_mode_active"] isKindOfClass:[NSNull class]]) { 94 if([dict objectForKey:@"gym_mode_active"] != nil && ![[dict objectForKey:@"gym_mode_active"] isKindOfClass:[NSNull class]]) {
84 self.gymMode = [dict[@"gym_mode_active"] boolValue]; 95 self.gymMode = [dict[@"gym_mode_active"] boolValue];
85 } 96 }
86 if([dict objectForKey:@"beginer_mode_active"] != nil && ![[dict objectForKey:@"beginer_mode_active"] isKindOfClass:[NSNull class]]) { 97 if([dict objectForKey:@"beginer_mode_active"] != nil && ![[dict objectForKey:@"beginer_mode_active"] isKindOfClass:[NSNull class]]) {
87 self.beginMode = [dict[@"beginer_mode_active"] boolValue]; 98 self.beginMode = [dict[@"beginer_mode_active"] boolValue];
88 } 99 }
89 } 100 }
90 101
91 -(void) updateDate : (GroupObject *) obj { 102 -(void) updateDate : (GroupObject *) obj {
92 self.name = obj.name; 103 self.name = obj.name;
93 self.walkMode = obj.walkMode; 104 self.walkMode = obj.walkMode;
94 self.runMode = obj.runMode; 105 self.runMode = obj.runMode;
95 self.bikeMode = obj.bikeMode; 106 self.bikeMode = obj.bikeMode;
96 self.stepMode = obj.stepMode; 107 self.stepMode = obj.stepMode;
97 self.gymMode = obj.gymMode; 108 self.gymMode = obj.gymMode;
98 self.beginMode = obj.beginMode; 109 self.beginMode = obj.beginMode;
99 self.isJoin = obj.isJoin; 110 self.isJoin = obj.isJoin;
100 self.goal = obj.goal; 111 self.goal = obj.goal;
101 self.walkGoal = obj.walkGoal; 112 self.walkGoal = obj.walkGoal;
102 self.runGoal = obj.runGoal; 113 self.runGoal = obj.runGoal;
103 self.bikeGoal = obj.bikeGoal; 114 self.bikeGoal = obj.bikeGoal;
104 self.stepGoal = obj.stepGoal; 115 self.stepGoal = obj.stepGoal;
105 self.gymGoal = obj.gymGoal; 116 self.gymGoal = obj.gymGoal;
106 self.beginGoal = obj.beginGoal; 117 self.beginGoal = obj.beginGoal;
107 } 118 }
108 119
109 @end 120 @end
110 121
LifeLog/LifeLog/Localizable.strings
No preview for this file type
LifeLog/LifeLog/MyGroupViewController.h
File was created 1 //
2 // MyGroupViewController.h
3 // LifeLog
4 //
5 // Created by nvtu on 8/20/17.
6 // Copyright © 2017 PhongNV. All rights reserved.
7 //
8
9 #import <UIKit/UIKit.h>
10 #import "BaseTableViewController.h"
11 #import "AutoTransButton.h"
12 #import "Entities.h"
13
14 @interface MyGroupViewController : BaseTableViewController {
15 NSMutableArray *_curListGrp;
16 GroupObject *_curGroup;
17 BOOL isMemberList;
18 }
19
20 @property (weak, nonatomic) IBOutlet UITableView *tableGrp;
21
22 @property (weak, nonatomic) IBOutlet UILabel *lblGroupName;
23 @property (weak, nonatomic) IBOutlet UILabel *lblActiveMode;
24 @property (weak, nonatomic) IBOutlet UILabel *lblGoal;
25 @property (weak, nonatomic) IBOutlet UIButton *btShowGrp;
26 @property (weak, nonatomic) IBOutlet AutoTransButton *btSwitch;
27
28 - (IBAction)clickBack:(id)sender;
29 - (IBAction)clickShowGrp:(id)sender;
30 - (IBAction)clickSwitch:(id)sender;
31
32 @end
33
LifeLog/LifeLog/MyGroupViewController.m
File was created 1 //
2 // MyGroupViewController.m
3 // LifeLog
4 //
5 // Created by nvtu on 8/20/17.
6 // Copyright © 2017 PhongNV. All rights reserved.
7 //
8
9 #import "MyGroupViewController.h"
10 #import <SDWebImage/UIImageView+WebCache.h>
11
12 #import "Utilities.h"
13 #import "ServerAPI.h"
14 #import "SNSRecentTopicTableViewCell.h"
15
16 @interface MyGroupViewController ()
17
18 @end
19
20 @implementation MyGroupViewController
21
22 - (void)viewDidLoad {
23 [super viewDidLoad];
24 isMemberList = false;
25 _curListGrp = [[NSMutableArray alloc] init];
26 [self.tableBase registerNib:[UINib nibWithNibName:@"SNSRecentTopicTableViewCell" bundle:nil] forCellReuseIdentifier:@"RecentTopicCell"];
27
28 [self requestGroupList];
29 // Do any additional setup after loading the view from its nib.
30 }
31
32 - (void)didReceiveMemoryWarning {
33 [super didReceiveMemoryWarning];
34 // Dispose of any resources that can be recreated.
35 }
36
37 - (void)setupView {
38 if(_curGroup != nil) {
39 [self.lblGoal setText:_curGroup.goal];
40 NSString *mode = @"";
41 if(_curGroup.runMode) {
42 mode = [mode stringByAppendingString:NSLocalizedString(@"lifelog.grDetail.mode.running", nil)];
43 mode = [mode stringByAppendingString:@"\n"];
44 }
45 if(_curGroup.walkMode) {
46 mode = [mode stringByAppendingString:NSLocalizedString(@"lifelog.grDetail.mode.walking", nil)];
47 mode = [mode stringByAppendingString:@"\n"];
48 }
49 if(_curGroup.bikeMode) {
50 mode = [mode stringByAppendingString:NSLocalizedString(@"lifelog.grDetail.mode.bike", nil)];
51 mode = [mode stringByAppendingString:@"\n"];
52 }
53 if(_curGroup.stepMode) {
54 mode = [mode stringByAppendingString:NSLocalizedString(@"lifelog.grDetail.mode.step", nil)];
55 mode = [mode stringByAppendingString:@"\n"];
56 }
57 if(_curGroup.beginMode) {
58 mode = [mode stringByAppendingString:NSLocalizedString(@"lifelog.grDetail.mode.begin", nil)];
59 mode = [mode stringByAppendingString:@"\n"];
60 }
61 if(_curGroup.gymMode) {
62 mode = [mode stringByAppendingString:NSLocalizedString(@"lifelog.grDetail.mode.gym", nil)];
63 mode = [mode stringByAppendingString:@"\n"];
64 }
65 NSRange range = [mode rangeOfString:@"\n" options:NSBackwardsSearch];
66 if(range.length > 0) {
67 mode = [mode stringByReplacingOccurrencesOfString:@"\n" withString:@"" options:NSBackwardsSearch range:range];
68 }
69 self.lblActiveMode.text = mode;
70 }
71 }
72
73 #pragma mark IBAction
74
75 - (IBAction)clickBack:(id)sender {
76 [self.navigationController popViewControllerAnimated:true];
77 }
78
79 - (IBAction)clickShowGrp:(id)sender {
80 self.tableGrp.hidden = !self.tableGrp.isHidden;
81 }
82
83 - (IBAction)clickSwitch:(id)sender {
84 isMemberList = !isMemberList;
85 if(isMemberList) {
86 [sender setTitle:NSLocalizedString(@"lifelog.grDetail.bt.viewTweet", nil) forState:UIControlStateNormal];
87 }
88 else {
89 [sender setTitle:NSLocalizedString(@"lifelog.grDetail.bt.viewMem", nil) forState:UIControlStateNormal];
90 }
91 [sender setUserInteractionEnabled:false];
92 [self resetData];
93 }
94
95 #pragma mark UITableView Delegate
96 -(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView {
97 if(tableView == self.tableGrp)
98 return 1;
99 else
100 return [super numberOfSectionsInTableView:tableView];
101 }
102
103 - (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
104 if(tableView == self.tableGrp)
105 return _curListGrp.count;
106 else
107 return [super tableView:tableView numberOfRowsInSection:section];
108 }
109
110 - (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
111 if(tableView == self.tableGrp) {
112 UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"GroupCell"];
113 if(cell == nil) {
114 cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"GroupCell"];
115 }
116 GroupObject *object = [_curListGrp objectAtIndex:indexPath.row];
117 cell.textLabel.text = object.name;
118 return cell;
119 }
120 else {
121 SNSRecentTopicTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"RecentTopicCell"];
122 if(isMemberList) {
123 MemberObject *object = [_curDataList objectAtIndex:indexPath.row];
124 if(object.avatar && ![object.avatar isKindOfClass:[NSNull class]]) {
125 [cell.imgAvatar sd_setImageWithURL:[NSURL URLWithString:[Utilities getImageLink:object.avatar]]];
126 }
127 else {
128 [cell.imgAvatar setImage:[UIImage imageNamed:@"avatar_default"]];
129 }
130 cell.lblUsername.text = @"";
131 cell.lblDateTime.text = @"";
132 cell.lblDes.text = object.userName;
133 cell.lblMode.text = @"";
134 cell.lblDistance.text = @"";
135 cell.lblDuration.text = @"";
136 }
137 else {
138 TweetObject *object = [_curDataList objectAtIndex:indexPath.row];
139 if(object.avatar && ![object.avatar isKindOfClass:[NSNull class]]) {
140 [cell.imgAvatar sd_setImageWithURL:[NSURL URLWithString:[Utilities getImageLink:object.avatar]]];
141 }
142 else {
143 [cell.imgAvatar setImage:[UIImage imageNamed:@"avatar_default"]];
144 }
145 cell.lblDateTime.text = [Utilities stringFromDate:object.createDate withFormat:@"YYYY/MM/dd hh:mm"];
146 cell.lblUsername.text = object.userName;
147 cell.lblDes.text = object.content;
148 cell.lblMode.text = object.mode;
149 cell.lblDistance.text = [NSString stringWithFormat:@"%.0f m", object.distance];
150 cell.lblDuration.text = object.time;
151 }
152 return cell;
153 }
154 }
155
156 - (void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
157 if(tableView == self.tableGrp) {
158 return;
159 }
160 [super tableView:tableView willDisplayCell:cell forRowAtIndexPath:indexPath];
161 }
162
163 -(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
164 if(tableView == self.tableGrp) {
165 [tableView setHidden:true];
166 [self resetGroupData:indexPath.row];
167 }
168 }
169
170 #pragma mark Private Function
171
172 - (void) resetGroupData : (int) index {
173 _curGroup = [_curListGrp objectAtIndex:index];
174 self.lblGroupName.text = _curGroup.name;
175 [_curDataList removeAllObjects];
176 [self.tableBase reloadData];
177 [self requestGroupDetail];
178 }
179
180 - (void) requestGroupList {
181 NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken];
182 MBProgressHUD *hudView = [MBProgressHUD showHUDAddedTo:self.view animated:true];
183 [[ServerAPI server] requestGroupList:token CompletionHandler:^(NSArray *array, NSError *error) {
184 if(error == nil) {
185 [_curListGrp removeAllObjects];
186 [_curListGrp addObjectsFromArray:array];
187 MyGroupViewController __weak *weakSelf = self;
188 dispatch_async(dispatch_get_main_queue(), ^{
189 [hudView hideAnimated:true];
190 [self.tableGrp reloadData];
191 if(_curListGrp.count > 0) {
192 [weakSelf resetGroupData:0];
193 }
194 else {
195 weakSelf.lblGroupName.text = @"No Group";
196 }
197 [weakSelf.btShowGrp setEnabled:(_curListGrp.count > 0)];
198 });
199 }
200 }];
201 }
202
203 - (void) requestGroupDetail {
204 NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken];
205 MBProgressHUD *hudView = [MBProgressHUD showHUDAddedTo:self.view animated:true];
206 [[ServerAPI server] getGroupDetail:token withGroupID:_curGroup.groupID CompletionHandler:^(GroupObject *object, NSError *error) {
207 MyGroupViewController __weak *weakSelf = self;
208 [_curGroup updateDate:object];
209 dispatch_async(dispatch_get_main_queue(), ^{
210 [hudView hideAnimated:true];
211 [weakSelf setupView];
212 [weakSelf callRequestToUpdateData];
213 });
214 }];
215 }
216
217 -(void) callRequestToUpdateData {
218 [super callRequestToUpdateData];
219
220 NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken];
221 MBProgressHUD *hudView = nil;
222 if(_curPage == 1 && !self.refreshControl.isRefreshing) {
223 hudView = [MBProgressHUD showHUDAddedTo:self.view animated:true];
224 }
225 if(isMemberList) {
226 [[ServerAPI server] requestMemberList:token groupID:_curGroup.groupID withPage:_curPage CompletionHandler:^(NSArray *array, NSError *error){
227 dispatch_async(dispatch_get_main_queue(), ^{
228 if(hudView != nil) {
229 [hudView hideAnimated:true];
230 }
231 });
232 MyGroupViewController __weak *weakSelf = self;
233 [weakSelf updateTableData:array error:error];
234 [weakSelf.btSwitch setUserInteractionEnabled:true];
235 }];
236 }
237 else {
238 [[ServerAPI server] requestTweetsList:token groupID:_curGroup.groupID withPage:_curPage CompletionHandler:^(NSArray *array, NSError *error){
239 dispatch_async(dispatch_get_main_queue(), ^{
240 if(hudView != nil) {
241 [hudView hideAnimated:true];
242 }
243 });
244 MyGroupViewController __weak *weakSelf = self;
245 [weakSelf updateTableData:array error:error];
246 [weakSelf.btSwitch setUserInteractionEnabled:true];
247 }];
248 }
249 }
250
251 @end
252
LifeLog/LifeLog/MyGroupViewController.xib
File was created 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">
3 <device id="retina4_7" orientation="portrait">
4 <adaptation id="fullscreen"/>
5 </device>
6 <dependencies>
7 <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12086"/>
8 <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
9 </dependencies>
10 <objects>
11 <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="MyGroupViewController">
12 <connections>
13 <outlet property="btShowGrp" destination="MvK-5R-njL" id="bcb-N7-jbu"/>
14 <outlet property="btSwitch" destination="eBu-7L-nsx" id="od6-v0-6eh"/>
15 <outlet property="lblActiveMode" destination="P1r-ft-imP" id="WRV-YQ-1IY"/>
16 <outlet property="lblGoal" destination="ftA-wa-19F" id="Ziv-cg-at5"/>
17 <outlet property="lblGroupName" destination="xXv-SO-m4h" id="yGe-lh-RC3"/>
18 <outlet property="tableBase" destination="ubS-v9-zCa" id="gea-9H-gpI"/>
19 <outlet property="tableGrp" destination="dtD-J5-dze" id="ahq-Cd-85X"/>
20 <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
21 </connections>
22 </placeholder>
23 <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
24 <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
25 <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
26 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
27 <subviews>
28 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="vxT-xe-7mV" userLabel="ViewHeader">
29 <rect key="frame" x="0.0" y="0.0" width="375" height="46"/>
30 <subviews>
31 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="SNS" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Txe-1I-61m" customClass="AutoTransLabel">
32 <rect key="frame" x="0.0" y="0.0" width="375" height="46"/>
33 <fontDescription key="fontDescription" type="system" pointSize="17"/>
34 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
35 <nil key="highlightedColor"/>
36 <userDefinedRuntimeAttributes>
37 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.grDetail.title"/>
38 </userDefinedRuntimeAttributes>
39 </label>
40 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="DjI-qB-WTG">
41 <rect key="frame" x="0.0" y="5" width="70" height="36"/>
42 <constraints>
43 <constraint firstAttribute="width" constant="70" id="Q1G-tI-sgx"/>
44 </constraints>
45 <state key="normal" image="today_back_button"/>
46 <connections>
47 <action selector="clickBack:" destination="-1" eventType="touchUpInside" id="93y-uZ-J2W"/>
48 </connections>
49 </button>
50 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="7gh-nf-sKZ">
51 <rect key="frame" x="330" y="0.0" width="45" height="46"/>
52 <constraints>
53 <constraint firstAttribute="width" constant="45" id="Vw3-60-kvV"/>
54 </constraints>
55 <state key="normal" image="icon_menu"/>
56 </button>
57 </subviews>
58 <color key="backgroundColor" red="0.098039215690000001" green="0.098039215690000001" blue="0.098039215690000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
59 <constraints>
60 <constraint firstAttribute="trailing" secondItem="7gh-nf-sKZ" secondAttribute="trailing" id="2JD-YU-WS2"/>
61 <constraint firstItem="Txe-1I-61m" firstAttribute="leading" secondItem="vxT-xe-7mV" secondAttribute="leading" id="30c-J3-6ba"/>
62 <constraint firstAttribute="bottom" secondItem="7gh-nf-sKZ" secondAttribute="bottom" id="61g-Gv-ka0"/>
63 <constraint firstAttribute="bottom" secondItem="Txe-1I-61m" secondAttribute="bottom" id="BZZ-wj-MGj"/>
64 <constraint firstItem="7gh-nf-sKZ" firstAttribute="top" secondItem="vxT-xe-7mV" secondAttribute="top" id="DKT-Ea-U3k"/>
65 <constraint firstAttribute="trailing" secondItem="Txe-1I-61m" secondAttribute="trailing" id="WA1-1W-49C"/>
66 <constraint firstItem="DjI-qB-WTG" firstAttribute="leading" secondItem="vxT-xe-7mV" secondAttribute="leading" id="tA3-JF-Kjj"/>
67 <constraint firstAttribute="bottom" secondItem="DjI-qB-WTG" secondAttribute="bottom" constant="5" id="uFc-I1-M2c"/>
68 <constraint firstItem="Txe-1I-61m" firstAttribute="top" secondItem="vxT-xe-7mV" secondAttribute="top" id="ucO-rK-wAV"/>
69 <constraint firstItem="DjI-qB-WTG" firstAttribute="top" secondItem="vxT-xe-7mV" secondAttribute="top" constant="5" id="vR3-xv-3hD"/>
70 <constraint firstAttribute="height" constant="46" id="yIJ-Mu-bPA"/>
71 </constraints>
72 </view>
73 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="hhh-nO-yn5">
74 <rect key="frame" x="15" y="54" width="345" height="36"/>
75 <subviews>
76 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="MvK-5R-njL">
77 <rect key="frame" x="289" y="0.0" width="56" height="36"/>
78 <constraints>
79 <constraint firstAttribute="width" constant="56" id="l8Q-On-RNy"/>
80 </constraints>
81 <state key="normal" backgroundImage="arrow_down"/>
82 <connections>
83 <action selector="clickShowGrp:" destination="-1" eventType="touchUpInside" id="yfd-Yu-fTF"/>
84 </connections>
85 </button>
86 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="xXv-SO-m4h">
87 <rect key="frame" x="5" y="0.0" width="284" height="36"/>
88 <fontDescription key="fontDescription" type="system" pointSize="16"/>
89 <nil key="textColor"/>
90 <nil key="highlightedColor"/>
91 </label>
92 </subviews>
93 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
94 <constraints>
95 <constraint firstAttribute="trailing" secondItem="MvK-5R-njL" secondAttribute="trailing" id="IS8-5J-ypb"/>
96 <constraint firstAttribute="bottom" secondItem="MvK-5R-njL" secondAttribute="bottom" id="IVS-f9-RjH"/>
97 <constraint firstAttribute="bottom" secondItem="xXv-SO-m4h" secondAttribute="bottom" id="Ino-7v-CKz"/>
98 <constraint firstItem="MvK-5R-njL" firstAttribute="top" secondItem="hhh-nO-yn5" secondAttribute="top" id="NlH-tz-ByC"/>
99 <constraint firstAttribute="height" constant="36" id="O8T-vH-tg6"/>
100 <constraint firstItem="MvK-5R-njL" firstAttribute="leading" secondItem="xXv-SO-m4h" secondAttribute="trailing" id="V51-fg-KCf"/>
101 <constraint firstItem="xXv-SO-m4h" firstAttribute="leading" secondItem="hhh-nO-yn5" secondAttribute="leading" constant="5" id="eY6-uq-qWx"/>
102 <constraint firstItem="xXv-SO-m4h" firstAttribute="top" secondItem="hhh-nO-yn5" secondAttribute="top" id="l3a-Th-4Kb"/>
103 </constraints>
104 <userDefinedRuntimeAttributes>
105 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
106 <integer key="value" value="5"/>
107 </userDefinedRuntimeAttribute>
108 </userDefinedRuntimeAttributes>
109 </view>
110 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="SNe-1B-nwV">
111 <rect key="frame" x="15" y="105" width="345" height="105"/>
112 <subviews>
113 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="グループ VMAP アメリカルート61完走" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hyY-rU-WJx">
114 <rect key="frame" x="8" y="8" width="329" height="20"/>
115 <constraints>
116 <constraint firstAttribute="height" constant="20" id="dx4-Lw-gRP"/>
117 </constraints>
118 <fontDescription key="fontDescription" type="system" pointSize="15"/>
119 <nil key="textColor"/>
120 <nil key="highlightedColor"/>
121 </label>
122 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="P1r-ft-imP">
123 <rect key="frame" x="8" y="36" width="155" height="61"/>
124 <constraints>
125 <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="61" id="6m3-4u-yjQ"/>
126 <constraint firstAttribute="width" constant="155" id="bJa-4P-B84"/>
127 </constraints>
128 <fontDescription key="fontDescription" type="system" pointSize="15"/>
129 <nil key="textColor"/>
130 <nil key="highlightedColor"/>
131 </label>
132 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fXA-Zh-ABB" customClass="AutoTransButton">
133 <rect key="frame" x="171" y="67" width="166" height="30"/>
134 <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
135 <constraints>
136 <constraint firstAttribute="height" constant="30" id="4bu-TU-hhR"/>
137 <constraint firstAttribute="width" constant="166" id="hcm-Nd-TE4"/>
138 </constraints>
139 <state key="normal" title="VMAP">
140 <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
141 </state>
142 <userDefinedRuntimeAttributes>
143 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
144 <integer key="value" value="10"/>
145 </userDefinedRuntimeAttribute>
146 </userDefinedRuntimeAttributes>
147 </button>
148 </subviews>
149 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
150 <constraints>
151 <constraint firstItem="P1r-ft-imP" firstAttribute="leading" secondItem="SNe-1B-nwV" secondAttribute="leading" constant="8" id="PCO-gJ-aUC"/>
152 <constraint firstItem="P1r-ft-imP" firstAttribute="top" secondItem="hyY-rU-WJx" secondAttribute="bottom" constant="8" id="TFE-rm-YuC"/>
153 <constraint firstItem="hyY-rU-WJx" firstAttribute="leading" secondItem="SNe-1B-nwV" secondAttribute="leading" constant="8" id="Urc-sV-0AF"/>
154 <constraint firstAttribute="bottom" secondItem="P1r-ft-imP" secondAttribute="bottom" constant="8" id="YYl-bN-XH2"/>
155 <constraint firstItem="hyY-rU-WJx" firstAttribute="top" secondItem="SNe-1B-nwV" secondAttribute="top" constant="8" id="a68-ja-X4x"/>
156 <constraint firstAttribute="trailing" secondItem="fXA-Zh-ABB" secondAttribute="trailing" constant="8" id="hNz-cE-JQc"/>
157 <constraint firstAttribute="trailing" secondItem="hyY-rU-WJx" secondAttribute="trailing" constant="8" id="tHp-Xw-Emj"/>
158 <constraint firstAttribute="bottom" secondItem="fXA-Zh-ABB" secondAttribute="bottom" constant="8" id="vRs-Al-kct"/>
159 </constraints>
160 </view>
161 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ftA-wa-19F">
162 <rect key="frame" x="15" y="218" width="345" height="100"/>
163 <constraints>
164 <constraint firstAttribute="height" constant="100" id="sns-tn-c0d"/>
165 </constraints>
166 <fontDescription key="fontDescription" type="system" pointSize="17"/>
167 <nil key="textColor"/>
168 <nil key="highlightedColor"/>
169 </label>
170 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="eBu-7L-nsx" customClass="AutoTransButton">
171 <rect key="frame" x="194" y="328" width="166" height="30"/>
172 <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
173 <constraints>
174 <constraint firstAttribute="width" constant="166" id="Rrn-lf-raV"/>
175 <constraint firstAttribute="height" constant="30" id="y2E-RH-aan"/>
176 </constraints>
177 <state key="normal" title="メンバー">
178 <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
179 </state>
180 <userDefinedRuntimeAttributes>
181 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
182 <integer key="value" value="10"/>
183 </userDefinedRuntimeAttribute>
184 </userDefinedRuntimeAttributes>
185 <connections>
186 <action selector="clickSwitch:" destination="-1" eventType="touchUpInside" id="B7a-Hl-IlY"/>
187 </connections>
188 </button>
189 <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="plain" separatorStyle="none" rowHeight="100" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="ubS-v9-zCa">
190 <rect key="frame" x="0.0" y="373" width="375" height="244"/>
191 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
192 <connections>
193 <outlet property="dataSource" destination="-1" id="HIG-w5-mXN"/>
194 <outlet property="delegate" destination="-1" id="GIa-bX-Av9"/>
195 </connections>
196 </tableView>
197 <tableView hidden="YES" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="plain" separatorStyle="default" rowHeight="35" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="dtD-J5-dze">
198 <rect key="frame" x="15" y="91" width="345" height="140"/>
199 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
200 <constraints>
201 <constraint firstAttribute="height" constant="140" id="CrG-Ni-f6b"/>
202 </constraints>
203 <connections>
204 <outlet property="dataSource" destination="-1" id="2bH-mm-vKH"/>
205 <outlet property="delegate" destination="-1" id="9tr-mh-5Ir"/>
206 </connections>
207 </tableView>
208 </subviews>
209 <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
210 <constraints>
211 <constraint firstItem="ftA-wa-19F" firstAttribute="top" secondItem="SNe-1B-nwV" secondAttribute="bottom" constant="8" id="4iN-BW-Eaa"/>
212 <constraint firstItem="vxT-xe-7mV" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="5np-jI-7iK"/>
213 <constraint firstAttribute="trailing" secondItem="eBu-7L-nsx" secondAttribute="trailing" constant="15" id="AkN-Cv-ULu"/>
214 <constraint firstItem="SNe-1B-nwV" firstAttribute="top" secondItem="hhh-nO-yn5" secondAttribute="bottom" constant="15" id="BL0-Cv-jlz"/>
215 <constraint firstItem="ubS-v9-zCa" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="Dt8-xl-lI8"/>
216 <constraint firstAttribute="trailing" secondItem="SNe-1B-nwV" secondAttribute="trailing" constant="15" id="QiL-ts-ryc"/>
217 <constraint firstItem="dtD-J5-dze" firstAttribute="top" secondItem="hhh-nO-yn5" secondAttribute="bottom" constant="1" id="QzJ-aS-NQ0"/>
218 <constraint firstItem="SNe-1B-nwV" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="15" id="T4b-fq-Gc8"/>
219 <constraint firstAttribute="trailing" secondItem="hhh-nO-yn5" secondAttribute="trailing" constant="15" id="YB3-2b-4yx"/>
220 <constraint firstAttribute="bottom" secondItem="ubS-v9-zCa" secondAttribute="bottom" constant="50" id="ZNH-0B-rWz"/>
221 <constraint firstItem="ftA-wa-19F" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="15" id="bnx-K2-jVS"/>
222 <constraint firstAttribute="trailing" secondItem="ubS-v9-zCa" secondAttribute="trailing" id="bsK-wi-RYU"/>
223 <constraint firstAttribute="trailing" secondItem="vxT-xe-7mV" secondAttribute="trailing" id="eld-fc-V95"/>
224 <constraint firstItem="hhh-nO-yn5" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="15" id="gDN-Hr-2vm"/>
225 <constraint firstItem="vxT-xe-7mV" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="iBy-99-6Ky"/>
226 <constraint firstItem="dtD-J5-dze" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="15" id="ie5-ll-WkY"/>
227 <constraint firstAttribute="trailing" secondItem="ftA-wa-19F" secondAttribute="trailing" constant="15" id="jaz-L9-glj"/>
228 <constraint firstItem="eBu-7L-nsx" firstAttribute="top" secondItem="ftA-wa-19F" secondAttribute="bottom" constant="10" id="lF2-iL-Xa6"/>
229 <constraint firstItem="ubS-v9-zCa" firstAttribute="top" secondItem="eBu-7L-nsx" secondAttribute="bottom" constant="15" id="ofF-9P-pq9"/>
230 <constraint firstItem="hhh-nO-yn5" firstAttribute="top" secondItem="vxT-xe-7mV" secondAttribute="bottom" constant="8" id="qIL-RX-3zl"/>
231 <constraint firstAttribute="trailing" secondItem="dtD-J5-dze" secondAttribute="trailing" constant="15" id="uHa-ot-bT0"/>
232 </constraints>
233 <point key="canvasLocation" x="24.5" y="52.5"/>
234 </view>
235 </objects>
236 <resources>
237 <image name="arrow_down" width="28" height="18"/>
238 <image name="icon_menu" width="30" height="30"/>
239 <image name="today_back_button" width="73" height="37"/>
240 </resources>
241 </document>
242
LifeLog/LifeLog/SNSViewController.m
1 // 1 //
2 // SNSViewController.m 2 // SNSViewController.m
3 // LifeLog 3 // LifeLog
4 // 4 //
5 // Created by Nguyen Van Phong on 7/25/17. 5 // Created by Nguyen Van Phong on 7/25/17.
6 // Copyright © 2017 PhongNV. All rights reserved. 6 // Copyright © 2017 PhongNV. All rights reserved.
7 // 7 //
8 8
9 #import "SNSViewController.h" 9 #import "SNSViewController.h"
10 10
11 #import <SDWebImage/UIImageView+WebCache.h> 11 #import <SDWebImage/UIImageView+WebCache.h>
12 12
13 #import "ServerAPI.h" 13 #import "ServerAPI.h"
14 #import "Utilities.h" 14 #import "Utilities.h"
15 15
16 #import "SNSRecentTopicTableViewCell.h" 16 #import "SNSRecentTopicTableViewCell.h"
17 #import "MyGroupViewController.h"
17 #import "SearchGroupViewController.h" 18 #import "SearchGroupViewController.h"
18 #import "GroupDetailViewController.h" 19 #import "GroupDetailViewController.h"
19 20
20 @interface SNSViewController () 21 @interface SNSViewController ()
21 22
22 @end 23 @end
23 24
24 @implementation SNSViewController 25 @implementation SNSViewController
25 26
26 - (void)viewDidLoad { 27 - (void)viewDidLoad {
27 [super viewDidLoad]; 28 [super viewDidLoad];
28 // Do any additional setup after loading the view from its nib. 29 // Do any additional setup after loading the view from its nib.
29 self.title = NSLocalizedString(@"lifelog.tapbar.sns", nil); 30 self.title = NSLocalizedString(@"lifelog.tapbar.sns", nil);
30 31
31 [self callRequestToUpdateData]; 32 [self callRequestToUpdateData];
32 33
33 //register nib for table view 34 //register nib for table view
34 [self.tableBase registerNib:[UINib nibWithNibName:@"SNSRecentTopicTableViewCell" bundle:nil] forCellReuseIdentifier:@"RecentTopicCell"]; 35 [self.tableBase registerNib:[UINib nibWithNibName:@"SNSRecentTopicTableViewCell" bundle:nil] forCellReuseIdentifier:@"RecentTopicCell"];
35 } 36 }
36 37
37 - (void)didReceiveMemoryWarning { 38 - (void)didReceiveMemoryWarning {
38 [super didReceiveMemoryWarning]; 39 [super didReceiveMemoryWarning];
39 // Dispose of any resources that can be recreated. 40 // Dispose of any resources that can be recreated.
40 } 41 }
41 42
42 #pragma mark IBAction 43 #pragma mark IBAction
43 - (IBAction)clickRecommendGroup:(id)sender { 44 - (IBAction)clickRecommendGroup:(id)sender {
44 SearchGroupViewController * search = [[SearchGroupViewController alloc] init]; 45 SearchGroupViewController * search = [[SearchGroupViewController alloc] init];
45 [self.navigationController pushViewController:search animated:true]; 46 [self.navigationController pushViewController:search animated:true];
46 } 47 }
47 48
48 - (IBAction)clickMyGroup:(id)sender { 49 - (IBAction)clickMyGroup:(id)sender {
49 // GroupDetailViewController * detail = [[GroupDetailViewController alloc] init]; 50 MyGroupViewController * myGrp = [[MyGroupViewController alloc] init];
50 // [self.navigationController pushViewController:detail animated:true]; 51 [self.navigationController pushViewController:myGrp animated:true];
51 } 52 }
52 53
53 #pragma mark UITableView Delegate 54 #pragma mark UITableView Delegate
54 - (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 55 - (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
55 SNSRecentTopicTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"RecentTopicCell"]; 56 SNSRecentTopicTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"RecentTopicCell"];
56 TweetObject *object = [_curDataList objectAtIndex:indexPath.row]; 57 TweetObject *object = [_curDataList objectAtIndex:indexPath.row];
57 if(object.avatar && ![object.avatar isKindOfClass:[NSNull class]]) { 58 if(object.avatar && ![object.avatar isKindOfClass:[NSNull class]]) {
58 [cell.imgAvatar sd_setImageWithURL:[NSURL URLWithString:[Utilities getImageLink:object.avatar]]]; 59 [cell.imgAvatar sd_setImageWithURL:[NSURL URLWithString:[Utilities getImageLink:object.avatar]]];
59 } 60 }
60 else { 61 else {
61 [cell.imgAvatar setImage:[UIImage imageNamed:@"avatar_default"]]; 62 [cell.imgAvatar setImage:[UIImage imageNamed:@"avatar_default"]];
62 } 63 }
63 cell.lblDateTime.text = [Utilities stringFromDate:object.createDate withFormat:@"YYYY/MM/dd hh:mm"]; 64 cell.lblDateTime.text = [Utilities stringFromDate:object.createDate withFormat:@"YYYY/MM/dd hh:mm"];
64 cell.lblUsername.text = object.userName; 65 cell.lblUsername.text = object.userName;
65 cell.lblDes.text = object.content; 66 cell.lblDes.text = object.content;
66 cell.lblMode.text = object.mode; 67 cell.lblMode.text = object.mode;
67 cell.lblDistance.text = [NSString stringWithFormat:@"%.0f m", object.distance]; 68 cell.lblDistance.text = [NSString stringWithFormat:@"%.0f m", object.distance];
68 cell.lblDuration.text = object.time; 69 cell.lblDuration.text = object.time;
69 return cell; 70 return cell;
70 } 71 }
71 72
72 #pragma mark Private Function 73 #pragma mark Private Function
73 74
74 -(void) callRequestToUpdateData { 75 -(void) callRequestToUpdateData {
75 [super callRequestToUpdateData]; 76 [super callRequestToUpdateData];
76 77
77 NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken]; 78 NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken];
78 MBProgressHUD *hudView = nil; 79 MBProgressHUD *hudView = nil;
79 if(_curPage == 1 && !self.refreshControl.isRefreshing) { 80 if(_curPage == 1 && !self.refreshControl.isRefreshing) {
80 hudView = [MBProgressHUD showHUDAddedTo:self.view animated:true]; 81 hudView = [MBProgressHUD showHUDAddedTo:self.view animated:true];
81 } 82 }
82 [[ServerAPI server] requestTweetsList:token groupID:-1 withPage:_curPage CompletionHandler:^(NSArray *array, NSError *error){ 83 [[ServerAPI server] requestTweetsList:token groupID:-1 withPage:_curPage CompletionHandler:^(NSArray *array, NSError *error){
83 dispatch_async(dispatch_get_main_queue(), ^{ 84 dispatch_async(dispatch_get_main_queue(), ^{
84 if(hudView != nil) { 85 if(hudView != nil) {
85 [hudView hideAnimated:true]; 86 [hudView hideAnimated:true];
86 } 87 }
87 }); 88 });
88 SNSViewController __weak *weakSelf = self; 89 SNSViewController __weak *weakSelf = self;
89 [weakSelf updateTableData:array error:error]; 90 [weakSelf updateTableData:array error:error];
90 }]; 91 }];
91 } 92 }
92 93
93 @end 94 @end
94 95
LifeLog/LifeLog/SearchGroupViewController.h
1 // 1 //
2 // SearchGroupViewController.h 2 // SearchGroupViewController.h
3 // LifeLog 3 // LifeLog
4 // 4 //
5 // Created by nvtu on 8/11/17. 5 // Created by nvtu on 8/11/17.
6 // Copyright © 2017 PhongNV. All rights reserved. 6 // Copyright © 2017 PhongNV. All rights reserved.
7 // 7 //
8 8
9 #import <UIKit/UIKit.h> 9 #import <UIKit/UIKit.h>
10 #import "BaseTableViewController.h" 10 #import "BaseTableViewController.h"
11 11
12 @interface SearchGroupViewController : BaseTableViewController<UITextFieldDelegate> { 12 @interface SearchGroupViewController : BaseTableViewController<UITextFieldDelegate> {
13 NSTimer *timerSearch;
14 }
13 NSTimer *timerSearch; 15
14 } 16 @property (weak, nonatomic) IBOutlet UITextField *textFieldSearch;
15 17
16 @property (weak, nonatomic) IBOutlet UITextField *textFieldSearch; 18 - (IBAction)clickBack:(id)sender;
17 19 - (IBAction)clickSearch:(id)sender;
18 - (IBAction)clickBack:(id)sender; 20 - (IBAction)clickCreateGroup:(id)sender;
19 - (IBAction)clickSearch:(id)sender; 21
20 - (IBAction)clickCreateGroup:(id)sender; 22 @end
21 23
LifeLog/LifeLog/SearchGroupViewController.m
1 // 1 //
2 // SearchGroupViewController.m 2 // SearchGroupViewController.m
3 // LifeLog 3 // LifeLog
4 // 4 //
5 // Created by nvtu on 8/11/17. 5 // Created by nvtu on 8/11/17.
6 // Copyright © 2017 PhongNV. All rights reserved. 6 // Copyright © 2017 PhongNV. All rights reserved.
7 // 7 //
8 8
9 #import "SearchGroupViewController.h" 9 #import "SearchGroupViewController.h"
10 10
11 #import <SDWebImage/UIImageView+WebCache.h> 11 #import <SDWebImage/UIImageView+WebCache.h>
12 12
13 #import "ServerAPI.h" 13 #import "ServerAPI.h"
14 #import "Utilities.h" 14 #import "Utilities.h"
15 15
16 #import "SearchGroupTableViewCell.h" 16 #import "SearchGroupTableViewCell.h"
17 #import "CreateGroupViewController.h"
17 #import "CreateGroupViewController.h" 18 #import "GroupDetailViewController.h"
18 #import "GroupDetailViewController.h" 19
19 20 @interface SearchGroupViewController ()
20 @interface SearchGroupViewController () 21
21 22 @end
22 @end 23
23 24 @implementation SearchGroupViewController
24 @implementation SearchGroupViewController 25
25 26 - (void)viewDidLoad {
26 - (void)viewDidLoad { 27 [super viewDidLoad];
27 [super viewDidLoad]; 28 [self callRequestToUpdateData];
28 [self callRequestToUpdateData]; 29
29 30 //register nib for table view
30 //register nib for table view 31 [self.tableBase registerNib:[UINib nibWithNibName:@"SearchGroupTableViewCell" bundle:nil] forCellReuseIdentifier:@"SearchGroupCell"];
31 [self.tableBase registerNib:[UINib nibWithNibName:@"SearchGroupTableViewCell" bundle:nil] forCellReuseIdentifier:@"SearchGroupCell"]; 32 }
32 } 33
33 34 - (void)didReceiveMemoryWarning {
34 - (void)didReceiveMemoryWarning { 35 [super didReceiveMemoryWarning];
35 [super didReceiveMemoryWarning]; 36 // Dispose of any resources that can be recreated.
36 // Dispose of any resources that can be recreated. 37 }
37 } 38
38 39 #pragma mark IBAction
39 #pragma mark IBAction 40
40 41 - (IBAction)clickBack:(id)sender {
41 - (IBAction)clickBack:(id)sender { 42 [self.navigationController popViewControllerAnimated:true];
42 [self.navigationController popViewControllerAnimated:true]; 43 }
43 } 44
44 45 - (IBAction)clickSearch:(id)sender {
46 [self.view endEditing:true];
45 - (IBAction)clickSearch:(id)sender { 47 [self resetData];
46 [self.view endEditing:true]; 48 }
47 [self resetData]; 49
48 } 50 - (IBAction)clickCreateGroup:(id)sender {
49 51 CreateGroupViewController * create = [[CreateGroupViewController alloc] init];
52 create.createGroupSuccess = ^(GroupObject *object){
53 GroupDetailViewController * detail = [[GroupDetailViewController alloc] init];
54 [detail setGroup:object];
55 [self.navigationController pushViewController:detail animated:true];
56 };
57 [self.navigationController pushViewController:create animated:true];
50 - (IBAction)clickCreateGroup:(id)sender { 58 }
51 CreateGroupViewController * create = [[CreateGroupViewController alloc] init]; 59
52 create.createGroupSuccess = ^(GroupObject *object){ 60 #pragma mark UITableView Delegate
53 GroupDetailViewController * detail = [[GroupDetailViewController alloc] init]; 61 - (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
54 [detail setGroup:object]; 62 SearchGroupTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"SearchGroupCell"];
55 [self.navigationController pushViewController:detail animated:true]; 63 GroupObject *object = [_curDataList objectAtIndex:indexPath.row];
56 }; 64 if(object.avatar && ![object.avatar isKindOfClass:[NSNull class]]) {
57 [self.navigationController pushViewController:create animated:true]; 65 [cell.imgAvatar sd_setImageWithURL:[NSURL URLWithString:[Utilities getImageLink:object.avatar]]];
58 } 66 }
59 67 else {
60 #pragma mark UITableView Delegate 68 [cell.imgAvatar setImage:[UIImage imageNamed:@"avatar_default"]];
61 - (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 69 }
62 SearchGroupTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"SearchGroupCell"]; 70 cell.lblName.text = object.name;
63 GroupObject *object = [_curDataList objectAtIndex:indexPath.row]; 71 return cell;
64 if(object.avatar && ![object.avatar isKindOfClass:[NSNull class]]) { 72 }
65 [cell.imgAvatar sd_setImageWithURL:[NSURL URLWithString:[Utilities getImageLink:object.avatar]]]; 73
66 } 74 -(void) scrollViewDidScroll:(UIScrollView *)scrollView {
67 else { 75 [self.view endEditing:true];
68 [cell.imgAvatar setImage:[UIImage imageNamed:@"avatar_default"]]; 76 }
69 } 77
70 cell.lblName.text = object.name; 78 -(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
71 return cell; 79 GroupDetailViewController * detail = [[GroupDetailViewController alloc] init];
72 } 80 [detail setGroup:[_curDataList objectAtIndex:indexPath.row]];
73 81 [self.navigationController pushViewController:detail animated:true];
74 -(void) scrollViewDidScroll:(UIScrollView *)scrollView { 82 }
75 [self.view endEditing:true]; 83
76 } 84 #pragma mark UITextField Delegate
85 -(BOOL) textFieldShouldReturn:(UITextField *)textField {
86 [self.view endEditing:true];
87 return true;
88 }
89
77 90 -(BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
78 -(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 91 if(timerSearch != nil) {
92 [timerSearch invalidate];
93 }
94 timerSearch = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(resetData) userInfo:nil repeats:false];
79 GroupDetailViewController * detail = [[GroupDetailViewController alloc] init]; 95 return true;
80 [detail setGroup:[_curDataList objectAtIndex:indexPath.row]]; 96 }
81 [self.navigationController pushViewController:detail animated:true]; 97
82 } 98 #pragma mark Private Function
83 99 -(void) callRequestToUpdateData {
84 #pragma mark UITextField Delegate 100 [super callRequestToUpdateData];
85 -(BOOL) textFieldShouldReturn:(UITextField *)textField { 101
86 [self.view endEditing:true]; 102 NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken];
87 return true; 103 MBProgressHUD *hudView = nil;
88 } 104 if(_curPage == 1 && !self.refreshControl.isRefreshing) {
89 105 hudView = [MBProgressHUD showHUDAddedTo:self.view animated:true];
90 -(BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 106 }
91 if(timerSearch != nil) { 107 [[ServerAPI server] searchGroup:token withKey:self.textFieldSearch.text andPage:_curPage CompletionHandler:^(NSArray *array, NSError *error) {
92 [timerSearch invalidate]; 108 dispatch_async(dispatch_get_main_queue(), ^{
93 } 109 if(hudView != nil) {
94 timerSearch = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(resetData) userInfo:nil repeats:false]; 110 [hudView hideAnimated:true];
95 return true; 111 }
96 } 112 });
97 113 SearchGroupViewController __weak *weakSelf = self;
98 #pragma mark Private Function 114 [weakSelf updateTableData:array error:error];
99 -(void) callRequestToUpdateData { 115 }];
100 [super callRequestToUpdateData]; 116 }
101 117 @end
102 NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken]; 118
LifeLog/LifeLog/SearchGroupViewController.xib
1 <?xml version="1.0" encoding="UTF-8"?> 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="12118" systemVersion="16D32" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
3 <device id="retina4_7" orientation="portrait"> 3 <device id="retina4_7" orientation="portrait">
4 <adaptation id="fullscreen"/> 4 <adaptation id="fullscreen"/>
5 </device> 5 </device>
6 <dependencies> 6 <dependencies>
7 <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12086"/> 7 <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12086"/>
8 <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> 8 <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
9 </dependencies> 9 </dependencies>
10 <objects> 10 <objects>
11 <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="SearchGroupViewController"> 11 <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="SearchGroupViewController">
12 <connections> 12 <connections>
13 <outlet property="tableBase" destination="yF3-ZN-ebL" id="WYE-g2-1iW"/> 13 <outlet property="tableBase" destination="yF3-ZN-ebL" id="WYE-g2-1iW"/>
14 <outlet property="textFieldSearch" destination="ZV5-M6-gge" id="my5-ga-rV2"/> 14 <outlet property="textFieldSearch" destination="ZV5-M6-gge" id="my5-ga-rV2"/>
15 <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> 15 <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
16 </connections> 16 </connections>
17 </placeholder> 17 </placeholder>
18 <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> 18 <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
19 <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT"> 19 <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
20 <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> 20 <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
21 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> 21 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
22 <subviews> 22 <subviews>
23 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="YHv-ES-wQ0" userLabel="ViewHeader"> 23 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="YHv-ES-wQ0" userLabel="ViewHeader">
24 <rect key="frame" x="0.0" y="0.0" width="375" height="46"/> 24 <rect key="frame" x="0.0" y="0.0" width="375" height="46"/>
25 <subviews> 25 <subviews>
26 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="SNS" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qQF-tf-31d" customClass="AutoTransLabel"> 26 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="SNS" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qQF-tf-31d" customClass="AutoTransLabel">
27 <rect key="frame" x="0.0" y="0.0" width="375" height="46"/> 27 <rect key="frame" x="0.0" y="0.0" width="375" height="46"/>
28 <fontDescription key="fontDescription" type="system" pointSize="17"/> 28 <fontDescription key="fontDescription" type="system" pointSize="17"/>
29 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 29 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
30 <nil key="highlightedColor"/> 30 <nil key="highlightedColor"/>
31 <userDefinedRuntimeAttributes> 31 <userDefinedRuntimeAttributes>
32 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.searchGr.title"/> 32 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.searchGr.title"/>
33 </userDefinedRuntimeAttributes> 33 </userDefinedRuntimeAttributes>
34 </label> 34 </label>
35 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="pK9-Nf-LNR"> 35 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="pK9-Nf-LNR">
36 <rect key="frame" x="0.0" y="5" width="70" height="36"/> 36 <rect key="frame" x="0.0" y="5" width="70" height="36"/>
37 <constraints> 37 <constraints>
38 <constraint firstAttribute="width" constant="70" id="Kdt-q3-40K"/> 38 <constraint firstAttribute="width" constant="70" id="Kdt-q3-40K"/>
39 </constraints> 39 </constraints>
40 <state key="normal" image="today_back_button"/> 40 <state key="normal" image="today_back_button"/>
41 <connections> 41 <connections>
42 <action selector="clickBack:" destination="-1" eventType="touchUpInside" id="Z3f-Fd-CEc"/> 42 <action selector="clickBack:" destination="-1" eventType="touchUpInside" id="Z3f-Fd-CEc"/>
43 </connections> 43 </connections>
44 </button> 44 </button>
45 <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="PkV-G3-Fru"> 45 <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="PkV-G3-Fru">
46 <rect key="frame" x="330" y="0.0" width="45" height="46"/> 46 <rect key="frame" x="330" y="0.0" width="45" height="46"/>
47 <constraints> 47 <constraints>
48 <constraint firstAttribute="width" constant="45" id="7W6-Cl-TRS"/> 48 <constraint firstAttribute="width" constant="45" id="7W6-Cl-TRS"/>
49 </constraints> 49 </constraints>
50 <state key="normal" image="icon_menu"/> 50 <state key="normal" image="icon_menu"/>
51 </button> 51 </button>
52 </subviews> 52 </subviews>
53 <color key="backgroundColor" red="0.098039215690000001" green="0.098039215690000001" blue="0.098039215690000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> 53 <color key="backgroundColor" red="0.098039215690000001" green="0.098039215690000001" blue="0.098039215690000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
54 <constraints> 54 <constraints>
55 <constraint firstItem="pK9-Nf-LNR" firstAttribute="leading" secondItem="YHv-ES-wQ0" secondAttribute="leading" id="84D-o2-cdT"/> 55 <constraint firstItem="pK9-Nf-LNR" firstAttribute="leading" secondItem="YHv-ES-wQ0" secondAttribute="leading" id="84D-o2-cdT"/>
56 <constraint firstAttribute="trailing" secondItem="qQF-tf-31d" secondAttribute="trailing" id="BMv-VR-p7j"/> 56 <constraint firstAttribute="trailing" secondItem="qQF-tf-31d" secondAttribute="trailing" id="BMv-VR-p7j"/>
57 <constraint firstAttribute="trailing" secondItem="PkV-G3-Fru" secondAttribute="trailing" id="CiO-zw-1XR"/> 57 <constraint firstAttribute="trailing" secondItem="PkV-G3-Fru" secondAttribute="trailing" id="CiO-zw-1XR"/>
58 <constraint firstAttribute="height" constant="46" id="KDJ-I2-eMi"/> 58 <constraint firstAttribute="height" constant="46" id="KDJ-I2-eMi"/>
59 <constraint firstItem="qQF-tf-31d" firstAttribute="leading" secondItem="YHv-ES-wQ0" secondAttribute="leading" id="heq-vX-GHv"/> 59 <constraint firstItem="qQF-tf-31d" firstAttribute="leading" secondItem="YHv-ES-wQ0" secondAttribute="leading" id="heq-vX-GHv"/>
60 <constraint firstAttribute="bottom" secondItem="qQF-tf-31d" secondAttribute="bottom" id="iJg-Q2-eLi"/> 60 <constraint firstAttribute="bottom" secondItem="qQF-tf-31d" secondAttribute="bottom" id="iJg-Q2-eLi"/>
61 <constraint firstItem="qQF-tf-31d" firstAttribute="top" secondItem="YHv-ES-wQ0" secondAttribute="top" id="l3t-CY-3zr"/> 61 <constraint firstItem="qQF-tf-31d" firstAttribute="top" secondItem="YHv-ES-wQ0" secondAttribute="top" id="l3t-CY-3zr"/>
62 <constraint firstAttribute="bottom" secondItem="pK9-Nf-LNR" secondAttribute="bottom" constant="5" id="lJY-v6-1cM"/> 62 <constraint firstAttribute="bottom" secondItem="pK9-Nf-LNR" secondAttribute="bottom" constant="5" id="lJY-v6-1cM"/>
63 <constraint firstItem="pK9-Nf-LNR" firstAttribute="top" secondItem="YHv-ES-wQ0" secondAttribute="top" constant="5" id="ppE-r0-ai7"/> 63 <constraint firstItem="pK9-Nf-LNR" firstAttribute="top" secondItem="YHv-ES-wQ0" secondAttribute="top" constant="5" id="ppE-r0-ai7"/>
64 <constraint firstItem="PkV-G3-Fru" firstAttribute="top" secondItem="YHv-ES-wQ0" secondAttribute="top" id="ptk-1B-s3f"/> 64 <constraint firstItem="PkV-G3-Fru" firstAttribute="top" secondItem="YHv-ES-wQ0" secondAttribute="top" id="ptk-1B-s3f"/>
65 <constraint firstAttribute="bottom" secondItem="PkV-G3-Fru" secondAttribute="bottom" id="yNR-37-Qmd"/> 65 <constraint firstAttribute="bottom" secondItem="PkV-G3-Fru" secondAttribute="bottom" id="yNR-37-Qmd"/>
66 </constraints> 66 </constraints>
67 </view> 67 </view>
68 <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="ZV5-M6-gge"> 68 <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="ZV5-M6-gge">
69 <rect key="frame" x="16" y="86" width="209" height="30"/> 69 <rect key="frame" x="16" y="86" width="209" height="30"/>
70 <nil key="textColor"/> 70 <nil key="textColor"/>
71 <fontDescription key="fontDescription" type="system" pointSize="14"/> 71 <fontDescription key="fontDescription" type="system" pointSize="14"/>
72 <textInputTraits key="textInputTraits"/> 72 <textInputTraits key="textInputTraits"/>
73 <connections> 73 <connections>
74 <outlet property="delegate" destination="-1" id="Wzs-Wc-gd1"/> 74 <outlet property="delegate" destination="-1" id="Wzs-Wc-gd1"/>
75 </connections> 75 </connections>
76 </textField> 76 </textField>
77 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="V72-De-hhR" customClass="AutoTransButton"> 77 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="V72-De-hhR" customClass="AutoTransButton">
78 <rect key="frame" x="250" y="86" width="110" height="30"/> 78 <rect key="frame" x="250" y="86" width="110" height="30"/>
79 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 79 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
80 <constraints> 80 <constraints>
81 <constraint firstAttribute="height" constant="30" id="plQ-aS-bwK"/> 81 <constraint firstAttribute="height" constant="30" id="plQ-aS-bwK"/>
82 <constraint firstAttribute="width" constant="110" id="w47-Tg-vYC"/> 82 <constraint firstAttribute="width" constant="110" id="w47-Tg-vYC"/>
83 </constraints> 83 </constraints>
84 <fontDescription key="fontDescription" type="system" pointSize="13"/> 84 <fontDescription key="fontDescription" type="system" pointSize="13"/>
85 <state key="normal" title="検索"> 85 <state key="normal" title="検索">
86 <color key="titleColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/> 86 <color key="titleColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
87 </state> 87 </state>
88 <userDefinedRuntimeAttributes> 88 <userDefinedRuntimeAttributes>
89 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius"> 89 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
90 <integer key="value" value="5"/> 90 <integer key="value" value="5"/>
91 </userDefinedRuntimeAttribute> 91 </userDefinedRuntimeAttribute>
92 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.searchGr.bt.search"/> 92 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.searchGr.bt.search"/>
93 </userDefinedRuntimeAttributes> 93 </userDefinedRuntimeAttributes>
94 <connections> 94 <connections>
95 <action selector="clickSearch:" destination="-1" eventType="touchUpInside" id="WPo-6j-0K1"/> 95 <action selector="clickSearch:" destination="-1" eventType="touchUpInside" id="WPo-6j-0K1"/>
96 </connections> 96 </connections>
97 </button> 97 </button>
98 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Rb5-To-ffT" customClass="AutoTransButton"> 98 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Rb5-To-ffT" customClass="AutoTransButton">
99 <rect key="frame" x="250" y="131" width="110" height="30"/> 99 <rect key="frame" x="250" y="131" width="110" height="30"/>
100 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 100 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
101 <constraints> 101 <constraints>
102 <constraint firstAttribute="height" constant="30" id="Cwt-yy-rcp"/> 102 <constraint firstAttribute="height" constant="30" id="Cwt-yy-rcp"/>
103 </constraints> 103 </constraints>
104 <fontDescription key="fontDescription" type="system" pointSize="13"/> 104 <fontDescription key="fontDescription" type="system" pointSize="13"/>
105 <state key="normal" title="グループ作成"> 105 <state key="normal" title="グループ作成">
106 <color key="titleColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/> 106 <color key="titleColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
107 </state> 107 </state>
108 <userDefinedRuntimeAttributes> 108 <userDefinedRuntimeAttributes>
109 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius"> 109 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
110 <integer key="value" value="5"/> 110 <integer key="value" value="5"/>
111 </userDefinedRuntimeAttribute> 111 </userDefinedRuntimeAttribute>
112 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.searchGr.bt.createGr"/> 112 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.searchGr.bt.createGr"/>
113 </userDefinedRuntimeAttributes> 113 </userDefinedRuntimeAttributes>
114 <connections> 114 <connections>
115 <action selector="clickCreateGroup:" destination="-1" eventType="touchUpInside" id="J9P-5a-SrT"/> 115 <action selector="clickCreateGroup:" destination="-1" eventType="touchUpInside" id="J9P-5a-SrT"/>
116 </connections> 116 </connections>
117 </button> 117 </button>
118 <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="plain" separatorStyle="none" rowHeight="70" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="yF3-ZN-ebL"> 118 <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="plain" separatorStyle="none" rowHeight="70" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="yF3-ZN-ebL">
119 <rect key="frame" x="0.0" y="176" width="375" height="441"/> 119 <rect key="frame" x="0.0" y="176" width="375" height="441"/>
120 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> 120 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
121 <connections> 121 <connections>
122 <outlet property="dataSource" destination="-1" id="tKB-Uq-esC"/> 122 <outlet property="dataSource" destination="-1" id="tKB-Uq-esC"/>
123 <outlet property="delegate" destination="-1" id="88z-Bd-dz0"/> 123 <outlet property="delegate" destination="-1" id="88z-Bd-dz0"/>
124 </connections> 124 </connections>
125 </tableView> 125 </tableView>
126 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="オススメグループ" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YIq-l4-77c" customClass="AutoTransLabel"> 126 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="オススメグループ" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YIq-l4-77c" customClass="AutoTransLabel">
127 <rect key="frame" x="16" y="54" width="343" height="21"/> 127 <rect key="frame" x="16" y="54" width="343" height="21"/>
128 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> 128 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
129 <fontDescription key="fontDescription" type="system" pointSize="17"/> 129 <fontDescription key="fontDescription" type="system" pointSize="17"/>
130 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 130 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
131 <nil key="highlightedColor"/> 131 <nil key="highlightedColor"/>
132 <userDefinedRuntimeAttributes> 132 <userDefinedRuntimeAttributes>
133 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.searchGr.lbl.title"/> 133 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.searchGr.lbl.title"/>
134 </userDefinedRuntimeAttributes> 134 </userDefinedRuntimeAttributes>
135 </label> 135 </label>
136 </subviews> 136 </subviews>
137 <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/> 137 <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
138 <constraints> 138 <constraints>
139 <constraint firstItem="yF3-ZN-ebL" firstAttribute="top" secondItem="Rb5-To-ffT" secondAttribute="bottom" constant="15" id="2wi-jL-dso"/> 139 <constraint firstItem="yF3-ZN-ebL" firstAttribute="top" secondItem="Rb5-To-ffT" secondAttribute="bottom" constant="15" id="2wi-jL-dso"/>
140 <constraint firstAttribute="trailing" secondItem="V72-De-hhR" secondAttribute="trailing" constant="15" id="342-Ur-sPT"/> 140 <constraint firstAttribute="trailing" secondItem="V72-De-hhR" secondAttribute="trailing" constant="15" id="342-Ur-sPT"/>
141 <constraint firstItem="YHv-ES-wQ0" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="3ft-ch-v8f"/> 141 <constraint firstItem="YHv-ES-wQ0" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="3ft-ch-v8f"/>
142 <constraint firstItem="Rb5-To-ffT" firstAttribute="top" secondItem="V72-De-hhR" secondAttribute="bottom" constant="15" id="Hic-jl-Ndk"/> 142 <constraint firstItem="Rb5-To-ffT" firstAttribute="top" secondItem="V72-De-hhR" secondAttribute="bottom" constant="15" id="Hic-jl-Ndk"/>
143 <constraint firstAttribute="bottom" secondItem="yF3-ZN-ebL" secondAttribute="bottom" constant="50" id="Nad-2Y-mrb"/> 143 <constraint firstAttribute="bottom" secondItem="yF3-ZN-ebL" secondAttribute="bottom" constant="50" id="Nad-2Y-mrb"/>
144 <constraint firstItem="V72-De-hhR" firstAttribute="leading" secondItem="ZV5-M6-gge" secondAttribute="trailing" constant="25" id="Pv6-Li-O07"/> 144 <constraint firstItem="V72-De-hhR" firstAttribute="leading" secondItem="ZV5-M6-gge" secondAttribute="trailing" constant="25" id="Pv6-Li-O07"/>
145 <constraint firstAttribute="trailing" secondItem="YHv-ES-wQ0" secondAttribute="trailing" id="crv-XZ-T34"/> 145 <constraint firstAttribute="trailing" secondItem="YHv-ES-wQ0" secondAttribute="trailing" id="crv-XZ-T34"/>
146 <constraint firstItem="yF3-ZN-ebL" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="f6n-Zr-w64"/> 146 <constraint firstItem="yF3-ZN-ebL" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="f6n-Zr-w64"/>
147 <constraint firstItem="Rb5-To-ffT" firstAttribute="trailing" secondItem="V72-De-hhR" secondAttribute="trailing" id="fHS-Kk-Ew0"/> 147 <constraint firstItem="Rb5-To-ffT" firstAttribute="trailing" secondItem="V72-De-hhR" secondAttribute="trailing" id="fHS-Kk-Ew0"/>
148 <constraint firstItem="YHv-ES-wQ0" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="fdM-w1-hOo"/> 148 <constraint firstItem="YHv-ES-wQ0" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="fdM-w1-hOo"/>
149 <constraint firstItem="V72-De-hhR" firstAttribute="top" secondItem="YHv-ES-wQ0" secondAttribute="bottom" constant="40" id="hlc-vb-EVo"/> 149 <constraint firstItem="V72-De-hhR" firstAttribute="top" secondItem="YHv-ES-wQ0" secondAttribute="bottom" constant="40" id="hlc-vb-EVo"/>
150 <constraint firstItem="Rb5-To-ffT" firstAttribute="width" secondItem="V72-De-hhR" secondAttribute="width" id="jtP-uw-vkF"/> 150 <constraint firstItem="Rb5-To-ffT" firstAttribute="width" secondItem="V72-De-hhR" secondAttribute="width" id="jtP-uw-vkF"/>
151 <constraint firstItem="ZV5-M6-gge" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="16" id="kxD-e8-dYm"/> 151 <constraint firstItem="ZV5-M6-gge" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="16" id="kxD-e8-dYm"/>
152 <constraint firstAttribute="trailing" secondItem="yF3-ZN-ebL" secondAttribute="trailing" id="rZv-uL-RZ3"/> 152 <constraint firstAttribute="trailing" secondItem="yF3-ZN-ebL" secondAttribute="trailing" id="rZv-uL-RZ3"/>
153 <constraint firstItem="V72-De-hhR" firstAttribute="top" secondItem="ZV5-M6-gge" secondAttribute="top" id="voZ-Kp-Zm3"/> 153 <constraint firstItem="V72-De-hhR" firstAttribute="top" secondItem="ZV5-M6-gge" secondAttribute="top" id="voZ-Kp-Zm3"/>
154 </constraints> 154 </constraints>
155 <point key="canvasLocation" x="24.5" y="52.5"/> 155 <point key="canvasLocation" x="24.5" y="52.5"/>
156 </view> 156 </view>
157 </objects> 157 </objects>
158 <resources> 158 <resources>
159 <image name="icon_menu" width="30" height="30"/> 159 <image name="icon_menu" width="30" height="30"/>
160 <image name="today_back_button" width="73" height="37"/> 160 <image name="today_back_button" width="73" height="37"/>
161 </resources> 161 </resources>
162 </document> 162 </document>
163 163
LifeLog/LifeLog/ServerAPI.h
1 // 1 //
2 // ServerAPI.h 2 // ServerAPI.h
3 // LifeLog 3 // LifeLog
4 // 4 //
5 // Created by Nguyen Van Phong on 7/30/17. 5 // Created by Nguyen Van Phong on 7/30/17.
6 // Copyright © 2017 PhongNV. All rights reserved. 6 // Copyright © 2017 PhongNV. All rights reserved.
7 // 7 //
8 8
9 #import <Foundation/Foundation.h> 9 #import <Foundation/Foundation.h>
10 #import "Entities.h" 10 #import "Entities.h"
11 11
12 extern NSString *const kServerAddress; 12 extern NSString *const kServerAddress;
13 extern NSString *const kUser; 13 extern NSString *const kUser;
14 extern NSString *const kToken; 14 extern NSString *const kToken;
15 extern NSString *const kNotificationToken; 15 extern NSString *const kNotificationToken;
16 16
17 @interface ServerAPI : NSObject 17 @interface ServerAPI : NSObject
18 + (instancetype) server; 18 + (instancetype) server;
19 @property (nonatomic, assign) NSTimeInterval timeOutInterval; 19 @property (nonatomic, assign) NSTimeInterval timeOutInterval;
20 20
21 #pragma mark - Login and Register 21 #pragma mark - Login and Register
22 - (void)loginWithEmail:(NSString *)email Password:(NSString *)password CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion; 22 - (void)loginWithEmail:(NSString *)email Password:(NSString *)password CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion;
23 - (void)registerUserWithParams:(NSDictionary *)params CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion; 23 - (void)registerUserWithParams:(NSDictionary *)params CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion;
24 - (void)uploadImage:(NSString *)token andImageData:(NSData *)data CompletionHandler:(void (^)(NSString *, NSError *)) completion; 24 - (void)uploadImage:(NSString *)token andImageData:(NSData *)data CompletionHandler:(void (^)(NSString *, NSError *)) completion;
25 - (void)forgetPass:(NSString *)email CompletionHandler:(void (^)(NSError *)) completion; 25 - (void)forgetPass:(NSString *)email CompletionHandler:(void (^)(NSError *)) completion;
26 - (void)confirmForgetPass:(NSString *)email withConfirm:(NSString *)confirm CompletionHandler:(void (^)(NSError *)) completion; 26 - (void)confirmForgetPass:(NSString *)email withConfirm:(NSString *)confirm CompletionHandler:(void (^)(NSError *)) completion;
27 27
28 #pragma mark - Home Screen Function 28 #pragma mark - Home Screen Function
29 - (void)requestTopWithMode:(int)mode andDate:(NSString *)date CompletionHandler:(void (^)(TopObject *, NSError *)) completion; 29 - (void)requestTopWithMode:(int)mode andDate:(NSString *)date CompletionHandler:(void (^)(TopObject *, NSError *)) completion;
30 - (void)requestCreateLog:(int)mode withStep:(int)numStep startDate:(NSString *)startDate endDate:(NSString *)endDate CompletionHandler:(void (^)(NSError *))completion; 30 - (void)requestCreateLog:(int)mode withStep:(int)numStep startDate:(NSString *)startDate endDate:(NSString *)endDate CompletionHandler:(void (^)(NSError *))completion;
31 31
32 #pragma mark - History Screen Function 32 #pragma mark - History Screen Function
33 - (void) requestHistory:(NSString *)token atDate:(NSDate *)date withType:(int)type andMode:(int) mode CompletionHandler:(void (^)(HistoryObject *, NSError *)) completion; 33 - (void) requestHistory:(NSString *)token atDate:(NSDate *)date withType:(int)type andMode:(int) mode CompletionHandler:(void (^)(HistoryObject *, NSError *)) completion;
34 - (void) requestHistoryGraph:(NSString *)token withType:(int)type andMode:(int) mode CompletionHandler:(void (^)(HistoryGraphObject *, NSError *)) completion; 34 - (void) requestHistoryGraph:(NSString *)token withType:(int)type andMode:(int) mode CompletionHandler:(void (^)(HistoryGraphObject *, NSError *)) completion;
35 - (void) requestHistoryList:(NSString *)token withType:(int)type andMode:(int) mode AtPage:(int) page CompletionHandler:(void (^)(NSArray *, NSError *)) completion; 35 - (void) requestHistoryList:(NSString *)token withType:(int)type andMode:(int) mode AtPage:(int) page CompletionHandler:(void (^)(NSArray *, NSError *)) completion;
36 - (void) requestJoinGroup:(NSString *)token groupID: (int) groupID CompletionHandler:(void (^)(NSError *)) completion; 36 - (void) requestJoinGroup:(NSString *)token groupID: (int) groupID CompletionHandler:(void (^)(NSError *)) completion;
37 -(void) requestCreateGroup:(NSString *)token withGroup:(GroupObject *)group CompletionHandler:(void (^)(GroupObject *, NSError *)) completion;
38 - (void) requestGroupList:(NSString *)token CompletionHandler:(void (^)(NSArray *, NSError *)) completion;
37 -(void) requestCreateGroup:(NSString *)token withGroup:(GroupObject *)group CompletionHandler:(void (^)(GroupObject *, NSError *)) completion; 39
38 40 #pragma mark - SNS Screen Function
39 #pragma mark - SNS Screen Function 41 /*
40 /* 42 Get tweet of group and get recent tweet is same API
41 Get tweet of group and get recent tweet is same API 43 If groupID equal -1, it will request recent tweet. Otherwise will request tweet of group
42 If groupID equal -1, it will request recent tweet. Otherwise will request tweet of group 44 */
43 */ 45 - (void) requestTweetsList:(NSString *)token groupID: (int) groupID withPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion;
44 - (void) requestTweetsList:(NSString *)token groupID: (int) groupID withPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion; 46 - (void) searchGroup:(NSString *)token withKey:(NSString *)key andPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion;
45 - (void) searchGroup:(NSString *)token withKey:(NSString *)key andPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion; 47
46 48 #pragma mark - Group Function
47 #pragma mark - Group Function 49 - (void) getGroupDetail:(NSString *)token withGroupID:(int)groupID CompletionHandler:(void (^)(GroupObject *, NSError *)) completion;
48 - (void) getGroupDetail:(NSString *)token withGroupID:(int)groupID CompletionHandler:(void (^)(GroupObject *, NSError *)) completion; 50 - (void) requestMemberList:(NSString *)token groupID: (int) groupID withPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion;
49 - (void) requestMemberList:(NSString *)token groupID: (int) groupID withPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion; 51
50 52 #pragma mark - Common API
51 #pragma mark - Common API 53 - (void)refreshToken: (NSString *)userID CompletionHandler:(void (^)(NSString *, NSError *))completion;
52 - (void)refreshToken: (NSString *)userID CompletionHandler:(void (^)(NSString *, NSError *))completion; 54 @end
53 @end 55
LifeLog/LifeLog/ServerAPI.m
1 // 1 //
2 // ServerAPI.m 2 // ServerAPI.m
3 // LifeLog 3 // LifeLog
4 // 4 //
5 // Created by Nguyen Van Phong on 7/30/17. 5 // Created by Nguyen Van Phong on 7/30/17.
6 // Copyright © 2017 PhongNV. All rights reserved. 6 // Copyright © 2017 PhongNV. All rights reserved.
7 // 7 //
8 8
9 #import "ServerAPI.h" 9 #import "ServerAPI.h"
10 10
11 NSString *const kServerAddress = @"http://clover.timesfun.jp:9001/"; 11 NSString *const kServerAddress = @"http://clover.timesfun.jp:9001/";
12 NSString *const kUser = @"KEY_USER"; 12 NSString *const kUser = @"KEY_USER";
13 NSString *const kToken = @"KEY_TOKEN"; 13 NSString *const kToken = @"KEY_TOKEN";
14 NSString *const kNotificationToken = @"TOKEN_INVALID"; 14 NSString *const kNotificationToken = @"TOKEN_INVALID";
15 15
16 @implementation NSString (NSString_Extended) 16 @implementation NSString (NSString_Extended)
17 - (NSString *)urlencode { 17 - (NSString *)urlencode {
18 NSMutableString *output = [NSMutableString string]; 18 NSMutableString *output = [NSMutableString string];
19 const unsigned char *source = (const unsigned char *)[self UTF8String]; 19 const unsigned char *source = (const unsigned char *)[self UTF8String];
20 int sourceLen = (int)strlen((const char *)source); 20 int sourceLen = (int)strlen((const char *)source);
21 for (int i = 0; i < sourceLen; ++i) { 21 for (int i = 0; i < sourceLen; ++i) {
22 const unsigned char thisChar = source[i]; 22 const unsigned char thisChar = source[i];
23 if (thisChar == ' '){ 23 if (thisChar == ' '){
24 [output appendString:@"+"]; 24 [output appendString:@"+"];
25 } else if (thisChar == '.' || thisChar == '-' || thisChar == '_' || thisChar == '~' || 25 } else if (thisChar == '.' || thisChar == '-' || thisChar == '_' || thisChar == '~' ||
26 (thisChar >= 'a' && thisChar <= 'z') || 26 (thisChar >= 'a' && thisChar <= 'z') ||
27 (thisChar >= 'A' && thisChar <= 'Z') || 27 (thisChar >= 'A' && thisChar <= 'Z') ||
28 (thisChar >= '0' && thisChar <= '9')) { 28 (thisChar >= '0' && thisChar <= '9')) {
29 [output appendFormat:@"%c", thisChar]; 29 [output appendFormat:@"%c", thisChar];
30 } else { 30 } else {
31 [output appendFormat:@"%%%02X", thisChar]; 31 [output appendFormat:@"%%%02X", thisChar];
32 } 32 }
33 } 33 }
34 return output; 34 return output;
35 } 35 }
36 @end 36 @end
37 37
38 @implementation ServerAPI 38 @implementation ServerAPI
39 static ServerAPI *_server = nil; 39 static ServerAPI *_server = nil;
40 40
41 NSURLSessionDataTask * searchTask; 41 NSURLSessionDataTask * searchTask;
42 42
43 @synthesize timeOutInterval = _timeOutInterval; 43 @synthesize timeOutInterval = _timeOutInterval;
44 44
45 + (instancetype)server 45 + (instancetype)server
46 { 46 {
47 @synchronized(self) { 47 @synchronized(self) {
48 if (_server == nil) { 48 if (_server == nil) {
49 _server = [[ServerAPI alloc] init]; 49 _server = [[ServerAPI alloc] init];
50 } 50 }
51 } 51 }
52 return _server; 52 return _server;
53 } 53 }
54 54
55 - (instancetype)init 55 - (instancetype)init
56 { 56 {
57 self = [super init]; 57 self = [super init];
58 if (self != nil) { 58 if (self != nil) {
59 self.timeOutInterval = 150; 59 self.timeOutInterval = 150;
60 } 60 }
61 return self; 61 return self;
62 } 62 }
63 63
64 #pragma mark - Login and Register 64 #pragma mark - Login and Register
65 // Login 65 // Login
66 - (void)loginWithEmail:(NSString *)email Password:(NSString *)password CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion 66 - (void)loginWithEmail:(NSString *)email Password:(NSString *)password CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion
67 { 67 {
68 [self _request:[kServerAddress stringByAppendingFormat: @"login"] method:@"POST" token:@"" paras:@{@"email":email, @"password": password} completion:^(NSData *data, NSError *error) { 68 [self _request:[kServerAddress stringByAppendingFormat: @"login"] method:@"POST" token:@"" paras:@{@"email":email, @"password": password} completion:^(NSData *data, NSError *error) {
69 69
70 if (completion == NULL) { 70 if (completion == NULL) {
71 return ; 71 return ;
72 } 72 }
73 73
74 if (error == nil) 74 if (error == nil)
75 { 75 {
76 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 76 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
77 77
78 int status = [dataResult[@"status"] intValue]; 78 int status = [dataResult[@"status"] intValue];
79 if (status == 1) { // status = 1 success 79 if (status == 1) { // status = 1 success
80 NSString *token = dataResult[@"result"][@"token"]; 80 NSString *token = dataResult[@"result"][@"token"];
81 NSDictionary *dictUser = dataResult[@"result"][@"user"]; 81 NSDictionary *dictUser = dataResult[@"result"][@"user"];
82 User *user = [[User alloc] init]; 82 User *user = [[User alloc] init];
83 user.user_id = [NSString stringWithFormat:@"%@",dictUser[@"id"]]; 83 user.user_id = [NSString stringWithFormat:@"%@",dictUser[@"id"]];
84 user.username = [NSString stringWithFormat:@"%@",dictUser[@"username"]]; 84 user.username = [NSString stringWithFormat:@"%@",dictUser[@"username"]];
85 user.full_name = [NSString stringWithFormat:@"%@",dictUser[@"full_name"]]; 85 user.full_name = [NSString stringWithFormat:@"%@",dictUser[@"full_name"]];
86 user.nickname = [NSString stringWithFormat:@"%@",dictUser[@"nickname"]]; 86 user.nickname = [NSString stringWithFormat:@"%@",dictUser[@"nickname"]];
87 user.email = [NSString stringWithFormat:@"%@",dictUser[@"email"]]; 87 user.email = [NSString stringWithFormat:@"%@",dictUser[@"email"]];
88 user.password = [NSString stringWithFormat:@"%@",dictUser[@"password"]]; 88 user.password = [NSString stringWithFormat:@"%@",dictUser[@"password"]];
89 user.birthday = [NSString stringWithFormat:@"%@",dictUser[@"birthday"]]; 89 user.birthday = [NSString stringWithFormat:@"%@",dictUser[@"birthday"]];
90 user.address = [NSString stringWithFormat:@"%@",dictUser[@"address"]]; 90 user.address = [NSString stringWithFormat:@"%@",dictUser[@"address"]];
91 user.gender = [[NSString stringWithFormat:@"%@",dictUser[@"gender"]] intValue]; 91 user.gender = [[NSString stringWithFormat:@"%@",dictUser[@"gender"]] intValue];
92 user.height = [[NSString stringWithFormat:@"%@",dictUser[@"height"]] floatValue]; 92 user.height = [[NSString stringWithFormat:@"%@",dictUser[@"height"]] floatValue];
93 user.weight = [[NSString stringWithFormat:@"%@",dictUser[@"weight"]] floatValue]; 93 user.weight = [[NSString stringWithFormat:@"%@",dictUser[@"weight"]] floatValue];
94 user.user_description = [NSString stringWithFormat:@"%@",dictUser[@"description"]]; 94 user.user_description = [NSString stringWithFormat:@"%@",dictUser[@"description"]];
95 user.created_at = [NSString stringWithFormat:@"%@",dictUser[@"created_at"]]; 95 user.created_at = [NSString stringWithFormat:@"%@",dictUser[@"created_at"]];
96 user.physical_activity = [NSString stringWithFormat:@"%@",dictUser[@"physical_activity"]]; 96 user.physical_activity = [NSString stringWithFormat:@"%@",dictUser[@"physical_activity"]];
97 user.profile_image = [NSString stringWithFormat:@"%@",dictUser[@"profile_image"]]; 97 user.profile_image = [NSString stringWithFormat:@"%@",dictUser[@"profile_image"]];
98 user.updated_at = [NSString stringWithFormat:@"%@",dictUser[@"updated_at"]]; 98 user.updated_at = [NSString stringWithFormat:@"%@",dictUser[@"updated_at"]];
99 user.delete_flag = [[NSString stringWithFormat:@"%@",dictUser[@"delete_flag"]] intValue]; 99 user.delete_flag = [[NSString stringWithFormat:@"%@",dictUser[@"delete_flag"]] intValue];
100 user.fat_rate = [[NSString stringWithFormat:@"%@",dictUser[@"fat_rate"]] intValue]; 100 user.fat_rate = [[NSString stringWithFormat:@"%@",dictUser[@"fat_rate"]] intValue];
101 user.profiles_share = [[NSString stringWithFormat:@"%@",dictUser[@"profiles_share"]] intValue]; 101 user.profiles_share = [[NSString stringWithFormat:@"%@",dictUser[@"profiles_share"]] intValue];
102 user.remember_me = [[NSString stringWithFormat:@"%@",dictUser[@"remember_me"]] intValue]; 102 user.remember_me = [[NSString stringWithFormat:@"%@",dictUser[@"remember_me"]] intValue];
103 user.sound_notifications_share = [[NSString stringWithFormat:@"%@",dictUser[@"sound_notifications_share"]] intValue]; 103 user.sound_notifications_share = [[NSString stringWithFormat:@"%@",dictUser[@"sound_notifications_share"]] intValue];
104 user.spend_calo_in_day = [[NSString stringWithFormat:@"%@",dictUser[@"spend_calo_in_day"]] intValue]; 104 user.spend_calo_in_day = [[NSString stringWithFormat:@"%@",dictUser[@"spend_calo_in_day"]] intValue];
105 user.target = [[NSString stringWithFormat:@"%@",dictUser[@"target"]] intValue]; 105 user.target = [[NSString stringWithFormat:@"%@",dictUser[@"target"]] intValue];
106 completion(user, token, nil); 106 completion(user, token, nil);
107 } 107 }
108 else { // status = 0 error 108 else { // status = 0 error
109 NSString *message = dataResult[@"message"]; 109 NSString *message = dataResult[@"message"];
110 if (message == nil) { 110 if (message == nil) {
111 message = @"Unknown error"; 111 message = @"Unknown error";
112 } 112 }
113 NSError *loginFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 113 NSError *loginFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
114 completion(nil, nil, loginFaild); 114 completion(nil, nil, loginFaild);
115 } 115 }
116 } 116 }
117 else 117 else
118 { 118 {
119 completion(nil, nil, error); 119 completion(nil, nil, error);
120 } 120 }
121 }]; 121 }];
122 } 122 }
123 123
124 // Register 124 // Register
125 - (void)registerUserWithParams:(NSDictionary *)params CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion { 125 - (void)registerUserWithParams:(NSDictionary *)params CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion {
126 [self _request:[kServerAddress stringByAppendingFormat: @"register"] method:@"POST" token:@"" paras:params completion:^(NSData *data, NSError *error) { 126 [self _request:[kServerAddress stringByAppendingFormat: @"register"] method:@"POST" token:@"" paras:params completion:^(NSData *data, NSError *error) {
127 127
128 if (completion == NULL) { 128 if (completion == NULL) {
129 return ; 129 return ;
130 } 130 }
131 131
132 if (error == nil) 132 if (error == nil)
133 { 133 {
134 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 134 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
135 135
136 int status = [dataResult[@"status"] intValue]; 136 int status = [dataResult[@"status"] intValue];
137 if (status == 1) { // status = 1 success 137 if (status == 1) { // status = 1 success
138 NSString *token = dataResult[@"result"][@"token"]; 138 NSString *token = dataResult[@"result"][@"token"];
139 NSDictionary *dictUser = dataResult[@"result"][@"user"]; 139 NSDictionary *dictUser = dataResult[@"result"][@"user"];
140 User *user = [[User alloc] init]; 140 User *user = [[User alloc] init];
141 user.user_id = [NSString stringWithFormat:@"%@",dictUser[@"id"]]; 141 user.user_id = [NSString stringWithFormat:@"%@",dictUser[@"id"]];
142 user.username = [NSString stringWithFormat:@"%@",dictUser[@"username"]]; 142 user.username = [NSString stringWithFormat:@"%@",dictUser[@"username"]];
143 user.full_name = [NSString stringWithFormat:@"%@",dictUser[@"full_name"]]; 143 user.full_name = [NSString stringWithFormat:@"%@",dictUser[@"full_name"]];
144 user.nickname = [NSString stringWithFormat:@"%@",dictUser[@"nickname"]]; 144 user.nickname = [NSString stringWithFormat:@"%@",dictUser[@"nickname"]];
145 user.email = [NSString stringWithFormat:@"%@",dictUser[@"email"]]; 145 user.email = [NSString stringWithFormat:@"%@",dictUser[@"email"]];
146 user.password = [NSString stringWithFormat:@"%@",dictUser[@"password"]]; 146 user.password = [NSString stringWithFormat:@"%@",dictUser[@"password"]];
147 user.birthday = [NSString stringWithFormat:@"%@",dictUser[@"birthday"]]; 147 user.birthday = [NSString stringWithFormat:@"%@",dictUser[@"birthday"]];
148 user.address = [NSString stringWithFormat:@"%@",dictUser[@"address"]]; 148 user.address = [NSString stringWithFormat:@"%@",dictUser[@"address"]];
149 user.gender = [[NSString stringWithFormat:@"%@",dictUser[@"gender"]] intValue]; 149 user.gender = [[NSString stringWithFormat:@"%@",dictUser[@"gender"]] intValue];
150 user.height = [[NSString stringWithFormat:@"%@",dictUser[@"height"]] floatValue]; 150 user.height = [[NSString stringWithFormat:@"%@",dictUser[@"height"]] floatValue];
151 user.weight = [[NSString stringWithFormat:@"%@",dictUser[@"weight"]] floatValue]; 151 user.weight = [[NSString stringWithFormat:@"%@",dictUser[@"weight"]] floatValue];
152 user.user_description = [NSString stringWithFormat:@"%@",dictUser[@"description"]]; 152 user.user_description = [NSString stringWithFormat:@"%@",dictUser[@"description"]];
153 user.created_at = [NSString stringWithFormat:@"%@",dictUser[@"created_at"]]; 153 user.created_at = [NSString stringWithFormat:@"%@",dictUser[@"created_at"]];
154 user.physical_activity = [NSString stringWithFormat:@"%@",dictUser[@"physical_activity"]]; 154 user.physical_activity = [NSString stringWithFormat:@"%@",dictUser[@"physical_activity"]];
155 user.profile_image = [NSString stringWithFormat:@"%@",dictUser[@"profile_image"]]; 155 user.profile_image = [NSString stringWithFormat:@"%@",dictUser[@"profile_image"]];
156 user.updated_at = [NSString stringWithFormat:@"%@",dictUser[@"updated_at"]]; 156 user.updated_at = [NSString stringWithFormat:@"%@",dictUser[@"updated_at"]];
157 user.delete_flag = [[NSString stringWithFormat:@"%@",dictUser[@"delete_flag"]] intValue]; 157 user.delete_flag = [[NSString stringWithFormat:@"%@",dictUser[@"delete_flag"]] intValue];
158 user.fat_rate = [[NSString stringWithFormat:@"%@",dictUser[@"fat_rate"]] intValue]; 158 user.fat_rate = [[NSString stringWithFormat:@"%@",dictUser[@"fat_rate"]] intValue];
159 user.profiles_share = [[NSString stringWithFormat:@"%@",dictUser[@"profiles_share"]] intValue]; 159 user.profiles_share = [[NSString stringWithFormat:@"%@",dictUser[@"profiles_share"]] intValue];
160 user.remember_me = [[NSString stringWithFormat:@"%@",dictUser[@"remember_me"]] intValue]; 160 user.remember_me = [[NSString stringWithFormat:@"%@",dictUser[@"remember_me"]] intValue];
161 user.sound_notifications_share = [[NSString stringWithFormat:@"%@",dictUser[@"sound_notifications_share"]] intValue]; 161 user.sound_notifications_share = [[NSString stringWithFormat:@"%@",dictUser[@"sound_notifications_share"]] intValue];
162 user.spend_calo_in_day = [[NSString stringWithFormat:@"%@",dictUser[@"spend_calo_in_day"]] intValue]; 162 user.spend_calo_in_day = [[NSString stringWithFormat:@"%@",dictUser[@"spend_calo_in_day"]] intValue];
163 user.target = [[NSString stringWithFormat:@"%@",dictUser[@"target"]] intValue]; 163 user.target = [[NSString stringWithFormat:@"%@",dictUser[@"target"]] intValue];
164 completion(user, token, nil); 164 completion(user, token, nil);
165 } 165 }
166 else { // status = 0 error 166 else { // status = 0 error
167 NSString *message = dataResult[@"message"]; 167 NSString *message = dataResult[@"message"];
168 if (message == nil) { 168 if (message == nil) {
169 message = @"Unknown error"; 169 message = @"Unknown error";
170 } 170 }
171 NSError *loginFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 171 NSError *loginFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
172 completion(nil, nil, loginFaild); 172 completion(nil, nil, loginFaild);
173 } 173 }
174 } 174 }
175 else 175 else
176 { 176 {
177 completion(nil, nil, error); 177 completion(nil, nil, error);
178 } 178 }
179 }]; 179 }];
180 } 180 }
181 181
182 - (void)forgetPass:(NSString *)email CompletionHandler:(void (^)(NSError *)) completion { 182 - (void)forgetPass:(NSString *)email CompletionHandler:(void (^)(NSError *)) completion {
183 [self _request:[kServerAddress stringByAppendingFormat: @"forgetPass"] method:@"POST" token:@"" paras:@{@"email":email} completion:^(NSData *data, NSError *error) { 183 [self _request:[kServerAddress stringByAppendingFormat: @"forgetPass"] method:@"POST" token:@"" paras:@{@"email":email} completion:^(NSData *data, NSError *error) {
184 184
185 if (completion == NULL) { 185 if (completion == NULL) {
186 return ; 186 return ;
187 } 187 }
188 188
189 if (error == nil) 189 if (error == nil)
190 { 190 {
191 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 191 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
192 192
193 int status = [dataResult[@"status"] intValue]; 193 int status = [dataResult[@"status"] intValue];
194 if (status == 1) { // status = 1 success 194 if (status == 1) { // status = 1 success
195 completion(nil); 195 completion(nil);
196 } 196 }
197 else { // status = 0 error 197 else { // status = 0 error
198 NSString *message = dataResult[@"message"]; 198 NSString *message = dataResult[@"message"];
199 if (message == nil) { 199 if (message == nil) {
200 message = @"Unknown error"; 200 message = @"Unknown error";
201 } 201 }
202 NSError *forgetPass = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 202 NSError *forgetPass = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
203 completion(forgetPass); 203 completion(forgetPass);
204 } 204 }
205 } 205 }
206 else 206 else
207 { 207 {
208 completion(error); 208 completion(error);
209 } 209 }
210 }]; 210 }];
211 } 211 }
212 - (void)confirmForgetPass:(NSString *)email withConfirm:(NSString *)confirm CompletionHandler:(void (^)(NSError *)) completion { 212 - (void)confirmForgetPass:(NSString *)email withConfirm:(NSString *)confirm CompletionHandler:(void (^)(NSError *)) completion {
213 [self _request:[kServerAddress stringByAppendingFormat: @"forgetPass/confirm"] method:@"POST" token:@"" paras:@{@"email":email, @"code_confirm": confirm} completion:^(NSData *data, NSError *error) { 213 [self _request:[kServerAddress stringByAppendingFormat: @"forgetPass/confirm"] method:@"POST" token:@"" paras:@{@"email":email, @"code_confirm": confirm} completion:^(NSData *data, NSError *error) {
214 214
215 if (completion == NULL) { 215 if (completion == NULL) {
216 return ; 216 return ;
217 } 217 }
218 218
219 if (error == nil) 219 if (error == nil)
220 { 220 {
221 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 221 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
222 222
223 int status = [dataResult[@"status"] intValue]; 223 int status = [dataResult[@"status"] intValue];
224 if (status == 1) { // status = 1 success 224 if (status == 1) { // status = 1 success
225 completion(nil); 225 completion(nil);
226 } 226 }
227 else { // status = 0 error 227 else { // status = 0 error
228 NSString *message = dataResult[@"message"]; 228 NSString *message = dataResult[@"message"];
229 NSError *confirmForgetPass = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 229 NSError *confirmForgetPass = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
230 completion(confirmForgetPass); 230 completion(confirmForgetPass);
231 } 231 }
232 } 232 }
233 else 233 else
234 { 234 {
235 completion(error); 235 completion(error);
236 } 236 }
237 }]; 237 }];
238 } 238 }
239 239
240 - (void)uploadImage:(NSString *)token andImageData:(NSData *)data CompletionHandler:(void (^)(NSString *, NSError *)) completion { 240 - (void)uploadImage:(NSString *)token andImageData:(NSData *)data CompletionHandler:(void (^)(NSString *, NSError *)) completion {
241 NSDictionary *dict = nil; 241 NSDictionary *dict = nil;
242 NSString *base64Encoded = [data base64EncodedStringWithOptions:0]; 242 NSString *base64Encoded = [data base64EncodedStringWithOptions:0];
243 if (token != nil) { 243 if (token != nil) {
244 dict = @{@"token":token, @"img": base64Encoded}; 244 dict = @{@"token":token, @"img": base64Encoded};
245 } 245 }
246 else { 246 else {
247 dict = @{@"img": base64Encoded}; 247 dict = @{@"img": base64Encoded};
248 } 248 }
249 [self _request:[kServerAddress stringByAppendingFormat: @"upload-image"] method:@"POST" token:token paras:dict completion:^(NSData *data, NSError *error) { 249 [self _request:[kServerAddress stringByAppendingFormat: @"upload-image"] method:@"POST" token:token paras:dict completion:^(NSData *data, NSError *error) {
250 250
251 if (completion == NULL) { 251 if (completion == NULL) {
252 return ; 252 return ;
253 } 253 }
254 254
255 if (error == nil) 255 if (error == nil)
256 { 256 {
257 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 257 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
258 NSString *image_profile = [NSString stringWithFormat:@"%@", dataResult[@"message"]]; 258 NSString *image_profile = [NSString stringWithFormat:@"%@", dataResult[@"message"]];
259 completion(image_profile, nil); 259 completion(image_profile, nil);
260 } 260 }
261 else 261 else
262 { 262 {
263 completion(nil, error); 263 completion(nil, error);
264 } 264 }
265 }]; 265 }];
266 } 266 }
267 267
268 -(NSString *) convertIntToString : (int) type { 268 -(NSString *) convertIntToString : (int) type {
269 switch (type) { 269 switch (type) {
270 case 1: 270 case 1:
271 return @"week"; 271 return @"week";
272 break; 272 break;
273 case 2: 273 case 2:
274 return @"oneMonth"; 274 return @"oneMonth";
275 break; 275 break;
276 case 3: 276 case 3:
277 return @"threeMonth"; 277 return @"threeMonth";
278 break; 278 break;
279 case 4: 279 case 4:
280 return @"sixMonth"; 280 return @"sixMonth";
281 break; 281 break;
282 default: 282 default:
283 return @"today"; 283 return @"today";
284 break; 284 break;
285 } 285 }
286 } 286 }
287 287
288 #pragma mark - Home Screen Function 288 #pragma mark - Home Screen Function
289 - (void)requestTopWithMode:(int)mode andDate:(NSString *)date CompletionHandler:(void (^)(TopObject *, NSError *)) completion 289 - (void)requestTopWithMode:(int)mode andDate:(NSString *)date CompletionHandler:(void (^)(TopObject *, NSError *)) completion
290 { 290 {
291 NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken]; 291 NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken];
292 NSString *url = [kServerAddress stringByAppendingFormat:@"api/top/%d/%@", mode, date]; 292 NSString *url = [kServerAddress stringByAppendingFormat:@"api/top/%d/%@", mode, date];
293 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) { 293 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
294 294
295 if (completion == NULL) { 295 if (completion == NULL) {
296 return ; 296 return ;
297 } 297 }
298 298
299 if (error == nil) 299 if (error == nil)
300 { 300 {
301 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 301 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
302 int status = [dataResult[@"status"] intValue]; 302 int status = [dataResult[@"status"] intValue];
303 if (status == 1) { // status = 1 success 303 if (status == 1) { // status = 1 success
304 if(dataResult[@"result"] != nil) { 304 if(dataResult[@"result"] != nil) {
305 NSDictionary * dictResult = dataResult[@"result"]; 305 NSDictionary * dictResult = dataResult[@"result"];
306 TopObject *topObject = [[TopObject alloc] init]; 306 TopObject *topObject = [[TopObject alloc] init];
307 TargetInfor *targetInfor = [[TargetInfor alloc] initWithData:dictResult[@"targetInf"]]; 307 TargetInfor *targetInfor = [[TargetInfor alloc] initWithData:dictResult[@"targetInf"]];
308 topObject.targetInfor = targetInfor; 308 topObject.targetInfor = targetInfor;
309 topObject.kcal = [[NSString stringWithFormat:@"%@", dictResult[@"kcal"]] intValue]; 309 topObject.kcal = [[NSString stringWithFormat:@"%@", dictResult[@"kcal"]] intValue];
310 topObject.distance = [[NSString stringWithFormat:@"%@", dictResult[@"distance"]] floatValue]; 310 topObject.distance = [[NSString stringWithFormat:@"%@", dictResult[@"distance"]] floatValue];
311 topObject.time = [NSString stringWithFormat:@"%@", dictResult[@"time"]]; 311 topObject.time = [NSString stringWithFormat:@"%@", dictResult[@"time"]];
312 NSMutableArray *arrayStep = [[NSMutableArray alloc] init]; 312 NSMutableArray *arrayStep = [[NSMutableArray alloc] init];
313 NSArray *array = dictResult[@"dataChart"]; 313 NSArray *array = dictResult[@"dataChart"];
314 for(NSDictionary *dict in array) { 314 for(NSDictionary *dict in array) {
315 StepObject *object = [[StepObject alloc] init]; 315 StepObject *object = [[StepObject alloc] init];
316 if([dict objectForKey:@"numStep"] != nil) { 316 if([dict objectForKey:@"numStep"] != nil) {
317 object.step = [dict[@"numStep"] intValue]; 317 object.step = [dict[@"numStep"] intValue];
318 } 318 }
319 if([dict objectForKey:@"hour"] != nil) { 319 if([dict objectForKey:@"hour"] != nil) {
320 object.hour = [dict[@"hour"] intValue]; 320 object.hour = [dict[@"hour"] intValue];
321 } 321 }
322 switch (mode) { 322 switch (mode) {
323 case 1: 323 case 1:
324 object.typeStep = @"walking"; 324 object.typeStep = @"walking";
325 break; 325 break;
326 case 2: 326 case 2:
327 object.typeStep = @"running"; 327 object.typeStep = @"running";
328 break; 328 break;
329 case 3: 329 case 3:
330 object.typeStep = @"bike"; 330 object.typeStep = @"bike";
331 break; 331 break;
332 default: 332 default:
333 break; 333 break;
334 } 334 }
335 [arrayStep addObject:object]; 335 [arrayStep addObject:object];
336 } 336 }
337 topObject.dataChart = [[NSMutableArray alloc] initWithArray:arrayStep]; 337 topObject.dataChart = [[NSMutableArray alloc] initWithArray:arrayStep];
338 completion(topObject, nil); 338 completion(topObject, nil);
339 } 339 }
340 else { 340 else {
341 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 341 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
342 completion(nil, errorObject); 342 completion(nil, errorObject);
343 } 343 }
344 } 344 }
345 else { 345 else {
346 NSString *message = dataResult[@"message"]; 346 NSString *message = dataResult[@"message"];
347 if (message == nil) { 347 if (message == nil) {
348 message = @"Unknown error"; 348 message = @"Unknown error";
349 } 349 }
350 350
351 if ([message isEqualToString:@"Token is invalid"]) { 351 if ([message isEqualToString:@"Token is invalid"]) {
352 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 352 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
353 [self requestTopWithMode:mode andDate:date CompletionHandler:completion]; 353 [self requestTopWithMode:mode andDate:date CompletionHandler:completion];
354 } 354 }
355 else { 355 else {
356 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 356 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
357 completion(nil, errorObject); 357 completion(nil, errorObject);
358 } 358 }
359 } 359 }
360 } 360 }
361 else 361 else
362 { 362 {
363 completion(nil, error); 363 completion(nil, error);
364 } 364 }
365 }]; 365 }];
366 } 366 }
367 367
368 - (void)requestCreateLog:(int)mode withStep:(int)numStep startDate:(NSString *)startDate endDate:(NSString *)endDate CompletionHandler:(void (^)(NSError *))completion { 368 - (void)requestCreateLog:(int)mode withStep:(int)numStep startDate:(NSString *)startDate endDate:(NSString *)endDate CompletionHandler:(void (^)(NSError *))completion {
369 NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken]; 369 NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken];
370 NSString *url = [kServerAddress stringByAppendingFormat:@"api/createLog"]; 370 NSString *url = [kServerAddress stringByAppendingFormat:@"api/createLog"];
371 NSDictionary *dict = @{@"mode": [NSNumber numberWithInt:mode], @"numStep": [NSNumber numberWithInt:numStep], @"startTime": startDate, @"endTime": endDate}; 371 NSDictionary *dict = @{@"mode": [NSNumber numberWithInt:mode], @"numStep": [NSNumber numberWithInt:numStep], @"startTime": startDate, @"endTime": endDate};
372 [self _request:url method:@"POST" token:token paras:dict completion:^(NSData *data, NSError *error) { 372 [self _request:url method:@"POST" token:token paras:dict completion:^(NSData *data, NSError *error) {
373 373
374 if (completion == NULL) { 374 if (completion == NULL) {
375 return ; 375 return ;
376 } 376 }
377 377
378 if (error == nil) 378 if (error == nil)
379 { 379 {
380 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 380 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
381 int status = [dataResult[@"status"] intValue]; 381 int status = [dataResult[@"status"] intValue];
382 if (status == 1) { // status = 1 success 382 if (status == 1) { // status = 1 success
383 completion(nil); 383 completion(nil);
384 } 384 }
385 else { 385 else {
386 NSString *message = dataResult[@"message"]; 386 NSString *message = dataResult[@"message"];
387 if (message == nil) { 387 if (message == nil) {
388 message = @"Unknown error"; 388 message = @"Unknown error";
389 } 389 }
390 390
391 if ([message isEqualToString:@"Token is invalid"]) { 391 if ([message isEqualToString:@"Token is invalid"]) {
392 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 392 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
393 [self requestCreateLog:mode withStep:numStep startDate:startDate endDate:endDate CompletionHandler:completion]; 393 [self requestCreateLog:mode withStep:numStep startDate:startDate endDate:endDate CompletionHandler:completion];
394 } 394 }
395 else { 395 else {
396 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 396 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
397 completion(errorObject); 397 completion(errorObject);
398 } 398 }
399 } 399 }
400 } 400 }
401 else 401 else
402 { 402 {
403 completion(error); 403 completion(error);
404 } 404 }
405 }]; 405 }];
406 } 406 }
407 407
408 #pragma mark - History Screen Function 408 #pragma mark - History Screen Function
409 - (void) requestHistory:(NSString *)token atDate:(NSDate *)date withType:(int)type andMode:(int) mode CompletionHandler:(void (^)(HistoryObject *, NSError *)) completion { 409 - (void) requestHistory:(NSString *)token atDate:(NSDate *)date withType:(int)type andMode:(int) mode CompletionHandler:(void (^)(HistoryObject *, NSError *)) completion {
410 NSString *url = [kServerAddress stringByAppendingFormat:@"/api/history/%@/%d", [self convertIntToString:type], mode]; 410 NSString *url = [kServerAddress stringByAppendingFormat:@"/api/history/%@/%d", [self convertIntToString:type], mode];
411 NSLog(@"requestHistory link %@", url); 411 NSLog(@"requestHistory link %@", url);
412 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) { 412 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
413 413
414 if (completion == NULL) { 414 if (completion == NULL) {
415 return ; 415 return ;
416 } 416 }
417 417
418 if (error == nil) 418 if (error == nil)
419 { 419 {
420 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 420 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
421 NSLog(@"%@", dataResult); 421 NSLog(@"%@", dataResult);
422 int status = [dataResult[@"status"] intValue]; 422 int status = [dataResult[@"status"] intValue];
423 if (status == 1) { // status = 1 success 423 if (status == 1) { // status = 1 success
424 HistoryObject * object = [[HistoryObject alloc] initWithData:dataResult[@"result"]]; 424 HistoryObject * object = [[HistoryObject alloc] initWithData:dataResult[@"result"]];
425 completion(object, nil); 425 completion(object, nil);
426 } 426 }
427 else { 427 else {
428 NSString *message = dataResult[@"message"]; 428 NSString *message = dataResult[@"message"];
429 if (message == nil) { 429 if (message == nil) {
430 message = @"Unknown error"; 430 message = @"Unknown error";
431 } 431 }
432 432
433 if ([message isEqualToString:@"Token is invalid"]) { 433 if ([message isEqualToString:@"Token is invalid"]) {
434 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 434 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
435 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 435 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
436 [self requestHistory:tokenNew atDate:date withType:type andMode:mode CompletionHandler:completion]; 436 [self requestHistory:tokenNew atDate:date withType:type andMode:mode CompletionHandler:completion];
437 } 437 }
438 else { 438 else {
439 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 439 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
440 completion(nil, errorObject); 440 completion(nil, errorObject);
441 } 441 }
442 } 442 }
443 } 443 }
444 else 444 else
445 { 445 {
446 completion(nil, error); 446 completion(nil, error);
447 } 447 }
448 }]; 448 }];
449 } 449 }
450 450
451 - (void) requestHistoryGraph:(NSString *)token withType:(int)type andMode:(int) mode CompletionHandler:(void (^)(HistoryGraphObject *, NSError *)) completion { 451 - (void) requestHistoryGraph:(NSString *)token withType:(int)type andMode:(int) mode CompletionHandler:(void (^)(HistoryGraphObject *, NSError *)) completion {
452 NSString *url = [kServerAddress stringByAppendingFormat:@"/api/history/graph/%@/%d", [self convertIntToString:type], mode]; 452 NSString *url = [kServerAddress stringByAppendingFormat:@"/api/history/graph/%@/%d", [self convertIntToString:type], mode];
453 NSLog(@"requestHistoryGraph link %@", url); 453 NSLog(@"requestHistoryGraph link %@", url);
454 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) { 454 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
455 455
456 if (completion == NULL) { 456 if (completion == NULL) {
457 return ; 457 return ;
458 } 458 }
459 459
460 if (error == nil) 460 if (error == nil)
461 { 461 {
462 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 462 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
463 NSLog(@"%@", dataResult); 463 NSLog(@"%@", dataResult);
464 int status = [dataResult[@"status"] intValue]; 464 int status = [dataResult[@"status"] intValue];
465 if (status == 1) { // status = 1 success 465 if (status == 1) { // status = 1 success
466 HistoryGraphObject * object = [[HistoryGraphObject alloc] initWithData:dataResult[@"result"]]; 466 HistoryGraphObject * object = [[HistoryGraphObject alloc] initWithData:dataResult[@"result"]];
467 completion(object, nil); 467 completion(object, nil);
468 } 468 }
469 else { 469 else {
470 NSString *message = dataResult[@"message"]; 470 NSString *message = dataResult[@"message"];
471 if (message == nil) { 471 if (message == nil) {
472 message = @"Unknown error"; 472 message = @"Unknown error";
473 } 473 }
474 474
475 if ([message isEqualToString:@"Token is invalid"]) { 475 if ([message isEqualToString:@"Token is invalid"]) {
476 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 476 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
477 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 477 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
478 [self requestHistoryGraph:tokenNew withType:type andMode:mode CompletionHandler:completion]; 478 [self requestHistoryGraph:tokenNew withType:type andMode:mode CompletionHandler:completion];
479 } 479 }
480 else { 480 else {
481 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 481 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
482 completion(nil, errorObject); 482 completion(nil, errorObject);
483 } 483 }
484 } 484 }
485 } 485 }
486 else 486 else
487 { 487 {
488 completion(nil, error); 488 completion(nil, error);
489 } 489 }
490 }]; 490 }];
491 } 491 }
492 492
493 - (void) requestHistoryList:(NSString *)token withType:(int)type andMode:(int) mode AtPage:(int) page CompletionHandler:(void (^)(NSArray *, NSError *)) completion { 493 - (void) requestHistoryList:(NSString *)token withType:(int)type andMode:(int) mode AtPage:(int) page CompletionHandler:(void (^)(NSArray *, NSError *)) completion {
494 NSString *url = [kServerAddress stringByAppendingFormat:@"/api/history/list/%@/%d?page=%d&record=50", [self convertIntToString:type], mode, page]; 494 NSString *url = [kServerAddress stringByAppendingFormat:@"/api/history/list/%@/%d?page=%d&record=50", [self convertIntToString:type], mode, page];
495 NSLog(@"requestHistoryList link %@", url); 495 NSLog(@"requestHistoryList link %@", url);
496 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) { 496 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
497 497
498 if (completion == NULL) { 498 if (completion == NULL) {
499 return ; 499 return ;
500 } 500 }
501 501
502 if (error == nil) 502 if (error == nil)
503 { 503 {
504 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 504 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
505 NSLog(@"%@", dataResult); 505 NSLog(@"%@", dataResult);
506 int status = [dataResult[@"status"] intValue]; 506 int status = [dataResult[@"status"] intValue];
507 if (status == 1) { // status = 1 success 507 if (status == 1) { // status = 1 success
508 if(dataResult[@"result"] != nil) { 508 if(dataResult[@"result"] != nil) {
509 NSArray * array = dataResult[@"result"][@"data"]; 509 NSArray * array = dataResult[@"result"][@"data"];
510 NSMutableArray * arrayHistory = [[NSMutableArray alloc] init]; 510 NSMutableArray * arrayHistory = [[NSMutableArray alloc] init];
511 for(NSDictionary * dict in array) { 511 for(NSDictionary * dict in array) {
512 HistoryObject * object = [[HistoryObject alloc] initWithData:dict]; 512 HistoryObject * object = [[HistoryObject alloc] initWithData:dict];
513 [arrayHistory addObject:object]; 513 [arrayHistory addObject:object];
514 } 514 }
515 completion(arrayHistory, nil); 515 completion(arrayHistory, nil);
516 } 516 }
517 else { 517 else {
518 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 518 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
519 completion(nil, errorObject); 519 completion(nil, errorObject);
520 } 520 }
521 } 521 }
522 else { 522 else {
523 NSString *message = dataResult[@"message"]; 523 NSString *message = dataResult[@"message"];
524 if (message == nil) { 524 if (message == nil) {
525 message = @"Unknown error"; 525 message = @"Unknown error";
526 } 526 }
527 527
528 if ([message isEqualToString:@"Token is invalid"]) { 528 if ([message isEqualToString:@"Token is invalid"]) {
529 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 529 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
530 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 530 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
531 [self requestHistoryList:tokenNew withType:type andMode:mode AtPage:page CompletionHandler:completion]; 531 [self requestHistoryList:tokenNew withType:type andMode:mode AtPage:page CompletionHandler:completion];
532 } 532 }
533 else { 533 else {
534 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 534 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
535 completion(nil, errorObject); 535 completion(nil, errorObject);
536 } 536 }
537 } 537 }
538 } 538 }
539 else 539 else
540 { 540 {
541 completion(nil, error); 541 completion(nil, error);
542 } 542 }
543 }]; 543 }];
544 } 544 }
545 545
546 #pragma mark - SNS Screen Function 546 #pragma mark - SNS Screen Function
547 - (void) requestTweetsList:(NSString *)token groupID: (int) groupID withPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion { 547 - (void) requestTweetsList:(NSString *)token groupID: (int) groupID withPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion {
548 NSString *url = [kServerAddress stringByAppendingFormat:@"/api/sns/%d", page]; 548 NSString *url = [kServerAddress stringByAppendingFormat:@"/api/sns/%d", page];
549 if(groupID > -1) { 549 if(groupID > -1) {
550 url = [kServerAddress stringByAppendingFormat:@"api/tweet/list?group_id=%d&page=%d&record=10", groupID, page]; 550 url = [kServerAddress stringByAppendingFormat:@"api/tweet/list?group_id=%d&page=%d&record=10", groupID, page];
551 } 551 }
552 NSLog(@"requestTweetsList link %@", url); 552 NSLog(@"requestTweetsList link %@", url);
553 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) { 553 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
554 554
555 if (completion == NULL) { 555 if (completion == NULL) {
556 return ; 556 return ;
557 } 557 }
558 558
559 if (error == nil) 559 if (error == nil)
560 { 560 {
561 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 561 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
562 NSLog(@"%@", dataResult); 562 NSLog(@"%@", dataResult);
563 int status = [dataResult[@"status"] intValue]; 563 int status = [dataResult[@"status"] intValue];
564 if (status == 1) { // status = 1 success 564 if (status == 1) { // status = 1 success
565 if(dataResult[@"result"] != nil) { 565 if(dataResult[@"result"] != nil) {
566 NSArray * array = dataResult[@"result"]; 566 NSArray * array = dataResult[@"result"];
567 NSMutableArray * arrayTweets = [[NSMutableArray alloc] init]; 567 NSMutableArray * arrayTweets = [[NSMutableArray alloc] init];
568 for(NSDictionary * dict in array) { 568 for(NSDictionary * dict in array) {
569 TweetObject * object = [[TweetObject alloc] initWithData:dict]; 569 TweetObject * object = [[TweetObject alloc] initWithData:dict];
570 [arrayTweets addObject:object]; 570 [arrayTweets addObject:object];
571 } 571 }
572 completion(arrayTweets, nil); 572 completion(arrayTweets, nil);
573 } 573 }
574 else { 574 else {
575 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 575 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
576 completion(nil, errorObject); 576 completion(nil, errorObject);
577 } 577 }
578 } 578 }
579 else { 579 else {
580 NSString *message = dataResult[@"message"]; 580 NSString *message = dataResult[@"message"];
581 if (message == nil) { 581 if (message == nil) {
582 message = @"Unknown error"; 582 message = @"Unknown error";
583 } 583 }
584 584
585 if ([message isEqualToString:@"Token is invalid"]) { 585 if ([message isEqualToString:@"Token is invalid"]) {
586 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 586 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
587 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 587 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
588 [self requestTweetsList:tokenNew groupID:groupID withPage:page CompletionHandler:completion]; 588 [self requestTweetsList:tokenNew groupID:groupID withPage:page CompletionHandler:completion];
589 } 589 }
590 else { 590 else {
591 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 591 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
592 completion(nil, errorObject); 592 completion(nil, errorObject);
593 } 593 }
594 } 594 }
595 } 595 }
596 else 596 else
597 { 597 {
598 completion(nil, error); 598 completion(nil, error);
599 } 599 }
600 }]; 600 }];
601 } 601 }
602 602
603 - (void) searchGroup:(NSString *)token withKey:(NSString *)key andPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion { 603 - (void) searchGroup:(NSString *)token withKey:(NSString *)key andPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion {
604 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/search"]; 604 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/search"];
605 NSLog(@"searchGroup link %@ page %d", url, page); 605 NSLog(@"searchGroup link %@ page %d", url, page);
606 if(searchTask != nil) { 606 if(searchTask != nil) {
607 [searchTask cancel]; 607 [searchTask cancel];
608 } 608 }
609 609
610 searchTask = [self _request:url method:@"POST" token:token paras:@{@"keyword":key, @"page": [NSNumber numberWithInt:page]} completion:^(NSData *data, NSError *error) { 610 searchTask = [self _request:url method:@"POST" token:token paras:@{@"keyword":key, @"page": [NSNumber numberWithInt:page]} completion:^(NSData *data, NSError *error) {
611 searchTask = nil; 611 searchTask = nil;
612 if (completion == NULL) { 612 if (completion == NULL) {
613 return ; 613 return ;
614 } 614 }
615 615
616 if (error == nil) 616 if (error == nil)
617 { 617 {
618 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 618 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
619 NSLog(@"%@", dataResult); 619 NSLog(@"%@", dataResult);
620 int status = [dataResult[@"status"] intValue]; 620 int status = [dataResult[@"status"] intValue];
621 if (status == 1) { // status = 1 success 621 if (status == 1) { // status = 1 success
622 if(dataResult[@"result"] != nil) { 622 if(dataResult[@"result"] != nil) {
623 NSArray * array = dataResult[@"result"]; 623 NSArray * array = dataResult[@"result"];
624 NSMutableArray * arrayTweets = [[NSMutableArray alloc] init]; 624 NSMutableArray * arrayTweets = [[NSMutableArray alloc] init];
625 for(NSDictionary * dict in array) { 625 for(NSDictionary * dict in array) {
626 GroupObject * object = [[GroupObject alloc] initWithData:dict]; 626 GroupObject * object = [[GroupObject alloc] initWithData:dict];
627 [arrayTweets addObject:object]; 627 [arrayTweets addObject:object];
628 } 628 }
629 completion(arrayTweets, nil); 629 completion(arrayTweets, nil);
630 } 630 }
631 else { 631 else {
632 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 632 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
633 completion(nil, errorObject); 633 completion(nil, errorObject);
634 } 634 }
635 } 635 }
636 else { 636 else {
637 NSString *message = dataResult[@"message"]; 637 NSString *message = dataResult[@"message"];
638 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 638 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
639 completion(nil, errorObject); 639 completion(nil, errorObject);
640 } 640 }
641 } 641 }
642 else 642 else
643 { 643 {
644 completion(nil, error); 644 completion(nil, error);
645 } 645 }
646 }]; 646 }];
647 } 647 }
648 648
649 #pragma mark - Group Function 649 #pragma mark - Group Function
650 -(void) requestCreateGroup:(NSString *)token withGroup:(GroupObject *)group CompletionHandler:(void (^)(GroupObject *, NSError *)) completion {
651 NSString *url = [kServerAddress stringByAppendingFormat:@"api/groups/newGroup"];
652 NSLog(@"requestCreateGroup link %@", url);
653 NSDictionary * dict = @{@"group_name":group.name,
654 @"goal":group.goal,
655 @"walk_mode_active":[NSNumber numberWithBool:group.walkMode],
656 @"run_mode_active":[NSNumber numberWithBool:group.runMode],
657 @"bike_mode_active":[NSNumber numberWithBool:group.bikeMode],
658 @"step_mode_active":[NSNumber numberWithBool:group.stepMode],
659 @"gym_mode_active":[NSNumber numberWithBool:group.gymMode],
660 @"beginer_mode_active":[NSNumber numberWithBool:group.beginMode],
661 @"walk_mode_goal":[NSNumber numberWithBool:group.walkGoal],
662 @"run_mode_goal":[NSNumber numberWithBool:group.runGoal],
663 @"bike_mode_goal":[NSNumber numberWithBool:group.bikeGoal]};
664
665 [self _request:url method:@"POST" token:token paras:dict completion:^(NSData *data, NSError *error) {
666
667 if (completion == NULL) {
668 return ;
669 }
670
671 if (error == nil)
672 {
673 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
674 NSLog(@"%@", dataResult);
675 int status = [dataResult[@"status"] intValue];
676 if (status == 1) { // status = 1 success
677 if(dataResult[@"result"] != nil) {
678 NSDictionary * dict = dataResult[@"result"];
679 group.groupID = [dict[@"group_id"] intValue];
680 completion(group, nil);
681 }
682 else {
683 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
684 completion(nil, errorObject);
685 }
686 }
687 else {
688 NSString *message = dataResult[@"message"];
689 if (message == nil) {
690 message = @"Unknown error";
691 }
692
693 if ([message isEqualToString:@"Token is invalid"]) {
694 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
695 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
696 [self requestCreateGroup:tokenNew withGroup:group CompletionHandler:completion];
697 }
698 else {
699 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
700 completion(nil, errorObject);
701 }
702 }
703 }
704 else
705 {
706 completion(nil, error);
707 }
708 }];
709 }
710
650 -(void) requestCreateGroup:(NSString *)token withGroup:(GroupObject *)group CompletionHandler:(void (^)(GroupObject *, NSError *)) completion { 711 - (void) getGroupDetail:(NSString *)token withGroupID:(int)groupID CompletionHandler:(void (^)(GroupObject *, NSError *)) completion {
651 NSString *url = [kServerAddress stringByAppendingFormat:@"api/groups/newGroup"]; 712 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/detail/%d", groupID];
652 NSLog(@"requestCreateGroup link %@", url); 713 NSLog(@"getGroupDetail link %@", url);
653 NSDictionary * dict = @{@"group_name":group.name, 714 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
654 @"goal":group.goal, 715
655 @"walk_mode_active":[NSNumber numberWithBool:group.walkMode], 716 if (completion == NULL) {
656 @"run_mode_active":[NSNumber numberWithBool:group.runMode], 717 return ;
657 @"bike_mode_active":[NSNumber numberWithBool:group.bikeMode], 718 }
658 @"step_mode_active":[NSNumber numberWithBool:group.stepMode], 719
659 @"gym_mode_active":[NSNumber numberWithBool:group.gymMode], 720 if (error == nil)
660 @"beginer_mode_active":[NSNumber numberWithBool:group.beginMode], 721 {
661 @"walk_mode_goal":[NSNumber numberWithBool:group.walkGoal], 722 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
662 @"run_mode_goal":[NSNumber numberWithBool:group.runGoal], 723 NSLog(@"%@", dataResult);
663 @"bike_mode_goal":[NSNumber numberWithBool:group.bikeGoal]}; 724 int status = [dataResult[@"status"] intValue];
664 725 if (status == 1) { // status = 1 success
665 [self _request:url method:@"POST" token:token paras:dict completion:^(NSData *data, NSError *error) { 726 if(dataResult[@"result"] != nil) {
666 727 NSArray * array = dataResult[@"result"];
667 if (completion == NULL) { 728 GroupObject * object = [[GroupObject alloc] initWithData:array[0] andGroupID:groupID];
668 return ; 729 completion(object, nil);
669 } 730 }
670 731 else {
671 if (error == nil) 732 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
672 { 733 completion(nil, errorObject);
673 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 734 }
674 NSLog(@"%@", dataResult); 735 }
675 int status = [dataResult[@"status"] intValue]; 736 else {
676 if (status == 1) { // status = 1 success 737 NSString *message = dataResult[@"message"];
677 if(dataResult[@"result"] != nil) { 738 if (message == nil) {
678 NSDictionary * dict = dataResult[@"result"]; 739 message = @"Unknown error";
679 group.groupID = [dict[@"group_id"] intValue]; 740 }
680 completion(group, nil); 741
681 } 742 if ([message isEqualToString:@"Token is invalid"]) {
682 else { 743 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
683 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 744 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
684 completion(nil, errorObject); 745 [self getGroupDetail:tokenNew withGroupID:groupID CompletionHandler:completion];
685 } 746 }
686 } 747 else {
687 else { 748 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
688 NSString *message = dataResult[@"message"]; 749 completion(nil, errorObject);
689 if (message == nil) { 750 }
690 message = @"Unknown error"; 751 }
691 } 752 }
692 753 else
693 if ([message isEqualToString:@"Token is invalid"]) { 754 {
694 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 755 completion(nil, error);
695 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 756 }
696 [self requestCreateGroup:tokenNew withGroup:group CompletionHandler:completion]; 757 }];
697 } 758 }
698 else { 759
699 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 760 - (void) requestMemberList:(NSString *)token groupID: (int) groupID withPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion {
700 completion(nil, errorObject); 761 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/member/%d/%d", groupID, page];
701 } 762 NSLog(@"requestMemberList link %@ page %d", url, page);
702 } 763
703 } 764 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
704 else 765 if (completion == NULL) {
705 { 766 return ;
706 completion(nil, error); 767 }
707 } 768
708 }]; 769 if (error == nil)
709 } 770 {
710 771 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
711 - (void) getGroupDetail:(NSString *)token withGroupID:(int)groupID CompletionHandler:(void (^)(GroupObject *, NSError *)) completion { 772 NSLog(@"%@", dataResult);
712 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/detail/%d", groupID]; 773 int status = [dataResult[@"status"] intValue];
713 NSLog(@"getGroupDetail link %@", url); 774 if (status == 1) { // status = 1 success
714 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) { 775 if(dataResult[@"result"] != nil) {
715 776 NSArray * array = dataResult[@"result"];
716 if (completion == NULL) { 777 NSMutableArray * arrayTweets = [[NSMutableArray alloc] init];
717 return ; 778 for(NSDictionary * dict in array) {
718 } 779 MemberObject * object = [[MemberObject alloc] initWithData:dict];
719 780 [arrayTweets addObject:object];
720 if (error == nil) 781 }
721 { 782 completion(arrayTweets, nil);
722 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 783 }
723 NSLog(@"%@", dataResult); 784 else {
724 int status = [dataResult[@"status"] intValue]; 785 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
725 if (status == 1) { // status = 1 success 786 completion(nil, errorObject);
726 if(dataResult[@"result"] != nil) { 787 }
727 NSArray * array = dataResult[@"result"]; 788 }
728 GroupObject * object = [[GroupObject alloc] initWithData:array[0] andGroupID:groupID]; 789 else {
729 completion(object, nil); 790 NSString *message = dataResult[@"message"];
730 } 791 if (message == nil) {
731 else { 792 message = @"Unknown error";
732 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 793 }
733 completion(nil, errorObject); 794
734 } 795 if ([message isEqualToString:@"Token is invalid"]) {
735 } 796 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
736 else { 797 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
737 NSString *message = dataResult[@"message"]; 798 [self requestMemberList:tokenNew groupID:groupID withPage:page CompletionHandler:completion];
738 if (message == nil) { 799 }
739 message = @"Unknown error"; 800 else {
740 } 801 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
741 802 completion(nil, errorObject);
742 if ([message isEqualToString:@"Token is invalid"]) { 803 }
743 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 804 }
744 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 805 }
745 [self getGroupDetail:tokenNew withGroupID:groupID CompletionHandler:completion]; 806 else
746 } 807 {
747 else { 808 completion(nil, error);
748 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 809 }
749 completion(nil, errorObject); 810 }];
750 } 811 }
751 } 812
752 } 813 - (void) requestJoinGroup:(NSString *)token groupID: (int) groupID CompletionHandler:(void (^)(NSError *)) completion {
753 else 814 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/join"];
754 { 815 NSLog(@"requestJoinGroup link %@", url);
755 completion(nil, error); 816
756 } 817 [self _request:url method:@"POST" token:token paras:@{@"group_id": [NSNumber numberWithInt:groupID]} completion:^(NSData *data, NSError *error) {
757 }];
758 } 818 if (completion == NULL) {
759 819 return ;
760 - (void) requestMemberList:(NSString *)token groupID: (int) groupID withPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion { 820 }
761 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/member/%d/%d", groupID, page]; 821
762 NSLog(@"requestMemberList link %@ page %d", url, page); 822 if (error == nil)
763 823 {
764 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) { 824 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
765 if (completion == NULL) { 825 NSLog(@"%@", dataResult);
766 return ; 826 int status = [dataResult[@"status"] intValue];
767 } 827 if (status == 1) { // status = 1 success
768 828 if(dataResult[@"result"] != nil) {
769 if (error == nil) 829 completion(nil);
770 { 830 }
771 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 831 else {
772 NSLog(@"%@", dataResult); 832 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
773 int status = [dataResult[@"status"] intValue]; 833 completion(errorObject);
774 if (status == 1) { // status = 1 success 834 }
775 if(dataResult[@"result"] != nil) { 835 }
776 NSArray * array = dataResult[@"result"]; 836 else {
777 NSMutableArray * arrayTweets = [[NSMutableArray alloc] init]; 837 NSString *message = dataResult[@"message"];
778 for(NSDictionary * dict in array) { 838 if ([message isEqualToString:@"Token is invalid"]) {
779 MemberObject * object = [[MemberObject alloc] initWithData:dict]; 839 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
780 [arrayTweets addObject:object]; 840 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
781 } 841 [self requestJoinGroup:tokenNew groupID:groupID CompletionHandler:completion];
782 completion(arrayTweets, nil); 842 }
783 } 843 else {
784 else { 844 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
785 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 845 completion(errorObject);
786 completion(nil, errorObject); 846 }
787 } 847 }
788 } 848 }
789 else { 849 else
790 NSString *message = dataResult[@"message"]; 850 {
791 if (message == nil) { 851 completion(error);
792 message = @"Unknown error"; 852 }
793 } 853 }];
794 854 }
795 if ([message isEqualToString:@"Token is invalid"]) { 855
856 - (void) requestGroupList:(NSString *)token CompletionHandler:(void (^)(NSArray *, NSError *)) completion {
857 NSString *url = [kServerAddress stringByAppendingFormat:@"api/groups/list"];
858 NSLog(@"requestGroupList link %@", url);
859
860 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
861 if (completion == NULL) {
862 return ;
863 }
864
865 if (error == nil)
866 {
867 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
868 NSLog(@"%@", dataResult);
869 int status = [dataResult[@"status"] intValue];
870 if (status == 1) { // status = 1 success
871 if(dataResult[@"result"] != nil) {
872 NSArray * array = dataResult[@"result"];
873 NSMutableArray * arrayGroup = [[NSMutableArray alloc] init];
874 for(NSDictionary * dict in array) {
875 GroupObject * object = [[GroupObject alloc] initWithShortData:dict];
876 [arrayGroup addObject:object];
877 }
878 completion(arrayGroup, nil);
879 }
880 else {
881 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
882 completion(nil, errorObject);
883 }
884 }
885 else {
886 NSString *message = dataResult[@"message"];
887 if (message == nil) {
888 message = @"Unknown error";
889 }
890
891 if ([message isEqualToString:@"Token is invalid"]) {
892 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
893 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
894 [self requestGroupList:tokenNew CompletionHandler:completion];
895 }
896 else {
897 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
898 completion(nil, errorObject);
899 }
900 }
901 }
902 else
903 {
904 completion(nil, error);
905 }
906 }];
907 }
796 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 908 #pragma mark - Common API
797 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 909 - (void)refreshToken: (NSString *)userID CompletionHandler:(void (^)(NSString *, NSError *))completion {
798 [self requestMemberList:tokenNew groupID:groupID withPage:page CompletionHandler:completion]; 910 [self _request:[kServerAddress stringByAppendingFormat: @"refreshToken"] method:@"POST" token:@"" paras:@{@"userId":userID} completion:^(NSData *data, NSError *error) {
799 } 911
800 else { 912 if (completion == NULL) {
801 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 913 return ;
802 completion(nil, errorObject); 914 }
803 } 915
804 } 916 if (error == nil)
805 } 917 {
806 else 918 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
807 { 919
808 completion(nil, error); 920 int status = [dataResult[@"status"] intValue];
809 } 921 if (status == 1) { // status = 1 success
810 }]; 922 NSArray *arrayResult = dataResult[@"result"];
811 } 923 if (arrayResult.count > 0) {
812 924 NSString *token = arrayResult[0];
813 - (void) requestJoinGroup:(NSString *)token groupID: (int) groupID CompletionHandler:(void (^)(NSError *)) completion { 925 completion(token, nil);
814 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/join"]; 926 }
815 NSLog(@"requestJoinGroup link %@", url); 927 else {
816 928 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
817 searchTask = [self _request:url method:@"POST" token:token paras:@{@"group_id": [NSNumber numberWithInt:groupID]} completion:^(NSData *data, NSError *error) { 929 completion(nil, errorObject);
818 searchTask = nil; 930 }
819 if (completion == NULL) { 931
820 return ; 932 }
821 } 933 else { // status = 0 error
822 934 NSString *message = dataResult[@"message"];
823 if (error == nil) 935 if (message == nil) {
824 { 936 message = @"Unknown error";
825 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 937 }
826 NSLog(@"%@", dataResult); 938 NSError *loginFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
827 int status = [dataResult[@"status"] intValue]; 939 completion(nil, loginFaild);
828 if (status == 1) { // status = 1 success 940 }
829 if(dataResult[@"result"] != nil) { 941 }
830 completion(nil); 942 else
831 } 943 {
832 else { 944 completion(nil, error);
833 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 945 }
834 completion(errorObject); 946 }];
835 } 947 }
836 } 948
837 else { 949 #pragma mark - Private Function
838 NSString *message = dataResult[@"message"]; 950 - (void) checkToken {
839 if ([message isEqualToString:@"Token is invalid"]) { 951 // [[NSNotificationCenter defaultCenter] postNotificationName:kNotificationToken object:nil];
840 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 952 NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:kUser];
841 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 953 User *user = (User *)[NSKeyedUnarchiver unarchiveObjectWithData:data];
842 [self requestJoinGroup:tokenNew groupID:groupID CompletionHandler:completion]; 954 if (user != nil) {
843 } 955 [self refreshToken:user.user_id CompletionHandler:^(NSString *token, NSError *error) {
844 else { 956 if (error == nil) {
845 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 957 [[NSUserDefaults standardUserDefaults] setObject:token forKey:kToken];
846 completion(errorObject); 958 [[NSUserDefaults standardUserDefaults] synchronize];
847 } 959 }
848 } 960 }];
849 } 961 }
850 else 962 }
851 { 963 - (NSData *) _encodeDictionary: (NSDictionary *) dictionary
852 completion(error); 964 {
853 } 965 NSMutableArray *parts = [[NSMutableArray alloc] init];
854 }]; 966 for (id key in dictionary)
855 } 967 {
856 968 NSString *encodedValue = [[dictionary[key] description] urlencode];
857 #pragma mark - Common API 969 NSString *encodedKey = [[key description] urlencode];//[[key description] stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
858 - (void)refreshToken: (NSString *)userID CompletionHandler:(void (^)(NSString *, NSError *))completion { 970 NSString *part = [NSString stringWithFormat: @"%@=%@", encodedKey, encodedValue];
859 [self _request:[kServerAddress stringByAppendingFormat: @"refreshToken"] method:@"POST" token:@"" paras:@{@"userId":userID} completion:^(NSData *data, NSError *error) { 971 [parts addObject:part];
860 972 }
861 if (completion == NULL) { 973 NSString *encodedDictionary = [parts componentsJoinedByString:@"&"];
862 return ; 974 return [encodedDictionary dataUsingEncoding: NSUTF8StringEncoding];
863 } 975 }
864 976
865 if (error == nil) 977 - (NSURLSessionDataTask *) _request:(NSString *)address method:(NSString *)method token:(NSString *) token paras:(NSDictionary *)paras completion:(void (^)(NSData *data, NSError *error))completion
866 { 978 {
867 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 979 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: [NSURL URLWithString:address]];
868 980 request.HTTPMethod = method;
869 int status = [dataResult[@"status"] intValue]; 981 [request setValue: @"application/json" forHTTPHeaderField: @"Accept"];
870 if (status == 1) { // status = 1 success 982 [request setValue: @"application/json" forHTTPHeaderField: @"Content-Type"];
871 NSArray *arrayResult = dataResult[@"result"]; 983 if(token != nil && ![token isEqual: @""]) {
872 if (arrayResult.count > 0) { 984 [request setValue: token forHTTPHeaderField: @"token"];
873 NSString *token = arrayResult[0]; 985 }
874 completion(token, nil); 986 [request setTimeoutInterval:self.timeOutInterval];
875 } 987
876 else { 988 if (paras != nil)
877 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 989 {
878 completion(nil, errorObject); 990 NSData *encodedData = [self _encodeDictionary: paras];
879 } 991 [request setValue: [NSString stringWithFormat: @"%lu", (unsigned long) encodedData.length] forHTTPHeaderField: @"Content-Length"];
880 992 [request setValue: @"application/x-www-form-urlencoded charset=utf-8" forHTTPHeaderField: @"Content-Type"];
881 } 993 [request setHTTPBody: encodedData];
882 else { // status = 0 error 994 }
883 NSString *message = dataResult[@"message"]; 995
884 if (message == nil) { 996 NSURLSession *session = [NSURLSession sharedSession];
885 message = @"Unknown error"; 997 NSURLSessionDataTask *task = [session dataTaskWithRequest:request
886 } 998 completionHandler:
887 NSError *loginFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 999 ^(NSData *data, NSURLResponse *response, NSError *error) {
888 completion(nil, loginFaild); 1000 if (completion == NULL) {
889 } 1001 return ;
890 } 1002 }
891 else 1003 if (error == nil)
892 { 1004 {
893 completion(nil, error); 1005 completion(data, nil);
894 } 1006 }
895 }]; 1007 else
896 } 1008 {
897 1009 completion(nil, error);
898 #pragma mark - Private Function 1010 }
899 - (void) checkToken { 1011 }];
900 // [[NSNotificationCenter defaultCenter] postNotificationName:kNotificationToken object:nil]; 1012 [task resume];
901 NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:kUser]; 1013 return task;
902 User *user = (User *)[NSKeyedUnarchiver unarchiveObjectWithData:data]; 1014 }
903 if (user != nil) { 1015
904 [self refreshToken:user.user_id CompletionHandler:^(NSString *token, NSError *error) { 1016 -(void)waitUntilDone:(void(^)(void))waitBlock {
905 if (error == nil) { 1017 //use your statement or call method here
906 [[NSUserDefaults standardUserDefaults] setObject:token forKey:kToken]; 1018 if(waitBlock){
907 [[NSUserDefaults standardUserDefaults] synchronize]; 1019 waitBlock();
908 } 1020 }
909 }]; 1021 }
910 } 1022
911 } 1023 @end