Compare commits
167 Commits
version_5.
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
26fb5cbcf4 | ||
|
|
c8262eee36 | ||
|
|
184f53b07b | ||
|
|
ed9858bd6d | ||
|
|
9dffc05aa7 | ||
|
|
cb5c4facbc | ||
|
|
84d1b659f3 | ||
|
|
b73b5d9983 | ||
|
|
6a30411791 | ||
|
|
395b1342a9 | ||
|
|
ea3b8cc6fc | ||
|
|
697c839c80 | ||
|
|
d6c9dd0ce9 | ||
|
|
16c42a11e5 | ||
|
|
9980266b62 | ||
|
|
38c14c19e7 | ||
|
|
736d110eba | ||
|
|
7c57677738 | ||
|
|
69e2518345 | ||
|
|
3a50f7f9c2 | ||
|
|
6e4857ab8d | ||
|
|
260e51ce2c | ||
|
|
a81bfa2277 | ||
|
|
847f49e6e7 | ||
|
|
8703ce020c | ||
|
|
7d8cd7b867 | ||
|
|
8d9f241038 | ||
|
|
fcbbfdc43f | ||
|
|
66fb14161d | ||
|
|
bc976a04d9 | ||
|
|
4ab13ad7ac | ||
|
|
d5f8d4291b | ||
|
|
43f6e75bbf | ||
|
|
59ea2b6920 | ||
|
|
dee758a3ff | ||
|
|
17153bdd38 | ||
|
|
82482a1fc5 | ||
|
|
442b597c95 | ||
|
|
1bb258691b | ||
|
|
7c2cec63f9 | ||
|
|
91fbb4dce7 | ||
|
|
681b6d329b | ||
|
|
0d8fabe142 | ||
|
|
4049f54789 | ||
|
|
54ae40b07a | ||
|
|
bcf0ac6e1f | ||
|
|
e70cec697f | ||
|
|
7234f10f81 | ||
|
|
fd7f27b74b | ||
|
|
b22b7a4caf | ||
|
|
b8b3fb9122 | ||
|
|
5fc12f5cba | ||
|
|
4cad607ae2 | ||
|
|
276e9f94a6 | ||
|
|
6a04d7585d | ||
|
|
28b17896cc | ||
|
|
8f28bc513e | ||
|
|
512d2a9394 | ||
|
|
81488d5ee6 | ||
|
|
08ebf9b608 | ||
|
|
56f0d40214 | ||
|
|
5d83de37cd | ||
|
|
2626e8419b | ||
|
|
597670e446 | ||
|
|
881ddddeb4 | ||
|
|
32395453ff | ||
|
|
5c6dce5a04 | ||
|
|
3d248e4af0 | ||
|
|
6bbef1949b | ||
|
|
1031a89858 | ||
|
|
21d877492e | ||
|
|
5670accd2c | ||
|
|
d138d4f3a3 | ||
|
|
cddbbf2c75 | ||
|
|
104ba0e023 | ||
|
|
a27fa1091e | ||
|
|
a7a9cd7c64 | ||
|
|
7446b63cbb | ||
|
|
73482f6ace | ||
|
|
2dad6e3036 | ||
|
|
b20af9e524 | ||
|
|
5ba9d2ee09 | ||
|
|
fe0540167b | ||
|
|
45ce02baa6 | ||
|
|
7722bce9d8 | ||
|
|
ea74142adb | ||
|
|
ae9869d7ff | ||
|
|
36b066fbdc | ||
|
|
387a7544b3 | ||
|
|
484a4b59bd | ||
|
|
f6e96e9a07 | ||
|
|
cdc86cc0a3 | ||
|
|
03b74fe77e | ||
|
|
280ff293f1 | ||
|
|
3b8cf0fa35 | ||
|
|
591e9198bb | ||
|
|
0d20dadb8e | ||
|
|
72a4b5b970 | ||
|
|
b291898161 | ||
|
|
5627228464 | ||
|
|
4281751534 | ||
|
|
c81aa93726 | ||
|
|
468e102a7c | ||
|
|
b3a80d9afc | ||
|
|
dbfe58fc6d | ||
|
|
2070cde22d | ||
|
|
e99b127694 | ||
|
|
08a9ec95fa | ||
|
|
0d8667d14e | ||
|
|
5c8dee520c | ||
|
|
42c29ce4a1 | ||
|
|
66a7d47ff3 | ||
|
|
049035cdb6 | ||
|
|
4aedb062cc | ||
|
|
c0edc6f7aa | ||
|
|
9b579e91b9 | ||
|
|
e88501ed61 | ||
|
|
49f2c24533 | ||
|
|
74965225f0 | ||
|
|
99971a8d38 | ||
|
|
da7203dee2 | ||
|
|
88e16ac830 | ||
|
|
41dddfea3a | ||
|
|
ebea4ef0b8 | ||
|
|
f115194efa | ||
|
|
39393e4b8b | ||
|
|
06e7c2bec9 | ||
|
|
6dded2cce9 | ||
|
|
f03bac13a0 | ||
|
|
33b81ca6b0 | ||
|
|
752edc4f0f | ||
|
|
71acc85bb4 | ||
|
|
3868620d62 | ||
|
|
58e4ac6624 | ||
|
|
b5b6e8c2af | ||
|
|
065d60d997 | ||
|
|
3f0f52f704 | ||
|
|
188ab824b8 | ||
|
|
e2b62c4996 | ||
|
|
1af170b983 | ||
|
|
b590303a4f | ||
|
|
a38125e726 | ||
|
|
b75870a241 | ||
|
|
d4a5bc6d09 | ||
|
|
da92497d42 | ||
|
|
6f7f318bcd | ||
|
|
45549628ae | ||
|
|
02fdee07d0 | ||
|
|
005378f8f3 | ||
|
|
0638d8caf2 | ||
|
|
a023fee709 | ||
|
|
f201b085e3 | ||
|
|
a56ceebdd3 | ||
|
|
f914b81044 | ||
|
|
639df113ff | ||
|
|
3954411213 | ||
|
|
3e8a3cbfc1 | ||
|
|
833cf417f5 | ||
|
|
3684895342 | ||
|
|
dee7714d9e | ||
|
|
dd9458a70f | ||
|
|
d85c94e57f | ||
|
|
454be29f8d | ||
|
|
d0fd6e58ec | ||
|
|
3b159c1df9 | ||
|
|
33e780e535 | ||
|
|
ddca80232a |
@ -10,12 +10,8 @@
|
|||||||
36CF33BD29CF36EB06D0CCFD /* libPods-JSQMessagesTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 782026E9E518622532ED474D /* libPods-JSQMessagesTests.a */; };
|
36CF33BD29CF36EB06D0CCFD /* libPods-JSQMessagesTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 782026E9E518622532ED474D /* libPods-JSQMessagesTests.a */; };
|
||||||
77CC17A895E6E12BC9CB549A /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 97E6750B77E8A7042BA0754B /* libPods.a */; };
|
77CC17A895E6E12BC9CB549A /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 97E6750B77E8A7042BA0754B /* libPods.a */; };
|
||||||
88078A9D19D8FEB5005B4595 /* JSQMessagesMediaPlaceholderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 88078A9C19D8FEB5005B4595 /* JSQMessagesMediaPlaceholderView.m */; };
|
88078A9D19D8FEB5005B4595 /* JSQMessagesMediaPlaceholderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 88078A9C19D8FEB5005B4595 /* JSQMessagesMediaPlaceholderView.m */; };
|
||||||
88078AA119D8FFEA005B4595 /* clip.png in Resources */ = {isa = PBXBuildFile; fileRef = 88078A9E19D8FFEA005B4595 /* clip.png */; };
|
88324C3419F6301C00BC732D /* JSQMessagesMediaViewBubbleImageMaskerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88324C3319F6301C00BC732D /* JSQMessagesMediaViewBubbleImageMaskerTests.m */; };
|
||||||
88078AA219D8FFEA005B4595 /* clip@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 88078A9F19D8FFEA005B4595 /* clip@2x.png */; };
|
883C11781A09FB100092A16D /* JSQMessagesCellTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 883C11771A09FB100092A16D /* JSQMessagesCellTextView.m */; };
|
||||||
88078AA319D8FFEA005B4595 /* clip@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 88078AA019D8FFEA005B4595 /* clip@3x.png */; };
|
|
||||||
88078AA719D9034F005B4595 /* typing@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 88078AA419D9034F005B4595 /* typing@3x.png */; };
|
|
||||||
88078AA819D9034F005B4595 /* typing@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 88078AA519D9034F005B4595 /* typing@2x.png */; };
|
|
||||||
88078AA919D9034F005B4595 /* typing.png in Resources */ = {isa = PBXBuildFile; fileRef = 88078AA619D9034F005B4595 /* typing.png */; };
|
|
||||||
88445B3119E0AE3F0014F889 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 88445B3019E0AE3F0014F889 /* UIKit.framework */; };
|
88445B3119E0AE3F0014F889 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 88445B3019E0AE3F0014F889 /* UIKit.framework */; };
|
||||||
88445B3319E0AE450014F889 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 88445B3219E0AE450014F889 /* Foundation.framework */; };
|
88445B3319E0AE450014F889 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 88445B3219E0AE450014F889 /* Foundation.framework */; };
|
||||||
88445B3519E0AE4A0014F889 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 88445B3419E0AE4A0014F889 /* CoreGraphics.framework */; };
|
88445B3519E0AE4A0014F889 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 88445B3419E0AE4A0014F889 /* CoreGraphics.framework */; };
|
||||||
@ -30,18 +26,9 @@
|
|||||||
88445B4419E1B5110014F889 /* MapKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 88445B4319E1B5110014F889 /* MapKit.framework */; };
|
88445B4419E1B5110014F889 /* MapKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 88445B4319E1B5110014F889 /* MapKit.framework */; };
|
||||||
88445B4519E1B5210014F889 /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 88445B4119E1B50B0014F889 /* CoreLocation.framework */; };
|
88445B4519E1B5210014F889 /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 88445B4119E1B50B0014F889 /* CoreLocation.framework */; };
|
||||||
88445B4619E1B5290014F889 /* MapKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 88445B4319E1B5110014F889 /* MapKit.framework */; };
|
88445B4619E1B5290014F889 /* MapKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 88445B4319E1B5110014F889 /* MapKit.framework */; };
|
||||||
8846441819EB15B2001EBA43 /* bubble_stroked@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8846441419EB15B2001EBA43 /* bubble_stroked@3x.png */; };
|
8861666D19F492B70025B958 /* JSQMessagesAssets.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 8861666C19F492B70025B958 /* JSQMessagesAssets.bundle */; };
|
||||||
8846441919EB15B2001EBA43 /* bubble_min_tailless@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8846441519EB15B2001EBA43 /* bubble_min_tailless@3x.png */; };
|
886C33FD19F4371E006B4997 /* JSQVideoMediaItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 886C33FC19F4371E006B4997 /* JSQVideoMediaItem.m */; };
|
||||||
8846441A19EB15B2001EBA43 /* bubble_min@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8846441619EB15B2001EBA43 /* bubble_min@3x.png */; };
|
886C33FF19F45E30006B4997 /* JSQMessagesViewController.podspec in Resources */ = {isa = PBXBuildFile; fileRef = 886C33FE19F45E30006B4997 /* JSQMessagesViewController.podspec */; };
|
||||||
8846441B19EB15B2001EBA43 /* bubble_stroked_tailless@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8846441719EB15B2001EBA43 /* bubble_stroked_tailless@3x.png */; };
|
|
||||||
8846441F19EB17CF001EBA43 /* play@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8846441C19EB17CF001EBA43 /* play@3x.png */; };
|
|
||||||
8846442019EB17CF001EBA43 /* play@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8846441D19EB17CF001EBA43 /* play@2x.png */; };
|
|
||||||
8846442119EB17CF001EBA43 /* play.png in Resources */ = {isa = PBXBuildFile; fileRef = 8846441E19EB17CF001EBA43 /* play.png */; };
|
|
||||||
8846442519EB1830001EBA43 /* bubble@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8846442319EB1830001EBA43 /* bubble@3x.png */; };
|
|
||||||
8846442719EB189E001EBA43 /* bubble_tailless@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8846442619EB189E001EBA43 /* bubble_tailless@3x.png */; };
|
|
||||||
8846442A19EB18A5001EBA43 /* bubble_tailless@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8846442819EB18A5001EBA43 /* bubble_tailless@2x.png */; };
|
|
||||||
8846442B19EB18A5001EBA43 /* bubble_tailless.png in Resources */ = {isa = PBXBuildFile; fileRef = 8846442919EB18A5001EBA43 /* bubble_tailless.png */; };
|
|
||||||
8846442E19EB2BF4001EBA43 /* JSQVideoMediaitem.m in Sources */ = {isa = PBXBuildFile; fileRef = 8846442D19EB2BF4001EBA43 /* JSQVideoMediaitem.m */; };
|
|
||||||
886FFD2E19E9A65D00EB8485 /* UIDevice+JSQMessages.m in Sources */ = {isa = PBXBuildFile; fileRef = 886FFD2D19E9A65D00EB8485 /* UIDevice+JSQMessages.m */; };
|
886FFD2E19E9A65D00EB8485 /* UIDevice+JSQMessages.m in Sources */ = {isa = PBXBuildFile; fileRef = 886FFD2D19E9A65D00EB8485 /* UIDevice+JSQMessages.m */; };
|
||||||
8885734A19DE540400E89D20 /* DemoSettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8885734919DE540400E89D20 /* DemoSettingsViewController.m */; };
|
8885734A19DE540400E89D20 /* DemoSettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8885734919DE540400E89D20 /* DemoSettingsViewController.m */; };
|
||||||
8885734D19DE55D000E89D20 /* NSUserDefaults+DemoSettings.m in Sources */ = {isa = PBXBuildFile; fileRef = 8885734C19DE55D000E89D20 /* NSUserDefaults+DemoSettings.m */; };
|
8885734D19DE55D000E89D20 /* NSUserDefaults+DemoSettings.m in Sources */ = {isa = PBXBuildFile; fileRef = 8885734C19DE55D000E89D20 /* NSUserDefaults+DemoSettings.m */; };
|
||||||
@ -49,14 +36,6 @@
|
|||||||
88A25F3919D8DF2500924534 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 88A25F3019D8DF2500924534 /* Main.storyboard */; };
|
88A25F3919D8DF2500924534 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 88A25F3019D8DF2500924534 /* Main.storyboard */; };
|
||||||
88A25F3A19D8DF2500924534 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 88A25F3219D8DF2500924534 /* Images.xcassets */; };
|
88A25F3A19D8DF2500924534 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 88A25F3219D8DF2500924534 /* Images.xcassets */; };
|
||||||
88A25F3C19D8DF2500924534 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F3419D8DF2500924534 /* main.m */; };
|
88A25F3C19D8DF2500924534 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F3419D8DF2500924534 /* main.m */; };
|
||||||
88A25FA319D8E01A00924534 /* bubble.png in Resources */ = {isa = PBXBuildFile; fileRef = 88A25F4119D8E01A00924534 /* bubble.png */; };
|
|
||||||
88A25FA419D8E01A00924534 /* bubble@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 88A25F4219D8E01A00924534 /* bubble@2x.png */; };
|
|
||||||
88A25FA519D8E01A00924534 /* bubble_min.png in Resources */ = {isa = PBXBuildFile; fileRef = 88A25F4319D8E01A00924534 /* bubble_min.png */; };
|
|
||||||
88A25FA619D8E01A00924534 /* bubble_min@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 88A25F4419D8E01A00924534 /* bubble_min@2x.png */; };
|
|
||||||
88A25FA719D8E01A00924534 /* bubble_min_tailless.png in Resources */ = {isa = PBXBuildFile; fileRef = 88A25F4519D8E01A00924534 /* bubble_min_tailless.png */; };
|
|
||||||
88A25FA819D8E01A00924534 /* bubble_min_tailless@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 88A25F4619D8E01A00924534 /* bubble_min_tailless@2x.png */; };
|
|
||||||
88A25FB319D8E01A00924534 /* message_received.aiff in Resources */ = {isa = PBXBuildFile; fileRef = 88A25F5219D8E01A00924534 /* message_received.aiff */; };
|
|
||||||
88A25FB419D8E01A00924534 /* message_sent.aiff in Resources */ = {isa = PBXBuildFile; fileRef = 88A25F5319D8E01A00924534 /* message_sent.aiff */; };
|
|
||||||
88A25FB519D8E01A00924534 /* JSQSystemSoundPlayer+JSQMessages.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F5619D8E01A00924534 /* JSQSystemSoundPlayer+JSQMessages.m */; };
|
88A25FB519D8E01A00924534 /* JSQSystemSoundPlayer+JSQMessages.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F5619D8E01A00924534 /* JSQSystemSoundPlayer+JSQMessages.m */; };
|
||||||
88A25FB619D8E01A00924534 /* NSString+JSQMessages.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F5819D8E01A00924534 /* NSString+JSQMessages.m */; };
|
88A25FB619D8E01A00924534 /* NSString+JSQMessages.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F5819D8E01A00924534 /* NSString+JSQMessages.m */; };
|
||||||
88A25FB719D8E01A00924534 /* UIColor+JSQMessages.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F5A19D8E01A00924534 /* UIColor+JSQMessages.m */; };
|
88A25FB719D8E01A00924534 /* UIColor+JSQMessages.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F5A19D8E01A00924534 /* UIColor+JSQMessages.m */; };
|
||||||
@ -72,18 +51,14 @@
|
|||||||
88A25FC119D8E01A00924534 /* JSQMessagesCollectionViewFlowLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F7119D8E01A00924534 /* JSQMessagesCollectionViewFlowLayout.m */; };
|
88A25FC119D8E01A00924534 /* JSQMessagesCollectionViewFlowLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F7119D8E01A00924534 /* JSQMessagesCollectionViewFlowLayout.m */; };
|
||||||
88A25FC219D8E01A00924534 /* JSQMessagesCollectionViewFlowLayoutInvalidationContext.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F7319D8E01A00924534 /* JSQMessagesCollectionViewFlowLayoutInvalidationContext.m */; };
|
88A25FC219D8E01A00924534 /* JSQMessagesCollectionViewFlowLayoutInvalidationContext.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F7319D8E01A00924534 /* JSQMessagesCollectionViewFlowLayoutInvalidationContext.m */; };
|
||||||
88A25FC319D8E01A00924534 /* JSQMessagesCollectionViewLayoutAttributes.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F7519D8E01A00924534 /* JSQMessagesCollectionViewLayoutAttributes.m */; };
|
88A25FC319D8E01A00924534 /* JSQMessagesCollectionViewLayoutAttributes.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F7519D8E01A00924534 /* JSQMessagesCollectionViewLayoutAttributes.m */; };
|
||||||
88A25FC419D8E01A00924534 /* JSQMediaMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F7819D8E01A00924534 /* JSQMediaMessage.m */; };
|
|
||||||
88A25FC519D8E01A00924534 /* JSQMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F7A19D8E01A00924534 /* JSQMessage.m */; };
|
88A25FC519D8E01A00924534 /* JSQMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F7A19D8E01A00924534 /* JSQMessage.m */; };
|
||||||
88A25FC619D8E01A00924534 /* JSQMessagesAvatarImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F8019D8E01A00924534 /* JSQMessagesAvatarImage.m */; };
|
88A25FC619D8E01A00924534 /* JSQMessagesAvatarImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F8019D8E01A00924534 /* JSQMessagesAvatarImage.m */; };
|
||||||
88A25FC719D8E01A00924534 /* JSQMessagesBubbleImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F8219D8E01A00924534 /* JSQMessagesBubbleImage.m */; };
|
88A25FC719D8E01A00924534 /* JSQMessagesBubbleImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F8219D8E01A00924534 /* JSQMessagesBubbleImage.m */; };
|
||||||
88A25FC819D8E01A00924534 /* JSQPhotoMediaItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F8619D8E01A00924534 /* JSQPhotoMediaItem.m */; };
|
88A25FC819D8E01A00924534 /* JSQPhotoMediaItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F8619D8E01A00924534 /* JSQPhotoMediaItem.m */; };
|
||||||
88A25FC919D8E01A00924534 /* JSQTextMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F8819D8E01A00924534 /* JSQTextMessage.m */; };
|
|
||||||
88A25FCA19D8E01A00924534 /* JSQMessagesCollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F8B19D8E01A00924534 /* JSQMessagesCollectionView.m */; };
|
88A25FCA19D8E01A00924534 /* JSQMessagesCollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F8B19D8E01A00924534 /* JSQMessagesCollectionView.m */; };
|
||||||
88A25FCB19D8E01A00924534 /* JSQMessagesCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F8D19D8E01A00924534 /* JSQMessagesCollectionViewCell.m */; };
|
88A25FCB19D8E01A00924534 /* JSQMessagesCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F8D19D8E01A00924534 /* JSQMessagesCollectionViewCell.m */; };
|
||||||
88A25FCC19D8E01A00924534 /* JSQMessagesCollectionViewCellIncoming.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F8F19D8E01A00924534 /* JSQMessagesCollectionViewCellIncoming.m */; };
|
88A25FCC19D8E01A00924534 /* JSQMessagesCollectionViewCellIncoming.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F8F19D8E01A00924534 /* JSQMessagesCollectionViewCellIncoming.m */; };
|
||||||
88A25FCD19D8E01A00924534 /* JSQMessagesCollectionViewCellIncoming.xib in Resources */ = {isa = PBXBuildFile; fileRef = 88A25F9019D8E01A00924534 /* JSQMessagesCollectionViewCellIncoming.xib */; };
|
|
||||||
88A25FCE19D8E01A00924534 /* JSQMessagesCollectionViewCellOutgoing.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F9219D8E01A00924534 /* JSQMessagesCollectionViewCellOutgoing.m */; };
|
88A25FCE19D8E01A00924534 /* JSQMessagesCollectionViewCellOutgoing.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F9219D8E01A00924534 /* JSQMessagesCollectionViewCellOutgoing.m */; };
|
||||||
88A25FCF19D8E01A00924534 /* JSQMessagesCollectionViewCellOutgoing.xib in Resources */ = {isa = PBXBuildFile; fileRef = 88A25F9319D8E01A00924534 /* JSQMessagesCollectionViewCellOutgoing.xib */; };
|
|
||||||
88A25FD019D8E01A00924534 /* JSQMessagesComposerTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F9519D8E01A00924534 /* JSQMessagesComposerTextView.m */; };
|
88A25FD019D8E01A00924534 /* JSQMessagesComposerTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F9519D8E01A00924534 /* JSQMessagesComposerTextView.m */; };
|
||||||
88A25FD119D8E01A00924534 /* JSQMessagesInputToolbar.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F9719D8E01A00924534 /* JSQMessagesInputToolbar.m */; };
|
88A25FD119D8E01A00924534 /* JSQMessagesInputToolbar.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F9719D8E01A00924534 /* JSQMessagesInputToolbar.m */; };
|
||||||
88A25FD219D8E01A00924534 /* JSQMessagesLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F9919D8E01A00924534 /* JSQMessagesLabel.m */; };
|
88A25FD219D8E01A00924534 /* JSQMessagesLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F9919D8E01A00924534 /* JSQMessagesLabel.m */; };
|
||||||
@ -108,11 +83,10 @@
|
|||||||
88A2600A19D8E18400924534 /* JSQMessagesToolbarButtonFactoryTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25FEE19D8E18400924534 /* JSQMessagesToolbarButtonFactoryTests.m */; };
|
88A2600A19D8E18400924534 /* JSQMessagesToolbarButtonFactoryTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25FEE19D8E18400924534 /* JSQMessagesToolbarButtonFactoryTests.m */; };
|
||||||
88A2600B19D8E18400924534 /* JSQMessagesCollectionViewFlowLayoutTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25FF019D8E18400924534 /* JSQMessagesCollectionViewFlowLayoutTests.m */; };
|
88A2600B19D8E18400924534 /* JSQMessagesCollectionViewFlowLayoutTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25FF019D8E18400924534 /* JSQMessagesCollectionViewFlowLayoutTests.m */; };
|
||||||
88A2600C19D8E18400924534 /* JSQMessagesCollectionViewLayoutAttributesTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25FF119D8E18400924534 /* JSQMessagesCollectionViewLayoutAttributesTests.m */; };
|
88A2600C19D8E18400924534 /* JSQMessagesCollectionViewLayoutAttributesTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25FF119D8E18400924534 /* JSQMessagesCollectionViewLayoutAttributesTests.m */; };
|
||||||
88A2600D19D8E18400924534 /* JSQMediaMessageTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25FF319D8E18400924534 /* JSQMediaMessageTests.m */; };
|
88A2600D19D8E18400924534 /* JSQMessageMediaTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25FF319D8E18400924534 /* JSQMessageMediaTests.m */; };
|
||||||
88A2600E19D8E18400924534 /* JSQMessagesAvatarImageTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25FF419D8E18400924534 /* JSQMessagesAvatarImageTests.m */; };
|
88A2600E19D8E18400924534 /* JSQMessagesAvatarImageTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25FF419D8E18400924534 /* JSQMessagesAvatarImageTests.m */; };
|
||||||
88A2600F19D8E18400924534 /* JSQMessagesBubbleImageTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25FF519D8E18400924534 /* JSQMessagesBubbleImageTests.m */; };
|
88A2600F19D8E18400924534 /* JSQMessagesBubbleImageTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25FF519D8E18400924534 /* JSQMessagesBubbleImageTests.m */; };
|
||||||
88A2601019D8E18400924534 /* JSQMessageTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25FF619D8E18400924534 /* JSQMessageTests.m */; };
|
88A2601019D8E18400924534 /* JSQMessageTextTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25FF619D8E18400924534 /* JSQMessageTextTests.m */; };
|
||||||
88A2601119D8E18400924534 /* JSQTextMessageTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25FF719D8E18400924534 /* JSQTextMessageTests.m */; };
|
|
||||||
88A2601219D8E18400924534 /* JSQMessagesCollectionViewCellTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25FF919D8E18400924534 /* JSQMessagesCollectionViewCellTests.m */; };
|
88A2601219D8E18400924534 /* JSQMessagesCollectionViewCellTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25FF919D8E18400924534 /* JSQMessagesCollectionViewCellTests.m */; };
|
||||||
88A2601319D8E18400924534 /* JSQMessagesCollectionViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25FFA19D8E18400924534 /* JSQMessagesCollectionViewTests.m */; };
|
88A2601319D8E18400924534 /* JSQMessagesCollectionViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25FFA19D8E18400924534 /* JSQMessagesCollectionViewTests.m */; };
|
||||||
88A2601419D8E18400924534 /* JSQMessagesComposerTextViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25FFB19D8E18400924534 /* JSQMessagesComposerTextViewTests.m */; };
|
88A2601419D8E18400924534 /* JSQMessagesComposerTextViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25FFB19D8E18400924534 /* JSQMessagesComposerTextViewTests.m */; };
|
||||||
@ -122,11 +96,30 @@
|
|||||||
88A2601819D8E18400924534 /* JSQMessagesToolbarContentViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25FFF19D8E18400924534 /* JSQMessagesToolbarContentViewTests.m */; };
|
88A2601819D8E18400924534 /* JSQMessagesToolbarContentViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25FFF19D8E18400924534 /* JSQMessagesToolbarContentViewTests.m */; };
|
||||||
88A2601919D8E18400924534 /* JSQMessagesTypingIndicatorFooterViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A2600019D8E18400924534 /* JSQMessagesTypingIndicatorFooterViewTests.m */; };
|
88A2601919D8E18400924534 /* JSQMessagesTypingIndicatorFooterViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A2600019D8E18400924534 /* JSQMessagesTypingIndicatorFooterViewTests.m */; };
|
||||||
88A2601B19D8E45600924534 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 88A2601A19D8E45600924534 /* Info.plist */; };
|
88A2601B19D8E45600924534 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 88A2601A19D8E45600924534 /* Info.plist */; };
|
||||||
88AE58ED19E77FBF0042B0DE /* bubble_stroked_tailless.png in Resources */ = {isa = PBXBuildFile; fileRef = 88AE58E919E77FBF0042B0DE /* bubble_stroked_tailless.png */; };
|
88A901B619F618B100F99777 /* JSQMediaItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A901B519F618B100F99777 /* JSQMediaItem.m */; };
|
||||||
88AE58EE19E77FBF0042B0DE /* bubble_stroked_tailless@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 88AE58EA19E77FBF0042B0DE /* bubble_stroked_tailless@2x.png */; };
|
88C00A4E1A44D4C600B004B3 /* JSQLocationMediaItemTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88C00A4D1A44D4C600B004B3 /* JSQLocationMediaItemTests.m */; };
|
||||||
88AE58EF19E77FBF0042B0DE /* bubble_stroked.png in Resources */ = {isa = PBXBuildFile; fileRef = 88AE58EB19E77FBF0042B0DE /* bubble_stroked.png */; };
|
88C00A501A44D4D800B004B3 /* JSQPhotoMediaItemTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88C00A4F1A44D4D800B004B3 /* JSQPhotoMediaItemTests.m */; };
|
||||||
88AE58F019E77FBF0042B0DE /* bubble_stroked@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 88AE58EC19E77FBF0042B0DE /* bubble_stroked@2x.png */; };
|
88C00A521A44D4E500B004B3 /* JSQVideoMediaItemTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88C00A511A44D4E500B004B3 /* JSQVideoMediaItemTests.m */; };
|
||||||
|
88C4583019F5F7A0008FD427 /* JSQMessagesMediaViewBubbleImageMasker.m in Sources */ = {isa = PBXBuildFile; fileRef = 88C4582F19F5F7A0008FD427 /* JSQMessagesMediaViewBubbleImageMasker.m */; };
|
||||||
|
88E4D7131A0DBD6B000CC061 /* JSQMessages.strings in Resources */ = {isa = PBXBuildFile; fileRef = 8841B88719F4988800EA16B6 /* JSQMessages.strings */; };
|
||||||
94A4FA20C2FBD0D62614D5A8 /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 97E6750B77E8A7042BA0754B /* libPods.a */; };
|
94A4FA20C2FBD0D62614D5A8 /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 97E6750B77E8A7042BA0754B /* libPods.a */; };
|
||||||
|
FC15B7A91A1E880900F59801 /* JSQCallCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = FC15B7A81A1E880900F59801 /* JSQCallCollectionViewCell.xib */; };
|
||||||
|
FC15B7B01A1F6AC800F59801 /* JSQMessagesCollectionViewCellIncoming.xib in Resources */ = {isa = PBXBuildFile; fileRef = FC15B7AE1A1F6AC800F59801 /* JSQMessagesCollectionViewCellIncoming.xib */; };
|
||||||
|
FC15B7B11A1F6AC800F59801 /* JSQMessagesCollectionViewCellOutgoing.xib in Resources */ = {isa = PBXBuildFile; fileRef = FC15B7AF1A1F6AC800F59801 /* JSQMessagesCollectionViewCellOutgoing.xib */; };
|
||||||
|
FC4FA03A1A1E1BD100DA100A /* JSQCall.m in Sources */ = {isa = PBXBuildFile; fileRef = FC4FA0391A1E1BD100DA100A /* JSQCall.m */; };
|
||||||
|
FC4FA03D1A1E81AF00DA100A /* JSQCallCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = FC4FA03C1A1E81AF00DA100A /* JSQCallCollectionViewCell.m */; };
|
||||||
|
FCA52AEF1A2B6ECE00CCADFA /* call_missed@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FCA52AEE1A2B6ECE00CCADFA /* call_missed@2x.png */; };
|
||||||
|
FCA52AF51A2B6FAE00CCADFA /* call_canceled@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FCA52AF11A2B6FAE00CCADFA /* call_canceled@2x.png */; };
|
||||||
|
FCA52AF61A2B6FAE00CCADFA /* call_failed@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FCA52AF21A2B6FAE00CCADFA /* call_failed@2x.png */; };
|
||||||
|
FCA52AF71A2B6FAE00CCADFA /* call_incoming@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FCA52AF31A2B6FAE00CCADFA /* call_incoming@2x.png */; };
|
||||||
|
FCA52AF81A2B6FAE00CCADFA /* call_outgoing@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FCA52AF41A2B6FAE00CCADFA /* call_outgoing@2x.png */; };
|
||||||
|
FCA52B021A2B9F0E00CCADFA /* warning_white@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FCA52B001A2B9F0E00CCADFA /* warning_white@2x.png */; };
|
||||||
|
FCA52B031A2B9F0E00CCADFA /* error_white@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FCA52B011A2B9F0E00CCADFA /* error_white@2x.png */; };
|
||||||
|
FCFA5E131A29FC1000C8E32E /* JSQDisplayedMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = FCFA5E121A29FC1000C8E32E /* JSQDisplayedMessage.m */; };
|
||||||
|
FCFA5E161A29FE3B00C8E32E /* JSQInfoMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = FCFA5E151A29FE3B00C8E32E /* JSQInfoMessage.m */; };
|
||||||
|
FCFA5E191A2A044500C8E32E /* JSQErrorMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = FCFA5E181A2A044500C8E32E /* JSQErrorMessage.m */; };
|
||||||
|
FCFA5E1D1A2A08E500C8E32E /* JSQDisplayedMessageCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = FCFA5E1B1A2A08E500C8E32E /* JSQDisplayedMessageCollectionViewCell.m */; };
|
||||||
|
FCFA5E1E1A2A08E500C8E32E /* JSQDisplayedMessageCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = FCFA5E1C1A2A08E500C8E32E /* JSQDisplayedMessageCollectionViewCell.xib */; };
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
/* Begin PBXContainerItemProxy section */
|
/* Begin PBXContainerItemProxy section */
|
||||||
@ -146,12 +139,24 @@
|
|||||||
782026E9E518622532ED474D /* libPods-JSQMessagesTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-JSQMessagesTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
782026E9E518622532ED474D /* libPods-JSQMessagesTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-JSQMessagesTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
88078A9B19D8FEB5005B4595 /* JSQMessagesMediaPlaceholderView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQMessagesMediaPlaceholderView.h; sourceTree = "<group>"; };
|
88078A9B19D8FEB5005B4595 /* JSQMessagesMediaPlaceholderView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQMessagesMediaPlaceholderView.h; sourceTree = "<group>"; };
|
||||||
88078A9C19D8FEB5005B4595 /* JSQMessagesMediaPlaceholderView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesMediaPlaceholderView.m; sourceTree = "<group>"; };
|
88078A9C19D8FEB5005B4595 /* JSQMessagesMediaPlaceholderView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesMediaPlaceholderView.m; sourceTree = "<group>"; };
|
||||||
88078A9E19D8FFEA005B4595 /* clip.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = clip.png; sourceTree = "<group>"; };
|
88324C3319F6301C00BC732D /* JSQMessagesMediaViewBubbleImageMaskerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesMediaViewBubbleImageMaskerTests.m; sourceTree = "<group>"; };
|
||||||
88078A9F19D8FFEA005B4595 /* clip@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "clip@2x.png"; sourceTree = "<group>"; };
|
883C11761A09FB100092A16D /* JSQMessagesCellTextView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQMessagesCellTextView.h; sourceTree = "<group>"; };
|
||||||
88078AA019D8FFEA005B4595 /* clip@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "clip@3x.png"; sourceTree = "<group>"; };
|
883C11771A09FB100092A16D /* JSQMessagesCellTextView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesCellTextView.m; sourceTree = "<group>"; };
|
||||||
88078AA419D9034F005B4595 /* typing@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "typing@3x.png"; sourceTree = "<group>"; };
|
8841B88619F4988800EA16B6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Base.lproj/JSQMessages.strings; sourceTree = "<group>"; };
|
||||||
88078AA519D9034F005B4595 /* typing@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "typing@2x.png"; sourceTree = "<group>"; };
|
8841B88819F4988900EA16B6 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/JSQMessages.strings; sourceTree = "<group>"; };
|
||||||
88078AA619D9034F005B4595 /* typing.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = typing.png; sourceTree = "<group>"; };
|
8841B88919F4988A00EA16B6 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/JSQMessages.strings; sourceTree = "<group>"; };
|
||||||
|
8841B88A19F4988B00EA16B6 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/JSQMessages.strings; sourceTree = "<group>"; };
|
||||||
|
8841B88B19F4988C00EA16B6 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/JSQMessages.strings"; sourceTree = "<group>"; };
|
||||||
|
8841B88C19F4988F00EA16B6 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/JSQMessages.strings"; sourceTree = "<group>"; };
|
||||||
|
8841B88D19F4989000EA16B6 /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = ro.lproj/JSQMessages.strings; sourceTree = "<group>"; };
|
||||||
|
8841B88E19F4989100EA16B6 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/JSQMessages.strings; sourceTree = "<group>"; };
|
||||||
|
8841B88F19F4989200EA16B6 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/JSQMessages.strings; sourceTree = "<group>"; };
|
||||||
|
8841B89019F4989200EA16B6 /* pt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pt; path = pt.lproj/JSQMessages.strings; sourceTree = "<group>"; };
|
||||||
|
8841B89119F4989300EA16B6 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/JSQMessages.strings; sourceTree = "<group>"; };
|
||||||
|
8841B89219F4989400EA16B6 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/JSQMessages.strings; sourceTree = "<group>"; };
|
||||||
|
8841B89319F4989500EA16B6 /* he */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = he; path = he.lproj/JSQMessages.strings; sourceTree = "<group>"; };
|
||||||
|
8841B89419F4989500EA16B6 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/JSQMessages.strings; sourceTree = "<group>"; };
|
||||||
|
8841B89519F4989600EA16B6 /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/JSQMessages.strings; sourceTree = "<group>"; };
|
||||||
88445B3019E0AE3F0014F889 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
|
88445B3019E0AE3F0014F889 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
|
||||||
88445B3219E0AE450014F889 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
88445B3219E0AE450014F889 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||||
88445B3419E0AE4A0014F889 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
|
88445B3419E0AE4A0014F889 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
|
||||||
@ -161,19 +166,10 @@
|
|||||||
88445B3F19E1B4470014F889 /* JSQLocationMediaItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQLocationMediaItem.m; sourceTree = "<group>"; };
|
88445B3F19E1B4470014F889 /* JSQLocationMediaItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQLocationMediaItem.m; sourceTree = "<group>"; };
|
||||||
88445B4119E1B50B0014F889 /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = System/Library/Frameworks/CoreLocation.framework; sourceTree = SDKROOT; };
|
88445B4119E1B50B0014F889 /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = System/Library/Frameworks/CoreLocation.framework; sourceTree = SDKROOT; };
|
||||||
88445B4319E1B5110014F889 /* MapKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MapKit.framework; path = System/Library/Frameworks/MapKit.framework; sourceTree = SDKROOT; };
|
88445B4319E1B5110014F889 /* MapKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MapKit.framework; path = System/Library/Frameworks/MapKit.framework; sourceTree = SDKROOT; };
|
||||||
8846441419EB15B2001EBA43 /* bubble_stroked@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "bubble_stroked@3x.png"; sourceTree = "<group>"; };
|
8861666C19F492B70025B958 /* JSQMessagesAssets.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = JSQMessagesAssets.bundle; sourceTree = "<group>"; };
|
||||||
8846441519EB15B2001EBA43 /* bubble_min_tailless@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "bubble_min_tailless@3x.png"; sourceTree = "<group>"; };
|
886C33FB19F4371E006B4997 /* JSQVideoMediaItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQVideoMediaItem.h; sourceTree = "<group>"; };
|
||||||
8846441619EB15B2001EBA43 /* bubble_min@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "bubble_min@3x.png"; sourceTree = "<group>"; };
|
886C33FC19F4371E006B4997 /* JSQVideoMediaItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQVideoMediaItem.m; sourceTree = "<group>"; };
|
||||||
8846441719EB15B2001EBA43 /* bubble_stroked_tailless@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "bubble_stroked_tailless@3x.png"; sourceTree = "<group>"; };
|
886C33FE19F45E30006B4997 /* JSQMessagesViewController.podspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = JSQMessagesViewController.podspec; sourceTree = "<group>"; };
|
||||||
8846441C19EB17CF001EBA43 /* play@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "play@3x.png"; sourceTree = "<group>"; };
|
|
||||||
8846441D19EB17CF001EBA43 /* play@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "play@2x.png"; sourceTree = "<group>"; };
|
|
||||||
8846441E19EB17CF001EBA43 /* play.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = play.png; sourceTree = "<group>"; };
|
|
||||||
8846442319EB1830001EBA43 /* bubble@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "bubble@3x.png"; sourceTree = "<group>"; };
|
|
||||||
8846442619EB189E001EBA43 /* bubble_tailless@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "bubble_tailless@3x.png"; sourceTree = "<group>"; };
|
|
||||||
8846442819EB18A5001EBA43 /* bubble_tailless@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "bubble_tailless@2x.png"; sourceTree = "<group>"; };
|
|
||||||
8846442919EB18A5001EBA43 /* bubble_tailless.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bubble_tailless.png; sourceTree = "<group>"; };
|
|
||||||
8846442C19EB2BF4001EBA43 /* JSQVideoMediaitem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQVideoMediaitem.h; sourceTree = "<group>"; };
|
|
||||||
8846442D19EB2BF4001EBA43 /* JSQVideoMediaitem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQVideoMediaitem.m; sourceTree = "<group>"; };
|
|
||||||
886FFD2C19E9A65D00EB8485 /* UIDevice+JSQMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIDevice+JSQMessages.h"; sourceTree = "<group>"; };
|
886FFD2C19E9A65D00EB8485 /* UIDevice+JSQMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIDevice+JSQMessages.h"; sourceTree = "<group>"; };
|
||||||
886FFD2D19E9A65D00EB8485 /* UIDevice+JSQMessages.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIDevice+JSQMessages.m"; sourceTree = "<group>"; };
|
886FFD2D19E9A65D00EB8485 /* UIDevice+JSQMessages.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIDevice+JSQMessages.m"; sourceTree = "<group>"; };
|
||||||
8885734819DE540400E89D20 /* DemoSettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DemoSettingsViewController.h; sourceTree = "<group>"; };
|
8885734819DE540400E89D20 /* DemoSettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DemoSettingsViewController.h; sourceTree = "<group>"; };
|
||||||
@ -188,14 +184,6 @@
|
|||||||
88A25F3119D8DF2500924534 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
88A25F3119D8DF2500924534 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||||
88A25F3219D8DF2500924534 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
|
88A25F3219D8DF2500924534 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
|
||||||
88A25F3419D8DF2500924534 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
88A25F3419D8DF2500924534 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||||
88A25F4119D8E01A00924534 /* bubble.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bubble.png; sourceTree = "<group>"; };
|
|
||||||
88A25F4219D8E01A00924534 /* bubble@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "bubble@2x.png"; sourceTree = "<group>"; };
|
|
||||||
88A25F4319D8E01A00924534 /* bubble_min.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bubble_min.png; sourceTree = "<group>"; };
|
|
||||||
88A25F4419D8E01A00924534 /* bubble_min@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "bubble_min@2x.png"; sourceTree = "<group>"; };
|
|
||||||
88A25F4519D8E01A00924534 /* bubble_min_tailless.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bubble_min_tailless.png; sourceTree = "<group>"; };
|
|
||||||
88A25F4619D8E01A00924534 /* bubble_min_tailless@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "bubble_min_tailless@2x.png"; sourceTree = "<group>"; };
|
|
||||||
88A25F5219D8E01A00924534 /* message_received.aiff */ = {isa = PBXFileReference; lastKnownFileType = audio.aiff; path = message_received.aiff; sourceTree = "<group>"; };
|
|
||||||
88A25F5319D8E01A00924534 /* message_sent.aiff */ = {isa = PBXFileReference; lastKnownFileType = audio.aiff; path = message_sent.aiff; sourceTree = "<group>"; };
|
|
||||||
88A25F5519D8E01A00924534 /* JSQSystemSoundPlayer+JSQMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "JSQSystemSoundPlayer+JSQMessages.h"; sourceTree = "<group>"; };
|
88A25F5519D8E01A00924534 /* JSQSystemSoundPlayer+JSQMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "JSQSystemSoundPlayer+JSQMessages.h"; sourceTree = "<group>"; };
|
||||||
88A25F5619D8E01A00924534 /* JSQSystemSoundPlayer+JSQMessages.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "JSQSystemSoundPlayer+JSQMessages.m"; sourceTree = "<group>"; };
|
88A25F5619D8E01A00924534 /* JSQSystemSoundPlayer+JSQMessages.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "JSQSystemSoundPlayer+JSQMessages.m"; sourceTree = "<group>"; };
|
||||||
88A25F5719D8E01A00924534 /* NSString+JSQMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+JSQMessages.h"; sourceTree = "<group>"; };
|
88A25F5719D8E01A00924534 /* NSString+JSQMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+JSQMessages.h"; sourceTree = "<group>"; };
|
||||||
@ -226,8 +214,6 @@
|
|||||||
88A25F7319D8E01A00924534 /* JSQMessagesCollectionViewFlowLayoutInvalidationContext.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesCollectionViewFlowLayoutInvalidationContext.m; sourceTree = "<group>"; };
|
88A25F7319D8E01A00924534 /* JSQMessagesCollectionViewFlowLayoutInvalidationContext.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesCollectionViewFlowLayoutInvalidationContext.m; sourceTree = "<group>"; };
|
||||||
88A25F7419D8E01A00924534 /* JSQMessagesCollectionViewLayoutAttributes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQMessagesCollectionViewLayoutAttributes.h; sourceTree = "<group>"; };
|
88A25F7419D8E01A00924534 /* JSQMessagesCollectionViewLayoutAttributes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQMessagesCollectionViewLayoutAttributes.h; sourceTree = "<group>"; };
|
||||||
88A25F7519D8E01A00924534 /* JSQMessagesCollectionViewLayoutAttributes.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesCollectionViewLayoutAttributes.m; sourceTree = "<group>"; };
|
88A25F7519D8E01A00924534 /* JSQMessagesCollectionViewLayoutAttributes.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesCollectionViewLayoutAttributes.m; sourceTree = "<group>"; };
|
||||||
88A25F7719D8E01A00924534 /* JSQMediaMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQMediaMessage.h; sourceTree = "<group>"; };
|
|
||||||
88A25F7819D8E01A00924534 /* JSQMediaMessage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMediaMessage.m; sourceTree = "<group>"; };
|
|
||||||
88A25F7919D8E01A00924534 /* JSQMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQMessage.h; sourceTree = "<group>"; };
|
88A25F7919D8E01A00924534 /* JSQMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQMessage.h; sourceTree = "<group>"; };
|
||||||
88A25F7A19D8E01A00924534 /* JSQMessage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessage.m; sourceTree = "<group>"; };
|
88A25F7A19D8E01A00924534 /* JSQMessage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessage.m; sourceTree = "<group>"; };
|
||||||
88A25F7B19D8E01A00924534 /* JSQMessageAvatarImageDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQMessageAvatarImageDataSource.h; sourceTree = "<group>"; };
|
88A25F7B19D8E01A00924534 /* JSQMessageAvatarImageDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQMessageAvatarImageDataSource.h; sourceTree = "<group>"; };
|
||||||
@ -242,18 +228,14 @@
|
|||||||
88A25F8419D8E01A00924534 /* JSQMessagesCollectionViewDelegateFlowLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQMessagesCollectionViewDelegateFlowLayout.h; sourceTree = "<group>"; };
|
88A25F8419D8E01A00924534 /* JSQMessagesCollectionViewDelegateFlowLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQMessagesCollectionViewDelegateFlowLayout.h; sourceTree = "<group>"; };
|
||||||
88A25F8519D8E01A00924534 /* JSQPhotoMediaItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQPhotoMediaItem.h; sourceTree = "<group>"; };
|
88A25F8519D8E01A00924534 /* JSQPhotoMediaItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQPhotoMediaItem.h; sourceTree = "<group>"; };
|
||||||
88A25F8619D8E01A00924534 /* JSQPhotoMediaItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQPhotoMediaItem.m; sourceTree = "<group>"; };
|
88A25F8619D8E01A00924534 /* JSQPhotoMediaItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQPhotoMediaItem.m; sourceTree = "<group>"; };
|
||||||
88A25F8719D8E01A00924534 /* JSQTextMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQTextMessage.h; sourceTree = "<group>"; };
|
|
||||||
88A25F8819D8E01A00924534 /* JSQTextMessage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQTextMessage.m; sourceTree = "<group>"; };
|
|
||||||
88A25F8A19D8E01A00924534 /* JSQMessagesCollectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQMessagesCollectionView.h; sourceTree = "<group>"; };
|
88A25F8A19D8E01A00924534 /* JSQMessagesCollectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQMessagesCollectionView.h; sourceTree = "<group>"; };
|
||||||
88A25F8B19D8E01A00924534 /* JSQMessagesCollectionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesCollectionView.m; sourceTree = "<group>"; };
|
88A25F8B19D8E01A00924534 /* JSQMessagesCollectionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesCollectionView.m; sourceTree = "<group>"; };
|
||||||
88A25F8C19D8E01A00924534 /* JSQMessagesCollectionViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQMessagesCollectionViewCell.h; sourceTree = "<group>"; };
|
88A25F8C19D8E01A00924534 /* JSQMessagesCollectionViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQMessagesCollectionViewCell.h; sourceTree = "<group>"; };
|
||||||
88A25F8D19D8E01A00924534 /* JSQMessagesCollectionViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesCollectionViewCell.m; sourceTree = "<group>"; };
|
88A25F8D19D8E01A00924534 /* JSQMessagesCollectionViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesCollectionViewCell.m; sourceTree = "<group>"; };
|
||||||
88A25F8E19D8E01A00924534 /* JSQMessagesCollectionViewCellIncoming.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQMessagesCollectionViewCellIncoming.h; sourceTree = "<group>"; };
|
88A25F8E19D8E01A00924534 /* JSQMessagesCollectionViewCellIncoming.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQMessagesCollectionViewCellIncoming.h; sourceTree = "<group>"; };
|
||||||
88A25F8F19D8E01A00924534 /* JSQMessagesCollectionViewCellIncoming.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesCollectionViewCellIncoming.m; sourceTree = "<group>"; };
|
88A25F8F19D8E01A00924534 /* JSQMessagesCollectionViewCellIncoming.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesCollectionViewCellIncoming.m; sourceTree = "<group>"; };
|
||||||
88A25F9019D8E01A00924534 /* JSQMessagesCollectionViewCellIncoming.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = JSQMessagesCollectionViewCellIncoming.xib; sourceTree = "<group>"; };
|
|
||||||
88A25F9119D8E01A00924534 /* JSQMessagesCollectionViewCellOutgoing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQMessagesCollectionViewCellOutgoing.h; sourceTree = "<group>"; };
|
88A25F9119D8E01A00924534 /* JSQMessagesCollectionViewCellOutgoing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQMessagesCollectionViewCellOutgoing.h; sourceTree = "<group>"; };
|
||||||
88A25F9219D8E01A00924534 /* JSQMessagesCollectionViewCellOutgoing.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesCollectionViewCellOutgoing.m; sourceTree = "<group>"; };
|
88A25F9219D8E01A00924534 /* JSQMessagesCollectionViewCellOutgoing.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesCollectionViewCellOutgoing.m; sourceTree = "<group>"; };
|
||||||
88A25F9319D8E01A00924534 /* JSQMessagesCollectionViewCellOutgoing.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = JSQMessagesCollectionViewCellOutgoing.xib; sourceTree = "<group>"; };
|
|
||||||
88A25F9419D8E01A00924534 /* JSQMessagesComposerTextView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQMessagesComposerTextView.h; sourceTree = "<group>"; };
|
88A25F9419D8E01A00924534 /* JSQMessagesComposerTextView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQMessagesComposerTextView.h; sourceTree = "<group>"; };
|
||||||
88A25F9519D8E01A00924534 /* JSQMessagesComposerTextView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesComposerTextView.m; sourceTree = "<group>"; };
|
88A25F9519D8E01A00924534 /* JSQMessagesComposerTextView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesComposerTextView.m; sourceTree = "<group>"; };
|
||||||
88A25F9619D8E01A00924534 /* JSQMessagesInputToolbar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQMessagesInputToolbar.h; sourceTree = "<group>"; };
|
88A25F9619D8E01A00924534 /* JSQMessagesInputToolbar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQMessagesInputToolbar.h; sourceTree = "<group>"; };
|
||||||
@ -287,11 +269,10 @@
|
|||||||
88A25FEE19D8E18400924534 /* JSQMessagesToolbarButtonFactoryTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesToolbarButtonFactoryTests.m; sourceTree = "<group>"; };
|
88A25FEE19D8E18400924534 /* JSQMessagesToolbarButtonFactoryTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesToolbarButtonFactoryTests.m; sourceTree = "<group>"; };
|
||||||
88A25FF019D8E18400924534 /* JSQMessagesCollectionViewFlowLayoutTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesCollectionViewFlowLayoutTests.m; sourceTree = "<group>"; };
|
88A25FF019D8E18400924534 /* JSQMessagesCollectionViewFlowLayoutTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesCollectionViewFlowLayoutTests.m; sourceTree = "<group>"; };
|
||||||
88A25FF119D8E18400924534 /* JSQMessagesCollectionViewLayoutAttributesTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesCollectionViewLayoutAttributesTests.m; sourceTree = "<group>"; };
|
88A25FF119D8E18400924534 /* JSQMessagesCollectionViewLayoutAttributesTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesCollectionViewLayoutAttributesTests.m; sourceTree = "<group>"; };
|
||||||
88A25FF319D8E18400924534 /* JSQMediaMessageTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMediaMessageTests.m; sourceTree = "<group>"; };
|
88A25FF319D8E18400924534 /* JSQMessageMediaTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessageMediaTests.m; sourceTree = "<group>"; };
|
||||||
88A25FF419D8E18400924534 /* JSQMessagesAvatarImageTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesAvatarImageTests.m; sourceTree = "<group>"; };
|
88A25FF419D8E18400924534 /* JSQMessagesAvatarImageTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesAvatarImageTests.m; sourceTree = "<group>"; };
|
||||||
88A25FF519D8E18400924534 /* JSQMessagesBubbleImageTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesBubbleImageTests.m; sourceTree = "<group>"; };
|
88A25FF519D8E18400924534 /* JSQMessagesBubbleImageTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesBubbleImageTests.m; sourceTree = "<group>"; };
|
||||||
88A25FF619D8E18400924534 /* JSQMessageTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessageTests.m; sourceTree = "<group>"; };
|
88A25FF619D8E18400924534 /* JSQMessageTextTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessageTextTests.m; sourceTree = "<group>"; };
|
||||||
88A25FF719D8E18400924534 /* JSQTextMessageTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQTextMessageTests.m; sourceTree = "<group>"; };
|
|
||||||
88A25FF919D8E18400924534 /* JSQMessagesCollectionViewCellTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesCollectionViewCellTests.m; sourceTree = "<group>"; };
|
88A25FF919D8E18400924534 /* JSQMessagesCollectionViewCellTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesCollectionViewCellTests.m; sourceTree = "<group>"; };
|
||||||
88A25FFA19D8E18400924534 /* JSQMessagesCollectionViewTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesCollectionViewTests.m; sourceTree = "<group>"; };
|
88A25FFA19D8E18400924534 /* JSQMessagesCollectionViewTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesCollectionViewTests.m; sourceTree = "<group>"; };
|
||||||
88A25FFB19D8E18400924534 /* JSQMessagesComposerTextViewTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesComposerTextViewTests.m; sourceTree = "<group>"; };
|
88A25FFB19D8E18400924534 /* JSQMessagesComposerTextViewTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesComposerTextViewTests.m; sourceTree = "<group>"; };
|
||||||
@ -301,12 +282,38 @@
|
|||||||
88A25FFF19D8E18400924534 /* JSQMessagesToolbarContentViewTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesToolbarContentViewTests.m; sourceTree = "<group>"; };
|
88A25FFF19D8E18400924534 /* JSQMessagesToolbarContentViewTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesToolbarContentViewTests.m; sourceTree = "<group>"; };
|
||||||
88A2600019D8E18400924534 /* JSQMessagesTypingIndicatorFooterViewTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesTypingIndicatorFooterViewTests.m; sourceTree = "<group>"; };
|
88A2600019D8E18400924534 /* JSQMessagesTypingIndicatorFooterViewTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesTypingIndicatorFooterViewTests.m; sourceTree = "<group>"; };
|
||||||
88A2601A19D8E45600924534 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
88A2601A19D8E45600924534 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||||
88AE58E919E77FBF0042B0DE /* bubble_stroked_tailless.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bubble_stroked_tailless.png; sourceTree = "<group>"; };
|
88A901B419F618B100F99777 /* JSQMediaItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQMediaItem.h; sourceTree = "<group>"; };
|
||||||
88AE58EA19E77FBF0042B0DE /* bubble_stroked_tailless@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "bubble_stroked_tailless@2x.png"; sourceTree = "<group>"; };
|
88A901B519F618B100F99777 /* JSQMediaItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMediaItem.m; sourceTree = "<group>"; };
|
||||||
88AE58EB19E77FBF0042B0DE /* bubble_stroked.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bubble_stroked.png; sourceTree = "<group>"; };
|
88C00A4D1A44D4C600B004B3 /* JSQLocationMediaItemTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQLocationMediaItemTests.m; sourceTree = "<group>"; };
|
||||||
88AE58EC19E77FBF0042B0DE /* bubble_stroked@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "bubble_stroked@2x.png"; sourceTree = "<group>"; };
|
88C00A4F1A44D4D800B004B3 /* JSQPhotoMediaItemTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQPhotoMediaItemTests.m; sourceTree = "<group>"; };
|
||||||
|
88C00A511A44D4E500B004B3 /* JSQVideoMediaItemTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQVideoMediaItemTests.m; sourceTree = "<group>"; };
|
||||||
|
88C4582E19F5F7A0008FD427 /* JSQMessagesMediaViewBubbleImageMasker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQMessagesMediaViewBubbleImageMasker.h; sourceTree = "<group>"; };
|
||||||
|
88C4582F19F5F7A0008FD427 /* JSQMessagesMediaViewBubbleImageMasker.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesMediaViewBubbleImageMasker.m; sourceTree = "<group>"; };
|
||||||
97E6750B77E8A7042BA0754B /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
97E6750B77E8A7042BA0754B /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
|
FC15B7A81A1E880900F59801 /* JSQCallCollectionViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = JSQCallCollectionViewCell.xib; sourceTree = "<group>"; };
|
||||||
|
FC15B7AE1A1F6AC800F59801 /* JSQMessagesCollectionViewCellIncoming.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = JSQMessagesCollectionViewCellIncoming.xib; sourceTree = "<group>"; };
|
||||||
|
FC15B7AF1A1F6AC800F59801 /* JSQMessagesCollectionViewCellOutgoing.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = JSQMessagesCollectionViewCellOutgoing.xib; sourceTree = "<group>"; };
|
||||||
|
FC4FA0381A1E1BD100DA100A /* JSQCall.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQCall.h; sourceTree = "<group>"; };
|
||||||
|
FC4FA0391A1E1BD100DA100A /* JSQCall.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQCall.m; sourceTree = "<group>"; };
|
||||||
|
FC4FA03B1A1E81AF00DA100A /* JSQCallCollectionViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQCallCollectionViewCell.h; sourceTree = "<group>"; };
|
||||||
|
FC4FA03C1A1E81AF00DA100A /* JSQCallCollectionViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQCallCollectionViewCell.m; sourceTree = "<group>"; };
|
||||||
FC5C727E4CCDA2B95A7BA30C /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.debug.xcconfig; path = "Pods/Target Support Files/Pods/Pods.debug.xcconfig"; sourceTree = "<group>"; };
|
FC5C727E4CCDA2B95A7BA30C /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.debug.xcconfig; path = "Pods/Target Support Files/Pods/Pods.debug.xcconfig"; sourceTree = "<group>"; };
|
||||||
|
FCA52AEE1A2B6ECE00CCADFA /* call_missed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "call_missed@2x.png"; path = "../../JSQMessagesDemo/call_missed@2x.png"; sourceTree = "<group>"; };
|
||||||
|
FCA52AF11A2B6FAE00CCADFA /* call_canceled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "call_canceled@2x.png"; sourceTree = "<group>"; };
|
||||||
|
FCA52AF21A2B6FAE00CCADFA /* call_failed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "call_failed@2x.png"; sourceTree = "<group>"; };
|
||||||
|
FCA52AF31A2B6FAE00CCADFA /* call_incoming@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "call_incoming@2x.png"; sourceTree = "<group>"; };
|
||||||
|
FCA52AF41A2B6FAE00CCADFA /* call_outgoing@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "call_outgoing@2x.png"; sourceTree = "<group>"; };
|
||||||
|
FCA52B001A2B9F0E00CCADFA /* warning_white@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "warning_white@2x.png"; sourceTree = "<group>"; };
|
||||||
|
FCA52B011A2B9F0E00CCADFA /* error_white@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "error_white@2x.png"; sourceTree = "<group>"; };
|
||||||
|
FCFA5E111A29FC1000C8E32E /* JSQDisplayedMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQDisplayedMessage.h; sourceTree = "<group>"; };
|
||||||
|
FCFA5E121A29FC1000C8E32E /* JSQDisplayedMessage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQDisplayedMessage.m; sourceTree = "<group>"; };
|
||||||
|
FCFA5E141A29FE3B00C8E32E /* JSQInfoMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQInfoMessage.h; sourceTree = "<group>"; };
|
||||||
|
FCFA5E151A29FE3B00C8E32E /* JSQInfoMessage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQInfoMessage.m; sourceTree = "<group>"; };
|
||||||
|
FCFA5E171A2A044500C8E32E /* JSQErrorMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQErrorMessage.h; sourceTree = "<group>"; };
|
||||||
|
FCFA5E181A2A044500C8E32E /* JSQErrorMessage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQErrorMessage.m; sourceTree = "<group>"; };
|
||||||
|
FCFA5E1A1A2A08E500C8E32E /* JSQDisplayedMessageCollectionViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQDisplayedMessageCollectionViewCell.h; sourceTree = "<group>"; };
|
||||||
|
FCFA5E1B1A2A08E500C8E32E /* JSQDisplayedMessageCollectionViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQDisplayedMessageCollectionViewCell.m; sourceTree = "<group>"; };
|
||||||
|
FCFA5E1C1A2A08E500C8E32E /* JSQDisplayedMessageCollectionViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = JSQDisplayedMessageCollectionViewCell.xib; sourceTree = "<group>"; };
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
@ -368,15 +375,24 @@
|
|||||||
88445B3A19E0C0B10014F889 /* XCTest.framework */,
|
88445B3A19E0C0B10014F889 /* XCTest.framework */,
|
||||||
);
|
);
|
||||||
name = Frameworks;
|
name = Frameworks;
|
||||||
|
path = ../..;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
8841B88219F4983C00EA16B6 /* Strings */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
8841B88719F4988800EA16B6 /* JSQMessages.strings */,
|
||||||
|
);
|
||||||
|
path = Strings;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
88A25EF919D8DEC400924534 = {
|
88A25EF919D8DEC400924534 = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
886C33FE19F45E30006B4997 /* JSQMessagesViewController.podspec */,
|
||||||
88A25F3E19D8E01A00924534 /* JSQMessagesViewController */,
|
88A25F3E19D8E01A00924534 /* JSQMessagesViewController */,
|
||||||
88A25F1E19D8DEC500924534 /* JSQMessagesTests */,
|
|
||||||
88A25F2B19D8DF2500924534 /* JSQMessagesDemo */,
|
88A25F2B19D8DF2500924534 /* JSQMessagesDemo */,
|
||||||
636A8663AEEE5C37B65C515D /* Frameworks */,
|
88A25F1E19D8DEC500924534 /* JSQMessagesTests */,
|
||||||
2BBEF3CD91C31A49E5FF9E3C /* Pods */,
|
2BBEF3CD91C31A49E5FF9E3C /* Pods */,
|
||||||
88A25F0319D8DEC400924534 /* Products */,
|
88A25F0319D8DEC400924534 /* Products */,
|
||||||
);
|
);
|
||||||
@ -454,55 +470,14 @@
|
|||||||
88A25F3F19D8E01A00924534 /* Assets */ = {
|
88A25F3F19D8E01A00924534 /* Assets */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
88A25F4019D8E01A00924534 /* Images */,
|
FCA52AFB1A2B9BAD00CCADFA /* InfoError */,
|
||||||
88A25F5119D8E01A00924534 /* Sounds */,
|
FCA52AF01A2B6F8A00CCADFA /* Calls */,
|
||||||
|
8841B88219F4983C00EA16B6 /* Strings */,
|
||||||
|
8861666C19F492B70025B958 /* JSQMessagesAssets.bundle */,
|
||||||
);
|
);
|
||||||
path = Assets;
|
path = Assets;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
88A25F4019D8E01A00924534 /* Images */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
88A25F4519D8E01A00924534 /* bubble_min_tailless.png */,
|
|
||||||
88A25F4619D8E01A00924534 /* bubble_min_tailless@2x.png */,
|
|
||||||
8846441519EB15B2001EBA43 /* bubble_min_tailless@3x.png */,
|
|
||||||
88A25F4319D8E01A00924534 /* bubble_min.png */,
|
|
||||||
88A25F4419D8E01A00924534 /* bubble_min@2x.png */,
|
|
||||||
8846441619EB15B2001EBA43 /* bubble_min@3x.png */,
|
|
||||||
88AE58E919E77FBF0042B0DE /* bubble_stroked_tailless.png */,
|
|
||||||
88AE58EA19E77FBF0042B0DE /* bubble_stroked_tailless@2x.png */,
|
|
||||||
8846441719EB15B2001EBA43 /* bubble_stroked_tailless@3x.png */,
|
|
||||||
88AE58EB19E77FBF0042B0DE /* bubble_stroked.png */,
|
|
||||||
88AE58EC19E77FBF0042B0DE /* bubble_stroked@2x.png */,
|
|
||||||
8846441419EB15B2001EBA43 /* bubble_stroked@3x.png */,
|
|
||||||
8846442919EB18A5001EBA43 /* bubble_tailless.png */,
|
|
||||||
8846442819EB18A5001EBA43 /* bubble_tailless@2x.png */,
|
|
||||||
8846442619EB189E001EBA43 /* bubble_tailless@3x.png */,
|
|
||||||
88A25F4119D8E01A00924534 /* bubble.png */,
|
|
||||||
88A25F4219D8E01A00924534 /* bubble@2x.png */,
|
|
||||||
8846442319EB1830001EBA43 /* bubble@3x.png */,
|
|
||||||
88078A9E19D8FFEA005B4595 /* clip.png */,
|
|
||||||
88078A9F19D8FFEA005B4595 /* clip@2x.png */,
|
|
||||||
88078AA019D8FFEA005B4595 /* clip@3x.png */,
|
|
||||||
8846441E19EB17CF001EBA43 /* play.png */,
|
|
||||||
8846441D19EB17CF001EBA43 /* play@2x.png */,
|
|
||||||
8846441C19EB17CF001EBA43 /* play@3x.png */,
|
|
||||||
88078AA619D9034F005B4595 /* typing.png */,
|
|
||||||
88078AA519D9034F005B4595 /* typing@2x.png */,
|
|
||||||
88078AA419D9034F005B4595 /* typing@3x.png */,
|
|
||||||
);
|
|
||||||
path = Images;
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
88A25F5119D8E01A00924534 /* Sounds */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
88A25F5219D8E01A00924534 /* message_received.aiff */,
|
|
||||||
88A25F5319D8E01A00924534 /* message_sent.aiff */,
|
|
||||||
);
|
|
||||||
path = Sounds;
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
88A25F5419D8E01A00924534 /* Categories */ = {
|
88A25F5419D8E01A00924534 /* Categories */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@ -541,6 +516,8 @@
|
|||||||
88A25F6719D8E01A00924534 /* JSQMessagesAvatarImageFactory.m */,
|
88A25F6719D8E01A00924534 /* JSQMessagesAvatarImageFactory.m */,
|
||||||
88A25F6819D8E01A00924534 /* JSQMessagesBubbleImageFactory.h */,
|
88A25F6819D8E01A00924534 /* JSQMessagesBubbleImageFactory.h */,
|
||||||
88A25F6919D8E01A00924534 /* JSQMessagesBubbleImageFactory.m */,
|
88A25F6919D8E01A00924534 /* JSQMessagesBubbleImageFactory.m */,
|
||||||
|
88C4582E19F5F7A0008FD427 /* JSQMessagesMediaViewBubbleImageMasker.h */,
|
||||||
|
88C4582F19F5F7A0008FD427 /* JSQMessagesMediaViewBubbleImageMasker.m */,
|
||||||
88A25F6A19D8E01A00924534 /* JSQMessagesTimestampFormatter.h */,
|
88A25F6A19D8E01A00924534 /* JSQMessagesTimestampFormatter.h */,
|
||||||
88A25F6B19D8E01A00924534 /* JSQMessagesTimestampFormatter.m */,
|
88A25F6B19D8E01A00924534 /* JSQMessagesTimestampFormatter.m */,
|
||||||
88A25F6C19D8E01A00924534 /* JSQMessagesToolbarButtonFactory.h */,
|
88A25F6C19D8E01A00924534 /* JSQMessagesToolbarButtonFactory.h */,
|
||||||
@ -567,8 +544,8 @@
|
|||||||
children = (
|
children = (
|
||||||
88445B3E19E1B4470014F889 /* JSQLocationMediaItem.h */,
|
88445B3E19E1B4470014F889 /* JSQLocationMediaItem.h */,
|
||||||
88445B3F19E1B4470014F889 /* JSQLocationMediaItem.m */,
|
88445B3F19E1B4470014F889 /* JSQLocationMediaItem.m */,
|
||||||
88A25F7719D8E01A00924534 /* JSQMediaMessage.h */,
|
88A901B419F618B100F99777 /* JSQMediaItem.h */,
|
||||||
88A25F7819D8E01A00924534 /* JSQMediaMessage.m */,
|
88A901B519F618B100F99777 /* JSQMediaItem.m */,
|
||||||
88A25F7919D8E01A00924534 /* JSQMessage.h */,
|
88A25F7919D8E01A00924534 /* JSQMessage.h */,
|
||||||
88A25F7A19D8E01A00924534 /* JSQMessage.m */,
|
88A25F7A19D8E01A00924534 /* JSQMessage.m */,
|
||||||
88A25F7B19D8E01A00924534 /* JSQMessageAvatarImageDataSource.h */,
|
88A25F7B19D8E01A00924534 /* JSQMessageAvatarImageDataSource.h */,
|
||||||
@ -583,10 +560,16 @@
|
|||||||
88A25F8419D8E01A00924534 /* JSQMessagesCollectionViewDelegateFlowLayout.h */,
|
88A25F8419D8E01A00924534 /* JSQMessagesCollectionViewDelegateFlowLayout.h */,
|
||||||
88A25F8519D8E01A00924534 /* JSQPhotoMediaItem.h */,
|
88A25F8519D8E01A00924534 /* JSQPhotoMediaItem.h */,
|
||||||
88A25F8619D8E01A00924534 /* JSQPhotoMediaItem.m */,
|
88A25F8619D8E01A00924534 /* JSQPhotoMediaItem.m */,
|
||||||
88A25F8719D8E01A00924534 /* JSQTextMessage.h */,
|
886C33FB19F4371E006B4997 /* JSQVideoMediaItem.h */,
|
||||||
88A25F8819D8E01A00924534 /* JSQTextMessage.m */,
|
886C33FC19F4371E006B4997 /* JSQVideoMediaItem.m */,
|
||||||
8846442C19EB2BF4001EBA43 /* JSQVideoMediaitem.h */,
|
FC4FA0381A1E1BD100DA100A /* JSQCall.h */,
|
||||||
8846442D19EB2BF4001EBA43 /* JSQVideoMediaitem.m */,
|
FC4FA0391A1E1BD100DA100A /* JSQCall.m */,
|
||||||
|
FCFA5E111A29FC1000C8E32E /* JSQDisplayedMessage.h */,
|
||||||
|
FCFA5E121A29FC1000C8E32E /* JSQDisplayedMessage.m */,
|
||||||
|
FCFA5E141A29FE3B00C8E32E /* JSQInfoMessage.h */,
|
||||||
|
FCFA5E151A29FE3B00C8E32E /* JSQInfoMessage.m */,
|
||||||
|
FCFA5E171A2A044500C8E32E /* JSQErrorMessage.h */,
|
||||||
|
FCFA5E181A2A044500C8E32E /* JSQErrorMessage.m */,
|
||||||
);
|
);
|
||||||
path = Model;
|
path = Model;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -594,16 +577,19 @@
|
|||||||
88A25F8919D8E01A00924534 /* Views */ = {
|
88A25F8919D8E01A00924534 /* Views */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
636A8663AEEE5C37B65C515D /* Frameworks */,
|
||||||
|
883C11761A09FB100092A16D /* JSQMessagesCellTextView.h */,
|
||||||
|
883C11771A09FB100092A16D /* JSQMessagesCellTextView.m */,
|
||||||
88A25F8A19D8E01A00924534 /* JSQMessagesCollectionView.h */,
|
88A25F8A19D8E01A00924534 /* JSQMessagesCollectionView.h */,
|
||||||
88A25F8B19D8E01A00924534 /* JSQMessagesCollectionView.m */,
|
88A25F8B19D8E01A00924534 /* JSQMessagesCollectionView.m */,
|
||||||
88A25F8C19D8E01A00924534 /* JSQMessagesCollectionViewCell.h */,
|
88A25F8C19D8E01A00924534 /* JSQMessagesCollectionViewCell.h */,
|
||||||
88A25F8D19D8E01A00924534 /* JSQMessagesCollectionViewCell.m */,
|
88A25F8D19D8E01A00924534 /* JSQMessagesCollectionViewCell.m */,
|
||||||
88A25F8E19D8E01A00924534 /* JSQMessagesCollectionViewCellIncoming.h */,
|
88A25F8E19D8E01A00924534 /* JSQMessagesCollectionViewCellIncoming.h */,
|
||||||
88A25F8F19D8E01A00924534 /* JSQMessagesCollectionViewCellIncoming.m */,
|
88A25F8F19D8E01A00924534 /* JSQMessagesCollectionViewCellIncoming.m */,
|
||||||
88A25F9019D8E01A00924534 /* JSQMessagesCollectionViewCellIncoming.xib */,
|
FC15B7AE1A1F6AC800F59801 /* JSQMessagesCollectionViewCellIncoming.xib */,
|
||||||
88A25F9119D8E01A00924534 /* JSQMessagesCollectionViewCellOutgoing.h */,
|
88A25F9119D8E01A00924534 /* JSQMessagesCollectionViewCellOutgoing.h */,
|
||||||
88A25F9219D8E01A00924534 /* JSQMessagesCollectionViewCellOutgoing.m */,
|
88A25F9219D8E01A00924534 /* JSQMessagesCollectionViewCellOutgoing.m */,
|
||||||
88A25F9319D8E01A00924534 /* JSQMessagesCollectionViewCellOutgoing.xib */,
|
FC15B7AF1A1F6AC800F59801 /* JSQMessagesCollectionViewCellOutgoing.xib */,
|
||||||
88A25F9419D8E01A00924534 /* JSQMessagesComposerTextView.h */,
|
88A25F9419D8E01A00924534 /* JSQMessagesComposerTextView.h */,
|
||||||
88A25F9519D8E01A00924534 /* JSQMessagesComposerTextView.m */,
|
88A25F9519D8E01A00924534 /* JSQMessagesComposerTextView.m */,
|
||||||
88A25F9619D8E01A00924534 /* JSQMessagesInputToolbar.h */,
|
88A25F9619D8E01A00924534 /* JSQMessagesInputToolbar.h */,
|
||||||
@ -621,6 +607,12 @@
|
|||||||
88A25FA019D8E01A00924534 /* JSQMessagesTypingIndicatorFooterView.h */,
|
88A25FA019D8E01A00924534 /* JSQMessagesTypingIndicatorFooterView.h */,
|
||||||
88A25FA119D8E01A00924534 /* JSQMessagesTypingIndicatorFooterView.m */,
|
88A25FA119D8E01A00924534 /* JSQMessagesTypingIndicatorFooterView.m */,
|
||||||
88A25FA219D8E01A00924534 /* JSQMessagesTypingIndicatorFooterView.xib */,
|
88A25FA219D8E01A00924534 /* JSQMessagesTypingIndicatorFooterView.xib */,
|
||||||
|
FC4FA03B1A1E81AF00DA100A /* JSQCallCollectionViewCell.h */,
|
||||||
|
FC4FA03C1A1E81AF00DA100A /* JSQCallCollectionViewCell.m */,
|
||||||
|
FC15B7A81A1E880900F59801 /* JSQCallCollectionViewCell.xib */,
|
||||||
|
FCFA5E1A1A2A08E500C8E32E /* JSQDisplayedMessageCollectionViewCell.h */,
|
||||||
|
FCFA5E1B1A2A08E500C8E32E /* JSQDisplayedMessageCollectionViewCell.m */,
|
||||||
|
FCFA5E1C1A2A08E500C8E32E /* JSQDisplayedMessageCollectionViewCell.xib */,
|
||||||
);
|
);
|
||||||
path = Views;
|
path = Views;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -650,6 +642,7 @@
|
|||||||
children = (
|
children = (
|
||||||
88A25FEB19D8E18400924534 /* JSQMessagesAvatarImageFactoryTests.m */,
|
88A25FEB19D8E18400924534 /* JSQMessagesAvatarImageFactoryTests.m */,
|
||||||
88A25FEC19D8E18400924534 /* JSQMessagesBubbleImageFactoryTests.m */,
|
88A25FEC19D8E18400924534 /* JSQMessagesBubbleImageFactoryTests.m */,
|
||||||
|
88324C3319F6301C00BC732D /* JSQMessagesMediaViewBubbleImageMaskerTests.m */,
|
||||||
88A25FED19D8E18400924534 /* JSQMessagesTimestampFormatterTests.m */,
|
88A25FED19D8E18400924534 /* JSQMessagesTimestampFormatterTests.m */,
|
||||||
88A25FEE19D8E18400924534 /* JSQMessagesToolbarButtonFactoryTests.m */,
|
88A25FEE19D8E18400924534 /* JSQMessagesToolbarButtonFactoryTests.m */,
|
||||||
);
|
);
|
||||||
@ -668,11 +661,13 @@
|
|||||||
88A25FF219D8E18400924534 /* ModelTests */ = {
|
88A25FF219D8E18400924534 /* ModelTests */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
88A25FF319D8E18400924534 /* JSQMediaMessageTests.m */,
|
88C00A4D1A44D4C600B004B3 /* JSQLocationMediaItemTests.m */,
|
||||||
|
88A25FF319D8E18400924534 /* JSQMessageMediaTests.m */,
|
||||||
88A25FF419D8E18400924534 /* JSQMessagesAvatarImageTests.m */,
|
88A25FF419D8E18400924534 /* JSQMessagesAvatarImageTests.m */,
|
||||||
88A25FF519D8E18400924534 /* JSQMessagesBubbleImageTests.m */,
|
88A25FF519D8E18400924534 /* JSQMessagesBubbleImageTests.m */,
|
||||||
88A25FF619D8E18400924534 /* JSQMessageTests.m */,
|
88A25FF619D8E18400924534 /* JSQMessageTextTests.m */,
|
||||||
88A25FF719D8E18400924534 /* JSQTextMessageTests.m */,
|
88C00A4F1A44D4D800B004B3 /* JSQPhotoMediaItemTests.m */,
|
||||||
|
88C00A511A44D4E500B004B3 /* JSQVideoMediaItemTests.m */,
|
||||||
);
|
);
|
||||||
path = ModelTests;
|
path = ModelTests;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -692,6 +687,27 @@
|
|||||||
path = ViewTests;
|
path = ViewTests;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
FCA52AF01A2B6F8A00CCADFA /* Calls */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
FCA52AF11A2B6FAE00CCADFA /* call_canceled@2x.png */,
|
||||||
|
FCA52AF21A2B6FAE00CCADFA /* call_failed@2x.png */,
|
||||||
|
FCA52AF31A2B6FAE00CCADFA /* call_incoming@2x.png */,
|
||||||
|
FCA52AF41A2B6FAE00CCADFA /* call_outgoing@2x.png */,
|
||||||
|
FCA52AEE1A2B6ECE00CCADFA /* call_missed@2x.png */,
|
||||||
|
);
|
||||||
|
name = Calls;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
FCA52AFB1A2B9BAD00CCADFA /* InfoError */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
FCA52B001A2B9F0E00CCADFA /* warning_white@2x.png */,
|
||||||
|
FCA52B011A2B9F0E00CCADFA /* error_white@2x.png */,
|
||||||
|
);
|
||||||
|
name = InfoError;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
/* End PBXGroup section */
|
/* End PBXGroup section */
|
||||||
|
|
||||||
/* Begin PBXNativeTarget section */
|
/* Begin PBXNativeTarget section */
|
||||||
@ -759,6 +775,19 @@
|
|||||||
knownRegions = (
|
knownRegions = (
|
||||||
en,
|
en,
|
||||||
Base,
|
Base,
|
||||||
|
es,
|
||||||
|
de,
|
||||||
|
"zh-Hans",
|
||||||
|
"zh-Hant",
|
||||||
|
ro,
|
||||||
|
ru,
|
||||||
|
pl,
|
||||||
|
pt,
|
||||||
|
fr,
|
||||||
|
it,
|
||||||
|
he,
|
||||||
|
nl,
|
||||||
|
tr,
|
||||||
);
|
);
|
||||||
mainGroup = 88A25EF919D8DEC400924534;
|
mainGroup = 88A25EF919D8DEC400924534;
|
||||||
productRefGroup = 88A25F0319D8DEC400924534 /* Products */;
|
productRefGroup = 88A25F0319D8DEC400924534 /* Products */;
|
||||||
@ -776,43 +805,26 @@
|
|||||||
isa = PBXResourcesBuildPhase;
|
isa = PBXResourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
88078AA919D9034F005B4595 /* typing.png in Resources */,
|
88E4D7131A0DBD6B000CC061 /* JSQMessages.strings in Resources */,
|
||||||
8846441919EB15B2001EBA43 /* bubble_min_tailless@3x.png in Resources */,
|
886C33FF19F45E30006B4997 /* JSQMessagesViewController.podspec in Resources */,
|
||||||
88078AA719D9034F005B4595 /* typing@3x.png in Resources */,
|
8861666D19F492B70025B958 /* JSQMessagesAssets.bundle in Resources */,
|
||||||
8846441B19EB15B2001EBA43 /* bubble_stroked_tailless@3x.png in Resources */,
|
FC15B7B11A1F6AC800F59801 /* JSQMessagesCollectionViewCellOutgoing.xib in Resources */,
|
||||||
88A25FB319D8E01A00924534 /* message_received.aiff in Resources */,
|
|
||||||
88078AA119D8FFEA005B4595 /* clip.png in Resources */,
|
|
||||||
88AE58EE19E77FBF0042B0DE /* bubble_stroked_tailless@2x.png in Resources */,
|
|
||||||
88A25FCF19D8E01A00924534 /* JSQMessagesCollectionViewCellOutgoing.xib in Resources */,
|
|
||||||
88AE58ED19E77FBF0042B0DE /* bubble_stroked_tailless.png in Resources */,
|
|
||||||
88A25FA719D8E01A00924534 /* bubble_min_tailless.png in Resources */,
|
|
||||||
8846441F19EB17CF001EBA43 /* play@3x.png in Resources */,
|
|
||||||
88A25FA319D8E01A00924534 /* bubble.png in Resources */,
|
|
||||||
88A25FA519D8E01A00924534 /* bubble_min.png in Resources */,
|
|
||||||
8846441A19EB15B2001EBA43 /* bubble_min@3x.png in Resources */,
|
|
||||||
8846442B19EB18A5001EBA43 /* bubble_tailless.png in Resources */,
|
|
||||||
88A25FA619D8E01A00924534 /* bubble_min@2x.png in Resources */,
|
|
||||||
88A25FCD19D8E01A00924534 /* JSQMessagesCollectionViewCellIncoming.xib in Resources */,
|
|
||||||
88A25FD619D8E01A00924534 /* JSQMessagesToolbarContentView.xib in Resources */,
|
88A25FD619D8E01A00924534 /* JSQMessagesToolbarContentView.xib in Resources */,
|
||||||
|
FCA52AF71A2B6FAE00CCADFA /* call_incoming@2x.png in Resources */,
|
||||||
88A25F3A19D8DF2500924534 /* Images.xcassets in Resources */,
|
88A25F3A19D8DF2500924534 /* Images.xcassets in Resources */,
|
||||||
88A25FBC19D8E01A00924534 /* JSQMessagesViewController.xib in Resources */,
|
88A25FBC19D8E01A00924534 /* JSQMessagesViewController.xib in Resources */,
|
||||||
8846442A19EB18A5001EBA43 /* bubble_tailless@2x.png in Resources */,
|
FCA52AF81A2B6FAE00CCADFA /* call_outgoing@2x.png in Resources */,
|
||||||
88078AA219D8FFEA005B4595 /* clip@2x.png in Resources */,
|
FCA52B021A2B9F0E00CCADFA /* warning_white@2x.png in Resources */,
|
||||||
88A25FA419D8E01A00924534 /* bubble@2x.png in Resources */,
|
FCA52AF51A2B6FAE00CCADFA /* call_canceled@2x.png in Resources */,
|
||||||
88078AA319D8FFEA005B4595 /* clip@3x.png in Resources */,
|
FCA52B031A2B9F0E00CCADFA /* error_white@2x.png in Resources */,
|
||||||
88A25FA819D8E01A00924534 /* bubble_min_tailless@2x.png in Resources */,
|
FCA52AEF1A2B6ECE00CCADFA /* call_missed@2x.png in Resources */,
|
||||||
88A25FD819D8E01A00924534 /* JSQMessagesTypingIndicatorFooterView.xib in Resources */,
|
88A25FD819D8E01A00924534 /* JSQMessagesTypingIndicatorFooterView.xib in Resources */,
|
||||||
88AE58F019E77FBF0042B0DE /* bubble_stroked@2x.png in Resources */,
|
FCFA5E1E1A2A08E500C8E32E /* JSQDisplayedMessageCollectionViewCell.xib in Resources */,
|
||||||
88A25FB419D8E01A00924534 /* message_sent.aiff in Resources */,
|
|
||||||
88A25F3919D8DF2500924534 /* Main.storyboard in Resources */,
|
88A25F3919D8DF2500924534 /* Main.storyboard in Resources */,
|
||||||
|
FC15B7B01A1F6AC800F59801 /* JSQMessagesCollectionViewCellIncoming.xib in Resources */,
|
||||||
88A25FD419D8E01A00924534 /* JSQMessagesLoadEarlierHeaderView.xib in Resources */,
|
88A25FD419D8E01A00924534 /* JSQMessagesLoadEarlierHeaderView.xib in Resources */,
|
||||||
8846442519EB1830001EBA43 /* bubble@3x.png in Resources */,
|
FC15B7A91A1E880900F59801 /* JSQCallCollectionViewCell.xib in Resources */,
|
||||||
88078AA819D9034F005B4595 /* typing@2x.png in Resources */,
|
FCA52AF61A2B6FAE00CCADFA /* call_failed@2x.png in Resources */,
|
||||||
8846442719EB189E001EBA43 /* bubble_tailless@3x.png in Resources */,
|
|
||||||
8846442119EB17CF001EBA43 /* play.png in Resources */,
|
|
||||||
88AE58EF19E77FBF0042B0DE /* bubble_stroked.png in Resources */,
|
|
||||||
8846442019EB17CF001EBA43 /* play@2x.png in Resources */,
|
|
||||||
8846441819EB15B2001EBA43 /* bubble_stroked@3x.png in Resources */,
|
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@ -900,7 +912,9 @@
|
|||||||
88A25FCB19D8E01A00924534 /* JSQMessagesCollectionViewCell.m in Sources */,
|
88A25FCB19D8E01A00924534 /* JSQMessagesCollectionViewCell.m in Sources */,
|
||||||
88A25FBB19D8E01A00924534 /* JSQMessagesViewController.m in Sources */,
|
88A25FBB19D8E01A00924534 /* JSQMessagesViewController.m in Sources */,
|
||||||
8885734D19DE55D000E89D20 /* NSUserDefaults+DemoSettings.m in Sources */,
|
8885734D19DE55D000E89D20 /* NSUserDefaults+DemoSettings.m in Sources */,
|
||||||
|
883C11781A09FB100092A16D /* JSQMessagesCellTextView.m in Sources */,
|
||||||
88A25FB919D8E01A00924534 /* UIView+JSQMessages.m in Sources */,
|
88A25FB919D8E01A00924534 /* UIView+JSQMessages.m in Sources */,
|
||||||
|
FCFA5E131A29FC1000C8E32E /* JSQDisplayedMessage.m in Sources */,
|
||||||
88A25FCA19D8E01A00924534 /* JSQMessagesCollectionView.m in Sources */,
|
88A25FCA19D8E01A00924534 /* JSQMessagesCollectionView.m in Sources */,
|
||||||
88A25FD219D8E01A00924534 /* JSQMessagesLabel.m in Sources */,
|
88A25FD219D8E01A00924534 /* JSQMessagesLabel.m in Sources */,
|
||||||
88445B4019E1B4470014F889 /* JSQLocationMediaItem.m in Sources */,
|
88445B4019E1B4470014F889 /* JSQLocationMediaItem.m in Sources */,
|
||||||
@ -908,28 +922,33 @@
|
|||||||
88A25FD519D8E01A00924534 /* JSQMessagesToolbarContentView.m in Sources */,
|
88A25FD519D8E01A00924534 /* JSQMessagesToolbarContentView.m in Sources */,
|
||||||
88A25FC119D8E01A00924534 /* JSQMessagesCollectionViewFlowLayout.m in Sources */,
|
88A25FC119D8E01A00924534 /* JSQMessagesCollectionViewFlowLayout.m in Sources */,
|
||||||
8885734A19DE540400E89D20 /* DemoSettingsViewController.m in Sources */,
|
8885734A19DE540400E89D20 /* DemoSettingsViewController.m in Sources */,
|
||||||
|
FC4FA03A1A1E1BD100DA100A /* JSQCall.m in Sources */,
|
||||||
88A25FC719D8E01A00924534 /* JSQMessagesBubbleImage.m in Sources */,
|
88A25FC719D8E01A00924534 /* JSQMessagesBubbleImage.m in Sources */,
|
||||||
88A25FC519D8E01A00924534 /* JSQMessage.m in Sources */,
|
88A25FC519D8E01A00924534 /* JSQMessage.m in Sources */,
|
||||||
88A25FD719D8E01A00924534 /* JSQMessagesTypingIndicatorFooterView.m in Sources */,
|
88A25FD719D8E01A00924534 /* JSQMessagesTypingIndicatorFooterView.m in Sources */,
|
||||||
88A25FD319D8E01A00924534 /* JSQMessagesLoadEarlierHeaderView.m in Sources */,
|
88A25FD319D8E01A00924534 /* JSQMessagesLoadEarlierHeaderView.m in Sources */,
|
||||||
|
FC4FA03D1A1E81AF00DA100A /* JSQCallCollectionViewCell.m in Sources */,
|
||||||
88A25FC819D8E01A00924534 /* JSQPhotoMediaItem.m in Sources */,
|
88A25FC819D8E01A00924534 /* JSQPhotoMediaItem.m in Sources */,
|
||||||
|
88C4583019F5F7A0008FD427 /* JSQMessagesMediaViewBubbleImageMasker.m in Sources */,
|
||||||
88A25FB819D8E01A00924534 /* UIImage+JSQMessages.m in Sources */,
|
88A25FB819D8E01A00924534 /* UIImage+JSQMessages.m in Sources */,
|
||||||
88A25FBF19D8E01A00924534 /* JSQMessagesTimestampFormatter.m in Sources */,
|
88A25FBF19D8E01A00924534 /* JSQMessagesTimestampFormatter.m in Sources */,
|
||||||
88A25FE019D8E0C400924534 /* DemoModelData.m in Sources */,
|
88A25FE019D8E0C400924534 /* DemoModelData.m in Sources */,
|
||||||
|
FCFA5E1D1A2A08E500C8E32E /* JSQDisplayedMessageCollectionViewCell.m in Sources */,
|
||||||
88A25F3C19D8DF2500924534 /* main.m in Sources */,
|
88A25F3C19D8DF2500924534 /* main.m in Sources */,
|
||||||
88A25F3719D8DF2500924534 /* AppDelegate.m in Sources */,
|
88A25F3719D8DF2500924534 /* AppDelegate.m in Sources */,
|
||||||
886FFD2E19E9A65D00EB8485 /* UIDevice+JSQMessages.m in Sources */,
|
886FFD2E19E9A65D00EB8485 /* UIDevice+JSQMessages.m in Sources */,
|
||||||
88A25FB619D8E01A00924534 /* NSString+JSQMessages.m in Sources */,
|
88A25FB619D8E01A00924534 /* NSString+JSQMessages.m in Sources */,
|
||||||
|
FCFA5E191A2A044500C8E32E /* JSQErrorMessage.m in Sources */,
|
||||||
|
88A901B619F618B100F99777 /* JSQMediaItem.m in Sources */,
|
||||||
88A25FCC19D8E01A00924534 /* JSQMessagesCollectionViewCellIncoming.m in Sources */,
|
88A25FCC19D8E01A00924534 /* JSQMessagesCollectionViewCellIncoming.m in Sources */,
|
||||||
88A25FBE19D8E01A00924534 /* JSQMessagesBubbleImageFactory.m in Sources */,
|
88A25FBE19D8E01A00924534 /* JSQMessagesBubbleImageFactory.m in Sources */,
|
||||||
88A25FDF19D8E0C400924534 /* DemoMessagesViewController.m in Sources */,
|
88A25FDF19D8E0C400924534 /* DemoMessagesViewController.m in Sources */,
|
||||||
88A25FB719D8E01A00924534 /* UIColor+JSQMessages.m in Sources */,
|
88A25FB719D8E01A00924534 /* UIColor+JSQMessages.m in Sources */,
|
||||||
|
886C33FD19F4371E006B4997 /* JSQVideoMediaItem.m in Sources */,
|
||||||
88A25FBA19D8E01A00924534 /* JSQMessagesKeyboardController.m in Sources */,
|
88A25FBA19D8E01A00924534 /* JSQMessagesKeyboardController.m in Sources */,
|
||||||
|
FCFA5E161A29FE3B00C8E32E /* JSQInfoMessage.m in Sources */,
|
||||||
88A25FC019D8E01A00924534 /* JSQMessagesToolbarButtonFactory.m in Sources */,
|
88A25FC019D8E01A00924534 /* JSQMessagesToolbarButtonFactory.m in Sources */,
|
||||||
88A25FC919D8E01A00924534 /* JSQTextMessage.m in Sources */,
|
|
||||||
88A25FC419D8E01A00924534 /* JSQMediaMessage.m in Sources */,
|
|
||||||
88A25FC219D8E01A00924534 /* JSQMessagesCollectionViewFlowLayoutInvalidationContext.m in Sources */,
|
88A25FC219D8E01A00924534 /* JSQMessagesCollectionViewFlowLayoutInvalidationContext.m in Sources */,
|
||||||
8846442E19EB2BF4001EBA43 /* JSQVideoMediaitem.m in Sources */,
|
|
||||||
88A25FE119D8E0C400924534 /* TableViewController.m in Sources */,
|
88A25FE119D8E0C400924534 /* TableViewController.m in Sources */,
|
||||||
88A25FBD19D8E01A00924534 /* JSQMessagesAvatarImageFactory.m in Sources */,
|
88A25FBD19D8E01A00924534 /* JSQMessagesAvatarImageFactory.m in Sources */,
|
||||||
88A25FB519D8E01A00924534 /* JSQSystemSoundPlayer+JSQMessages.m in Sources */,
|
88A25FB519D8E01A00924534 /* JSQSystemSoundPlayer+JSQMessages.m in Sources */,
|
||||||
@ -944,13 +963,14 @@
|
|||||||
files = (
|
files = (
|
||||||
88A2600219D8E18400924534 /* JSQMessagesUIColorTests.m in Sources */,
|
88A2600219D8E18400924534 /* JSQMessagesUIColorTests.m in Sources */,
|
||||||
88A2601819D8E18400924534 /* JSQMessagesToolbarContentViewTests.m in Sources */,
|
88A2601819D8E18400924534 /* JSQMessagesToolbarContentViewTests.m in Sources */,
|
||||||
|
88C00A521A44D4E500B004B3 /* JSQVideoMediaItemTests.m in Sources */,
|
||||||
88A2601519D8E18400924534 /* JSQMessagesInputToolbarTests.m in Sources */,
|
88A2601519D8E18400924534 /* JSQMessagesInputToolbarTests.m in Sources */,
|
||||||
88A2601719D8E18400924534 /* JSQMessagesLoadEarlierHeaderViewTests.m in Sources */,
|
88A2601719D8E18400924534 /* JSQMessagesLoadEarlierHeaderViewTests.m in Sources */,
|
||||||
88A2601219D8E18400924534 /* JSQMessagesCollectionViewCellTests.m in Sources */,
|
88A2601219D8E18400924534 /* JSQMessagesCollectionViewCellTests.m in Sources */,
|
||||||
88A2601619D8E18400924534 /* JSQMessagesLabelTests.m in Sources */,
|
88A2601619D8E18400924534 /* JSQMessagesLabelTests.m in Sources */,
|
||||||
88A2600B19D8E18400924534 /* JSQMessagesCollectionViewFlowLayoutTests.m in Sources */,
|
88A2600B19D8E18400924534 /* JSQMessagesCollectionViewFlowLayoutTests.m in Sources */,
|
||||||
88A2601019D8E18400924534 /* JSQMessageTests.m in Sources */,
|
88A2601019D8E18400924534 /* JSQMessageTextTests.m in Sources */,
|
||||||
88A2600D19D8E18400924534 /* JSQMediaMessageTests.m in Sources */,
|
88A2600D19D8E18400924534 /* JSQMessageMediaTests.m in Sources */,
|
||||||
88A2600719D8E18400924534 /* JSQMessagesAvatarImageFactoryTests.m in Sources */,
|
88A2600719D8E18400924534 /* JSQMessagesAvatarImageFactoryTests.m in Sources */,
|
||||||
88A2600419D8E18400924534 /* JSQMessagesUIViewTests.m in Sources */,
|
88A2600419D8E18400924534 /* JSQMessagesUIViewTests.m in Sources */,
|
||||||
88A2600F19D8E18400924534 /* JSQMessagesBubbleImageTests.m in Sources */,
|
88A2600F19D8E18400924534 /* JSQMessagesBubbleImageTests.m in Sources */,
|
||||||
@ -959,10 +979,12 @@
|
|||||||
88A2601419D8E18400924534 /* JSQMessagesComposerTextViewTests.m in Sources */,
|
88A2601419D8E18400924534 /* JSQMessagesComposerTextViewTests.m in Sources */,
|
||||||
88A2601319D8E18400924534 /* JSQMessagesCollectionViewTests.m in Sources */,
|
88A2601319D8E18400924534 /* JSQMessagesCollectionViewTests.m in Sources */,
|
||||||
88A2600119D8E18400924534 /* JSQMessagesNSStringTests.m in Sources */,
|
88A2600119D8E18400924534 /* JSQMessagesNSStringTests.m in Sources */,
|
||||||
88A2601119D8E18400924534 /* JSQTextMessageTests.m in Sources */,
|
|
||||||
88A2600A19D8E18400924534 /* JSQMessagesToolbarButtonFactoryTests.m in Sources */,
|
88A2600A19D8E18400924534 /* JSQMessagesToolbarButtonFactoryTests.m in Sources */,
|
||||||
|
88C00A501A44D4D800B004B3 /* JSQPhotoMediaItemTests.m in Sources */,
|
||||||
|
88324C3419F6301C00BC732D /* JSQMessagesMediaViewBubbleImageMaskerTests.m in Sources */,
|
||||||
88A2601919D8E18400924534 /* JSQMessagesTypingIndicatorFooterViewTests.m in Sources */,
|
88A2601919D8E18400924534 /* JSQMessagesTypingIndicatorFooterViewTests.m in Sources */,
|
||||||
88A2600319D8E18400924534 /* JSQMessagesUIImageTests.m in Sources */,
|
88A2600319D8E18400924534 /* JSQMessagesUIImageTests.m in Sources */,
|
||||||
|
88C00A4E1A44D4C600B004B3 /* JSQLocationMediaItemTests.m in Sources */,
|
||||||
88A2600C19D8E18400924534 /* JSQMessagesCollectionViewLayoutAttributesTests.m in Sources */,
|
88A2600C19D8E18400924534 /* JSQMessagesCollectionViewLayoutAttributesTests.m in Sources */,
|
||||||
88A2600619D8E18400924534 /* JSQMessagesViewControllerTests.m in Sources */,
|
88A2600619D8E18400924534 /* JSQMessagesViewControllerTests.m in Sources */,
|
||||||
88A2600519D8E18400924534 /* JSQMessagesKeyboardControllerTests.m in Sources */,
|
88A2600519D8E18400924534 /* JSQMessagesKeyboardControllerTests.m in Sources */,
|
||||||
@ -981,6 +1003,28 @@
|
|||||||
/* End PBXTargetDependency section */
|
/* End PBXTargetDependency section */
|
||||||
|
|
||||||
/* Begin PBXVariantGroup section */
|
/* Begin PBXVariantGroup section */
|
||||||
|
8841B88719F4988800EA16B6 /* JSQMessages.strings */ = {
|
||||||
|
isa = PBXVariantGroup;
|
||||||
|
children = (
|
||||||
|
8841B88619F4988800EA16B6 /* Base */,
|
||||||
|
8841B88819F4988900EA16B6 /* en */,
|
||||||
|
8841B88919F4988A00EA16B6 /* es */,
|
||||||
|
8841B88A19F4988B00EA16B6 /* de */,
|
||||||
|
8841B88B19F4988C00EA16B6 /* zh-Hans */,
|
||||||
|
8841B88C19F4988F00EA16B6 /* zh-Hant */,
|
||||||
|
8841B88D19F4989000EA16B6 /* ro */,
|
||||||
|
8841B88E19F4989100EA16B6 /* pl */,
|
||||||
|
8841B88F19F4989200EA16B6 /* ru */,
|
||||||
|
8841B89019F4989200EA16B6 /* pt */,
|
||||||
|
8841B89119F4989300EA16B6 /* fr */,
|
||||||
|
8841B89219F4989400EA16B6 /* it */,
|
||||||
|
8841B89319F4989500EA16B6 /* he */,
|
||||||
|
8841B89419F4989500EA16B6 /* nl */,
|
||||||
|
8841B89519F4989600EA16B6 /* tr */,
|
||||||
|
);
|
||||||
|
name = JSQMessages.strings;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
88A25F3019D8DF2500924534 /* Main.storyboard */ = {
|
88A25F3019D8DF2500924534 /* Main.storyboard */ = {
|
||||||
isa = PBXVariantGroup;
|
isa = PBXVariantGroup;
|
||||||
children = (
|
children = (
|
||||||
@ -1077,11 +1121,14 @@
|
|||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
|
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
|
||||||
CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
|
CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
|
||||||
|
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||||
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
INFOPLIST_FILE = "$(SRCROOT)/JSQMessagesDemo/Info.plist";
|
INFOPLIST_FILE = "$(SRCROOT)/JSQMessagesDemo/Info.plist";
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||||
OTHER_LDFLAGS = "$(inherited)";
|
OTHER_LDFLAGS = "$(inherited)";
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
PROVISIONING_PROFILE = "";
|
||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
};
|
};
|
||||||
@ -1092,11 +1139,14 @@
|
|||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
|
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
|
||||||
CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
|
CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
|
||||||
|
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||||
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
INFOPLIST_FILE = "$(SRCROOT)/JSQMessagesDemo/Info.plist";
|
INFOPLIST_FILE = "$(SRCROOT)/JSQMessagesDemo/Info.plist";
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||||
OTHER_LDFLAGS = "$(inherited)";
|
OTHER_LDFLAGS = "$(inherited)";
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
PROVISIONING_PROFILE = "";
|
||||||
};
|
};
|
||||||
name = Release;
|
name = Release;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -16,8 +16,8 @@
|
|||||||
// Released under an MIT license: http://opensource.org/licenses/MIT
|
// Released under an MIT license: http://opensource.org/licenses/MIT
|
||||||
//
|
//
|
||||||
|
|
||||||
@import Foundation;
|
#import <Foundation/Foundation.h>
|
||||||
@import UIKit;
|
#import <UIKit/UIKit.h>
|
||||||
|
|
||||||
@interface AppDelegate : UIResponder <UIApplicationDelegate>
|
@interface AppDelegate : UIResponder <UIApplicationDelegate>
|
||||||
|
|
||||||
|
|||||||
@ -45,6 +45,4 @@
|
|||||||
|
|
||||||
- (void)closePressed:(UIBarButtonItem *)sender;
|
- (void)closePressed:(UIBarButtonItem *)sender;
|
||||||
|
|
||||||
// TODO: example of async avatar loading
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@ -18,6 +18,12 @@
|
|||||||
|
|
||||||
#import "DemoMessagesViewController.h"
|
#import "DemoMessagesViewController.h"
|
||||||
|
|
||||||
|
#import "JSQCallCollectionViewCell.h"
|
||||||
|
#import "JSQCall.h"
|
||||||
|
|
||||||
|
#import "JSQDisplayedMessageCollectionViewCell.h"
|
||||||
|
#import "JSQErrorMessage.h"
|
||||||
|
#import "JSQInfoMessage.h"
|
||||||
|
|
||||||
@implementation DemoMessagesViewController
|
@implementation DemoMessagesViewController
|
||||||
|
|
||||||
@ -43,7 +49,7 @@
|
|||||||
*/
|
*/
|
||||||
self.senderId = kJSQDemoAvatarIdSquires;
|
self.senderId = kJSQDemoAvatarIdSquires;
|
||||||
self.senderDisplayName = kJSQDemoAvatarDisplayNameSquires;
|
self.senderDisplayName = kJSQDemoAvatarDisplayNameSquires;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load up our fake data for the demo
|
* Load up our fake data for the demo
|
||||||
@ -62,10 +68,19 @@
|
|||||||
self.collectionView.collectionViewLayout.outgoingAvatarViewSize = CGSizeZero;
|
self.collectionView.collectionViewLayout.outgoingAvatarViewSize = CGSizeZero;
|
||||||
}
|
}
|
||||||
|
|
||||||
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"typing"]
|
self.showLoadEarlierMessagesHeader = YES;
|
||||||
|
|
||||||
|
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage jsq_defaultTypingIndicatorImage]
|
||||||
style:UIBarButtonItemStyleBordered
|
style:UIBarButtonItemStyleBordered
|
||||||
target:self
|
target:self
|
||||||
action:@selector(receiveMessagePressed:)];
|
action:@selector(receiveMessagePressed:)];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Customize your toolbar buttons
|
||||||
|
*
|
||||||
|
* self.inputToolbar.contentView.leftBarButtonItem = custom button or nil to remove
|
||||||
|
* self.inputToolbar.contentView.rightBarButtonItem = custom button or nil to remove
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)viewWillAppear:(BOOL)animated
|
- (void)viewWillAppear:(BOOL)animated
|
||||||
@ -93,6 +108,16 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#pragma mark - Testing
|
||||||
|
|
||||||
|
- (void)pushMainViewController
|
||||||
|
{
|
||||||
|
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
|
||||||
|
UINavigationController *nc = [sb instantiateInitialViewController];
|
||||||
|
[self.navigationController pushViewController:nc.topViewController animated:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#pragma mark - Actions
|
#pragma mark - Actions
|
||||||
|
|
||||||
- (void)receiveMessagePressed:(UIBarButtonItem *)sender
|
- (void)receiveMessagePressed:(UIBarButtonItem *)sender
|
||||||
@ -121,9 +146,9 @@
|
|||||||
JSQMessage *copyMessage = [[self.demoData.messages lastObject] copy];
|
JSQMessage *copyMessage = [[self.demoData.messages lastObject] copy];
|
||||||
|
|
||||||
if (!copyMessage) {
|
if (!copyMessage) {
|
||||||
copyMessage = [JSQTextMessage messageWithSenderId:kJSQDemoAvatarIdJobs
|
copyMessage = [JSQMessage messageWithSenderId:kJSQDemoAvatarIdJobs
|
||||||
displayName:kJSQDemoAvatarDisplayNameJobs
|
displayName:kJSQDemoAvatarDisplayNameJobs
|
||||||
text:@"First received!"];
|
text:@"First received!"];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -139,7 +164,7 @@
|
|||||||
id<JSQMessageMediaData> newMediaData = nil;
|
id<JSQMessageMediaData> newMediaData = nil;
|
||||||
id newMediaAttachmentCopy = nil;
|
id newMediaAttachmentCopy = nil;
|
||||||
|
|
||||||
if ([copyMessage isKindOfClass:[JSQMediaMessage class]]) {
|
if ([copyMessage isKindOfClass:[JSQMessage class]]) {
|
||||||
/**
|
/**
|
||||||
* Last message was a media message
|
* Last message was a media message
|
||||||
*/
|
*/
|
||||||
@ -147,6 +172,7 @@
|
|||||||
|
|
||||||
if ([copyMediaData isKindOfClass:[JSQPhotoMediaItem class]]) {
|
if ([copyMediaData isKindOfClass:[JSQPhotoMediaItem class]]) {
|
||||||
JSQPhotoMediaItem *photoItemCopy = [((JSQPhotoMediaItem *)copyMediaData) copy];
|
JSQPhotoMediaItem *photoItemCopy = [((JSQPhotoMediaItem *)copyMediaData) copy];
|
||||||
|
photoItemCopy.appliesMediaViewMaskAsOutgoing = NO;
|
||||||
newMediaAttachmentCopy = [UIImage imageWithCGImage:photoItemCopy.image.CGImage];
|
newMediaAttachmentCopy = [UIImage imageWithCGImage:photoItemCopy.image.CGImage];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -159,6 +185,7 @@
|
|||||||
}
|
}
|
||||||
else if ([copyMediaData isKindOfClass:[JSQLocationMediaItem class]]) {
|
else if ([copyMediaData isKindOfClass:[JSQLocationMediaItem class]]) {
|
||||||
JSQLocationMediaItem *locationItemCopy = [((JSQLocationMediaItem *)copyMediaData) copy];
|
JSQLocationMediaItem *locationItemCopy = [((JSQLocationMediaItem *)copyMediaData) copy];
|
||||||
|
locationItemCopy.appliesMediaViewMaskAsOutgoing = NO;
|
||||||
newMediaAttachmentCopy = [locationItemCopy.location copy];
|
newMediaAttachmentCopy = [locationItemCopy.location copy];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -168,8 +195,9 @@
|
|||||||
|
|
||||||
newMediaData = locationItemCopy;
|
newMediaData = locationItemCopy;
|
||||||
}
|
}
|
||||||
else if ([copyMediaData isKindOfClass:[JSQVideoMediaitem class]]) {
|
else if ([copyMediaData isKindOfClass:[JSQVideoMediaItem class]]) {
|
||||||
JSQVideoMediaitem *videoItemCopy = [((JSQVideoMediaitem *)copyMediaData) copy];
|
JSQVideoMediaItem *videoItemCopy = [((JSQVideoMediaItem *)copyMediaData) copy];
|
||||||
|
videoItemCopy.appliesMediaViewMaskAsOutgoing = NO;
|
||||||
newMediaAttachmentCopy = [videoItemCopy.fileURL copy];
|
newMediaAttachmentCopy = [videoItemCopy.fileURL copy];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -184,17 +212,17 @@
|
|||||||
NSLog(@"%s error: unrecognized media item", __PRETTY_FUNCTION__);
|
NSLog(@"%s error: unrecognized media item", __PRETTY_FUNCTION__);
|
||||||
}
|
}
|
||||||
|
|
||||||
newMessage = [JSQMediaMessage messageWithSenderId:randomUserId
|
newMessage = [JSQMessage messageWithSenderId:randomUserId
|
||||||
displayName:self.demoData.users[randomUserId]
|
displayName:self.demoData.users[randomUserId]
|
||||||
media:newMediaData];
|
media:newMediaData];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/**
|
/**
|
||||||
* Last message was a text message
|
* Last message was a text message
|
||||||
*/
|
*/
|
||||||
newMessage = [JSQTextMessage messageWithSenderId:randomUserId
|
newMessage = [JSQMessage messageWithSenderId:randomUserId
|
||||||
displayName:self.demoData.users[randomUserId]
|
displayName:self.demoData.users[randomUserId]
|
||||||
text:copyMessage.text];
|
text:copyMessage.text];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -206,10 +234,10 @@
|
|||||||
*/
|
*/
|
||||||
[JSQSystemSoundPlayer jsq_playMessageReceivedSound];
|
[JSQSystemSoundPlayer jsq_playMessageReceivedSound];
|
||||||
[self.demoData.messages addObject:newMessage];
|
[self.demoData.messages addObject:newMessage];
|
||||||
[self finishReceivingMessage];
|
[self finishReceivingMessageAnimated:YES];
|
||||||
|
|
||||||
|
|
||||||
if ([newMessage isKindOfClass:[JSQMediaMessage class]]) {
|
if (newMessage.isMediaMessage) {
|
||||||
/**
|
/**
|
||||||
* Simulate "downloading" media
|
* Simulate "downloading" media
|
||||||
*/
|
*/
|
||||||
@ -231,9 +259,9 @@
|
|||||||
[self.collectionView reloadData];
|
[self.collectionView reloadData];
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
else if ([newMediaData isKindOfClass:[JSQVideoMediaitem class]]) {
|
else if ([newMediaData isKindOfClass:[JSQVideoMediaItem class]]) {
|
||||||
((JSQVideoMediaitem *)newMediaData).fileURL = newMediaAttachmentCopy;
|
((JSQVideoMediaItem *)newMediaData).fileURL = newMediaAttachmentCopy;
|
||||||
((JSQVideoMediaitem *)newMediaData).isReadyToPlay = YES;
|
((JSQVideoMediaItem *)newMediaData).isReadyToPlay = YES;
|
||||||
[self.collectionView reloadData];
|
[self.collectionView reloadData];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -271,13 +299,14 @@
|
|||||||
*/
|
*/
|
||||||
[JSQSystemSoundPlayer jsq_playMessageSentSound];
|
[JSQSystemSoundPlayer jsq_playMessageSentSound];
|
||||||
|
|
||||||
JSQTextMessage *message = [[JSQTextMessage alloc] initWithSenderId:senderId
|
JSQMessage *message = [[JSQMessage alloc] initWithSenderId:senderId
|
||||||
senderDisplayName:senderDisplayName
|
senderDisplayName:senderDisplayName
|
||||||
date:date
|
date:date
|
||||||
text:text];
|
text:text];
|
||||||
|
|
||||||
[self.demoData.messages addObject:message];
|
[self.demoData.messages addObject:message];
|
||||||
[self finishSendingMessage];
|
|
||||||
|
[self finishSendingMessageAnimated:YES];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)didPressAccessoryButton:(UIButton *)sender
|
- (void)didPressAccessoryButton:(UIButton *)sender
|
||||||
@ -318,7 +347,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
[JSQSystemSoundPlayer jsq_playMessageSentSound];
|
[JSQSystemSoundPlayer jsq_playMessageSentSound];
|
||||||
[self finishSendingMessage];
|
|
||||||
|
[self finishSendingMessageAnimated:YES];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -344,7 +374,7 @@
|
|||||||
if ([message.senderId isEqualToString:self.senderId]) {
|
if ([message.senderId isEqualToString:self.senderId]) {
|
||||||
return self.demoData.outgoingBubbleImageData;
|
return self.demoData.outgoingBubbleImageData;
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.demoData.incomingBubbleImageData;
|
return self.demoData.incomingBubbleImageData;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -372,6 +402,8 @@
|
|||||||
*/
|
*/
|
||||||
JSQMessage *message = [self.demoData.messages objectAtIndex:indexPath.item];
|
JSQMessage *message = [self.demoData.messages objectAtIndex:indexPath.item];
|
||||||
|
|
||||||
|
if (![message isKindOfClass:[JSQCall class]] || ![message isKindOfClass:[JSQErrorMessage class]] || ![message isKindOfClass:[JSQInfoMessage class]]) return nil;
|
||||||
|
|
||||||
if ([message.senderId isEqualToString:self.senderId]) {
|
if ([message.senderId isEqualToString:self.senderId]) {
|
||||||
if (![NSUserDefaults outgoingAvatarSetting]) {
|
if (![NSUserDefaults outgoingAvatarSetting]) {
|
||||||
return nil;
|
return nil;
|
||||||
@ -382,8 +414,7 @@
|
|||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return [self.demoData.avatars objectForKey:message.senderId];
|
return [self.demoData.avatars objectForKey:message.senderId];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -444,38 +475,34 @@
|
|||||||
/**
|
/**
|
||||||
* Override point for customizing cells
|
* Override point for customizing cells
|
||||||
*/
|
*/
|
||||||
JSQMessagesCollectionViewCell *cell = (JSQMessagesCollectionViewCell *)[super collectionView:collectionView cellForItemAtIndexPath:indexPath];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Configure almost *anything* on the cell
|
|
||||||
*
|
|
||||||
* Text colors, label text, label colors, etc.
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* DO NOT set `cell.textView.font` !
|
|
||||||
* Instead, you need to set `self.collectionView.collectionViewLayout.messageBubbleFont` to the font you want in `viewDidLoad`
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* DO NOT manipulate cell layout information!
|
|
||||||
* Instead, override the properties you want on `self.collectionView.collectionViewLayout` from `viewDidLoad`
|
|
||||||
*/
|
|
||||||
|
|
||||||
JSQMessage *msg = [self.demoData.messages objectAtIndex:indexPath.item];
|
JSQMessage *msg = [self.demoData.messages objectAtIndex:indexPath.item];
|
||||||
|
|
||||||
if ([msg isKindOfClass:[JSQTextMessage class]]) {
|
if ([msg isKindOfClass:[JSQMessage class]])
|
||||||
|
{
|
||||||
if ([msg.senderId isEqualToString:self.senderId]) {
|
JSQMessagesCollectionViewCell *cell = (JSQMessagesCollectionViewCell *)[super collectionView:collectionView cellForItemAtIndexPath:indexPath];
|
||||||
cell.textView.textColor = [UIColor blackColor];
|
if (!msg.isMediaMessage) {
|
||||||
}
|
if ([msg.senderId isEqualToString:self.senderId]) {
|
||||||
else {
|
cell.textView.textColor = [UIColor blackColor];
|
||||||
cell.textView.textColor = [UIColor whiteColor];
|
}
|
||||||
|
else {
|
||||||
|
cell.textView.textColor = [UIColor whiteColor];
|
||||||
|
}
|
||||||
|
|
||||||
|
cell.textView.linkTextAttributes = @{ NSForegroundColorAttributeName : cell.textView.textColor,
|
||||||
|
NSUnderlineStyleAttributeName : @(NSUnderlineStyleSingle | NSUnderlinePatternSolid) };
|
||||||
}
|
}
|
||||||
|
|
||||||
cell.textView.linkTextAttributes = @{ NSForegroundColorAttributeName : cell.textView.textColor,
|
return cell;
|
||||||
NSUnderlineStyleAttributeName : @(NSUnderlineStyleSingle | NSUnderlinePatternSolid) };
|
|
||||||
|
} else if ([msg isKindOfClass:[JSQCall class]]) {
|
||||||
|
JSQCallCollectionViewCell *cell = (JSQCallCollectionViewCell *)[super collectionView:collectionView cellForItemAtIndexPath:indexPath];
|
||||||
|
return cell;
|
||||||
|
} else {
|
||||||
|
JSQDisplayedMessageCollectionViewCell * cell = (JSQDisplayedMessageCollectionViewCell *)[super collectionView:collectionView cellForItemAtIndexPath:indexPath];
|
||||||
|
return cell;
|
||||||
}
|
}
|
||||||
|
|
||||||
return cell;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -497,9 +524,9 @@
|
|||||||
*
|
*
|
||||||
* Show a timestamp for every 3rd message
|
* Show a timestamp for every 3rd message
|
||||||
*/
|
*/
|
||||||
if (indexPath.item % 3 == 0) {
|
// if (indexPath.item % 3 == 0) {
|
||||||
return kJSQMessagesCollectionViewCellLabelHeightDefault;
|
// return kJSQMessagesCollectionViewCellLabelHeightDefault;
|
||||||
}
|
// }
|
||||||
|
|
||||||
return 0.0f;
|
return 0.0f;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -16,9 +16,9 @@
|
|||||||
// Released under an MIT license: http://opensource.org/licenses/MIT
|
// Released under an MIT license: http://opensource.org/licenses/MIT
|
||||||
//
|
//
|
||||||
|
|
||||||
@import Foundation;
|
#import <Foundation/Foundation.h>
|
||||||
@import UIKit;
|
#import <UIKit/UIKit.h>
|
||||||
@import CoreLocation;
|
#import <CoreLocation/CoreLocation.h>
|
||||||
|
|
||||||
#import "JSQMessages.h"
|
#import "JSQMessages.h"
|
||||||
|
|
||||||
|
|||||||
@ -20,6 +20,9 @@
|
|||||||
|
|
||||||
#import "NSUserDefaults+DemoSettings.h"
|
#import "NSUserDefaults+DemoSettings.h"
|
||||||
|
|
||||||
|
#import "JSQCall.h"
|
||||||
|
#import "JSQInfoMessage.h"
|
||||||
|
#import "JSQErrorMessage.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is for demo/testing purposes only.
|
* This is for demo/testing purposes only.
|
||||||
@ -33,7 +36,7 @@
|
|||||||
{
|
{
|
||||||
self = [super init];
|
self = [super init];
|
||||||
if (self) {
|
if (self) {
|
||||||
|
|
||||||
if ([NSUserDefaults emptyMessagesSetting]) {
|
if ([NSUserDefaults emptyMessagesSetting]) {
|
||||||
self.messages = [NSMutableArray new];
|
self.messages = [NSMutableArray new];
|
||||||
}
|
}
|
||||||
@ -82,7 +85,7 @@
|
|||||||
* Be sure to create your bubble images one time and reuse them for good performance.
|
* Be sure to create your bubble images one time and reuse them for good performance.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
JSQMessagesBubbleImageFactory *bubbleFactory = [[JSQMessagesBubbleImageFactory alloc] init];
|
JSQMessagesBubbleImageFactory *bubbleFactory = [[JSQMessagesBubbleImageFactory alloc] init];
|
||||||
|
|
||||||
self.outgoingBubbleImageData = [bubbleFactory outgoingMessagesBubbleImageWithColor:[UIColor jsq_messageBubbleLightGrayColor]];
|
self.outgoingBubbleImageData = [bubbleFactory outgoingMessagesBubbleImageWithColor:[UIColor jsq_messageBubbleLightGrayColor]];
|
||||||
self.incomingBubbleImageData = [bubbleFactory incomingMessagesBubbleImageWithColor:[UIColor jsq_messageBubbleGreenColor]];
|
self.incomingBubbleImageData = [bubbleFactory incomingMessagesBubbleImageWithColor:[UIColor jsq_messageBubbleGreenColor]];
|
||||||
@ -99,35 +102,75 @@
|
|||||||
* You should have a mutable array or orderedSet, or something.
|
* You should have a mutable array or orderedSet, or something.
|
||||||
*/
|
*/
|
||||||
self.messages = [[NSMutableArray alloc] initWithObjects:
|
self.messages = [[NSMutableArray alloc] initWithObjects:
|
||||||
[[JSQTextMessage alloc] initWithSenderId:kJSQDemoAvatarIdSquires
|
[[JSQCall alloc] initWithCallerId:kJSQDemoAvatarIdWoz
|
||||||
|
callerDisplayName:kJSQDemoAvatarDisplayNameWoz
|
||||||
|
date:[NSDate date]
|
||||||
|
status:kCallOutgoing],
|
||||||
|
[[JSQMessage alloc] initWithSenderId:kJSQDemoAvatarIdSquires
|
||||||
senderDisplayName:kJSQDemoAvatarDisplayNameSquires
|
senderDisplayName:kJSQDemoAvatarDisplayNameSquires
|
||||||
date:[NSDate distantPast]
|
date:[NSDate distantPast]
|
||||||
text:@"Welcome to JSQMessages: A messaging UI framework for iOS."],
|
text:@"Welcome to JSQMessages: A messaging UI framework for iOS."],
|
||||||
|
[[JSQMessage alloc] initWithSenderId:kJSQDemoAvatarIdSquires
|
||||||
|
senderDisplayName:kJSQDemoAvatarDisplayNameSquires
|
||||||
|
date:[NSDate distantPast]
|
||||||
|
text:@"Welcome to JSQMessages: A messaging UI framework for iOS."],
|
||||||
|
[[JSQMessage alloc] initWithSenderId:kJSQDemoAvatarIdWoz
|
||||||
|
senderDisplayName:kJSQDemoAvatarDisplayNameWoz
|
||||||
|
date:[NSDate distantPast]
|
||||||
|
text:@"It is simple, elegant, and easy to use. There are super sweet default settings, but you can customize like crazy."],
|
||||||
|
|
||||||
[[JSQTextMessage alloc] initWithSenderId:kJSQDemoAvatarIdWoz
|
[[JSQMessage alloc] initWithSenderId:kJSQDemoAvatarIdSquires
|
||||||
senderDisplayName:kJSQDemoAvatarDisplayNameWoz
|
senderDisplayName:kJSQDemoAvatarDisplayNameSquires
|
||||||
date:[NSDate distantPast]
|
date:[NSDate distantPast]
|
||||||
text:@"It is simple, elegant, and easy to use. There are super sweet default settings, but you can customize like crazy."],
|
text:@"It even has data detectors. You can call me tonight. My cell number is 123-456-7890. My website is www.hexedbits.com."],
|
||||||
|
|
||||||
[[JSQTextMessage alloc] initWithSenderId:kJSQDemoAvatarIdSquires
|
[[JSQMessage alloc] initWithSenderId:kJSQDemoAvatarIdJobs
|
||||||
senderDisplayName:kJSQDemoAvatarDisplayNameSquires
|
senderDisplayName:kJSQDemoAvatarDisplayNameJobs
|
||||||
date:[NSDate distantPast]
|
date:[NSDate date]
|
||||||
text:@"It even has data detectors. You can call me tonight. My cell number is 123-456-7890. My website is www.hexedbits.com."],
|
text:@"JSQMessagesViewController is nearly an exact replica of the iOS Messages App. And perhaps, better."],
|
||||||
|
|
||||||
[[JSQTextMessage alloc] initWithSenderId:kJSQDemoAvatarIdJobs
|
[[JSQMessage alloc] initWithSenderId:kJSQDemoAvatarIdCook
|
||||||
senderDisplayName:kJSQDemoAvatarDisplayNameJobs
|
senderDisplayName:kJSQDemoAvatarDisplayNameCook
|
||||||
date:[NSDate date]
|
date:[NSDate date]
|
||||||
text:@"JSQMessagesViewController is nearly an exact replica of the iOS Messages App. And perhaps, better."],
|
text:@"It is unit-tested, free, open-source, and documented."],
|
||||||
|
|
||||||
[[JSQTextMessage alloc] initWithSenderId:kJSQDemoAvatarIdCook
|
[[JSQMessage alloc] initWithSenderId:kJSQDemoAvatarIdSquires
|
||||||
senderDisplayName:kJSQDemoAvatarDisplayNameCook
|
|
||||||
date:[NSDate date]
|
|
||||||
text:@"It is unit-tested, free, open-source, and documented."],
|
|
||||||
|
|
||||||
[[JSQTextMessage alloc] initWithSenderId:kJSQDemoAvatarIdSquires
|
|
||||||
senderDisplayName:kJSQDemoAvatarDisplayNameSquires
|
senderDisplayName:kJSQDemoAvatarDisplayNameSquires
|
||||||
date:[NSDate date]
|
date:[NSDate date]
|
||||||
text:@"Now with media messages!"],
|
text:@"Now with media messages!"],
|
||||||
|
[[JSQCall alloc] initWithCallerId:kJSQDemoAvatarIdWoz
|
||||||
|
callerDisplayName:kJSQDemoAvatarDisplayNameWoz
|
||||||
|
date:[NSDate date]
|
||||||
|
status:kCallIncoming],
|
||||||
|
[[JSQCall alloc] initWithCallerId:kJSQDemoAvatarIdWoz
|
||||||
|
callerDisplayName:kJSQDemoAvatarDisplayNameWoz
|
||||||
|
date:[NSDate date]
|
||||||
|
status:kCallMissed],
|
||||||
|
[[JSQInfoMessage alloc] initWithInfoType:JSQInfoMessageTypeSessionDidEnd
|
||||||
|
senderId:kJSQDemoAvatarIdCook
|
||||||
|
senderDisplayName:kJSQDemoAvatarDisplayNameCook
|
||||||
|
date:[NSDate date]],
|
||||||
|
[[JSQErrorMessage alloc] initWithErrorType:JSQErrorMessageMissingKeyId
|
||||||
|
senderId:kJSQDemoAvatarIdCook
|
||||||
|
senderDisplayName:kJSQDemoAvatarDisplayNameCook
|
||||||
|
date:[NSDate date]],
|
||||||
|
[[JSQErrorMessage alloc] initWithErrorType:JSQErrorMessageInvalidMessage
|
||||||
|
senderId:kJSQDemoAvatarIdCook
|
||||||
|
senderDisplayName:kJSQDemoAvatarDisplayNameCook
|
||||||
|
date:[NSDate date]],
|
||||||
|
[[JSQErrorMessage alloc] initWithErrorType:JSQErrorMessageInvalidVersion
|
||||||
|
senderId:kJSQDemoAvatarIdCook
|
||||||
|
senderDisplayName:kJSQDemoAvatarDisplayNameCook
|
||||||
|
date:[NSDate date]],
|
||||||
|
[[JSQErrorMessage alloc] initWithErrorType:JSQErrorMessageInvalidKeyException
|
||||||
|
senderId:kJSQDemoAvatarIdCook
|
||||||
|
senderDisplayName:kJSQDemoAvatarDisplayNameCook
|
||||||
|
date:[NSDate date]],
|
||||||
|
[[JSQErrorMessage alloc] initWithErrorType:JSQErrorMessageWrongTrustedIdentityKey
|
||||||
|
senderId:kJSQDemoAvatarIdCook
|
||||||
|
senderDisplayName:kJSQDemoAvatarDisplayNameCook
|
||||||
|
date:[NSDate date]],
|
||||||
|
|
||||||
nil];
|
nil];
|
||||||
|
|
||||||
[self addPhotoMediaMessage];
|
[self addPhotoMediaMessage];
|
||||||
@ -148,9 +191,9 @@
|
|||||||
* You should see "END" twice
|
* You should see "END" twice
|
||||||
*/
|
*/
|
||||||
if ([NSUserDefaults longMessageSetting]) {
|
if ([NSUserDefaults longMessageSetting]) {
|
||||||
JSQTextMessage *reallyLongMessage = [JSQTextMessage messageWithSenderId:kJSQDemoAvatarIdSquires
|
JSQMessage *reallyLongMessage = [JSQMessage messageWithSenderId:kJSQDemoAvatarIdSquires
|
||||||
displayName:kJSQDemoAvatarDisplayNameSquires
|
displayName:kJSQDemoAvatarDisplayNameSquires
|
||||||
text:@"Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur? END Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur? END"];
|
text:@"Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur? END Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur? END"];
|
||||||
|
|
||||||
[self.messages addObject:reallyLongMessage];
|
[self.messages addObject:reallyLongMessage];
|
||||||
}
|
}
|
||||||
@ -159,9 +202,9 @@
|
|||||||
- (void)addPhotoMediaMessage
|
- (void)addPhotoMediaMessage
|
||||||
{
|
{
|
||||||
JSQPhotoMediaItem *photoItem = [[JSQPhotoMediaItem alloc] initWithImage:[UIImage imageNamed:@"goldengate"]];
|
JSQPhotoMediaItem *photoItem = [[JSQPhotoMediaItem alloc] initWithImage:[UIImage imageNamed:@"goldengate"]];
|
||||||
JSQMediaMessage *photoMessage = [JSQMediaMessage messageWithSenderId:kJSQDemoAvatarIdSquires
|
JSQMessage *photoMessage = [JSQMessage messageWithSenderId:kJSQDemoAvatarIdSquires
|
||||||
displayName:kJSQDemoAvatarDisplayNameSquires
|
displayName:kJSQDemoAvatarDisplayNameSquires
|
||||||
media:photoItem];
|
media:photoItem];
|
||||||
[self.messages addObject:photoMessage];
|
[self.messages addObject:photoMessage];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -172,9 +215,9 @@
|
|||||||
JSQLocationMediaItem *locationItem = [[JSQLocationMediaItem alloc] init];
|
JSQLocationMediaItem *locationItem = [[JSQLocationMediaItem alloc] init];
|
||||||
[locationItem setLocation:ferryBuildingInSF withCompletionHandler:completion];
|
[locationItem setLocation:ferryBuildingInSF withCompletionHandler:completion];
|
||||||
|
|
||||||
JSQMediaMessage *locationMessage = [JSQMediaMessage messageWithSenderId:kJSQDemoAvatarIdSquires
|
JSQMessage *locationMessage = [JSQMessage messageWithSenderId:kJSQDemoAvatarIdSquires
|
||||||
displayName:kJSQDemoAvatarDisplayNameSquires
|
displayName:kJSQDemoAvatarDisplayNameSquires
|
||||||
media:locationItem];
|
media:locationItem];
|
||||||
[self.messages addObject:locationMessage];
|
[self.messages addObject:locationMessage];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -183,10 +226,10 @@
|
|||||||
// don't have a real video, just pretending
|
// don't have a real video, just pretending
|
||||||
NSURL *videoURL = [NSURL URLWithString:@"file://"];
|
NSURL *videoURL = [NSURL URLWithString:@"file://"];
|
||||||
|
|
||||||
JSQVideoMediaitem *videoItem = [[JSQVideoMediaitem alloc] initWithFileURL:videoURL isReadyToPlay:YES];
|
JSQVideoMediaItem *videoItem = [[JSQVideoMediaItem alloc] initWithFileURL:videoURL isReadyToPlay:YES];
|
||||||
JSQMediaMessage *videoMessage = [JSQMediaMessage messageWithSenderId:kJSQDemoAvatarIdSquires
|
JSQMessage *videoMessage = [JSQMessage messageWithSenderId:kJSQDemoAvatarIdSquires
|
||||||
displayName:kJSQDemoAvatarDisplayNameSquires
|
displayName:kJSQDemoAvatarDisplayNameSquires
|
||||||
media:videoItem];
|
media:videoItem];
|
||||||
[self.messages addObject:videoMessage];
|
[self.messages addObject:videoMessage];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -16,8 +16,8 @@
|
|||||||
// Released under an MIT license: http://opensource.org/licenses/MIT
|
// Released under an MIT license: http://opensource.org/licenses/MIT
|
||||||
//
|
//
|
||||||
|
|
||||||
@import Foundation;
|
#import <Foundation/Foundation.h>
|
||||||
@import UIKit;
|
#import <UIKit/UIKit.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is for demo/testing purposes only.
|
* This is for demo/testing purposes only.
|
||||||
|
|||||||
@ -15,11 +15,11 @@
|
|||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>APPL</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>6.0.0</string>
|
<string>6.1.1</string>
|
||||||
<key>CFBundleSignature</key>
|
<key>CFBundleSignature</key>
|
||||||
<string>????</string>
|
<string>????</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>6.0.0</string>
|
<string>6.1.1</string>
|
||||||
<key>LSRequiresIPhoneOS</key>
|
<key>LSRequiresIPhoneOS</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>UILaunchStoryboardName</key>
|
<key>UILaunchStoryboardName</key>
|
||||||
|
|||||||
@ -16,7 +16,7 @@
|
|||||||
// Released under an MIT license: http://opensource.org/licenses/MIT
|
// Released under an MIT license: http://opensource.org/licenses/MIT
|
||||||
//
|
//
|
||||||
|
|
||||||
@import Foundation;
|
#import <Foundation/Foundation.h>
|
||||||
|
|
||||||
@interface NSUserDefaults (DemoSettings)
|
@interface NSUserDefaults (DemoSettings)
|
||||||
|
|
||||||
|
|||||||
@ -16,8 +16,8 @@
|
|||||||
// Released under an MIT license: http://opensource.org/licenses/MIT
|
// Released under an MIT license: http://opensource.org/licenses/MIT
|
||||||
//
|
//
|
||||||
|
|
||||||
@import Foundation;
|
#import <Foundation/Foundation.h>
|
||||||
@import UIKit;
|
#import <UIKit/UIKit.h>
|
||||||
|
|
||||||
#import "DemoMessagesViewController.h"
|
#import "DemoMessagesViewController.h"
|
||||||
|
|
||||||
|
|||||||
BIN
JSQMessagesDemo/call_missed@2x.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
@ -8,7 +8,7 @@
|
|||||||
// http://opensource.org/licenses/MIT
|
// http://opensource.org/licenses/MIT
|
||||||
//
|
//
|
||||||
|
|
||||||
@import XCTest;
|
#import <XCTest/XCTest.h>
|
||||||
|
|
||||||
#import "NSString+JSQMessages.h"
|
#import "NSString+JSQMessages.h"
|
||||||
|
|
||||||
@ -19,24 +19,17 @@
|
|||||||
|
|
||||||
@implementation JSQMessagesNSStringTests
|
@implementation JSQMessagesNSStringTests
|
||||||
|
|
||||||
- (void)setUp
|
|
||||||
{
|
|
||||||
[super setUp];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)tearDown
|
|
||||||
{
|
|
||||||
[super tearDown];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)testTrimingStringWhitespace
|
- (void)testTrimingStringWhitespace
|
||||||
{
|
{
|
||||||
|
// GIVEN: a string of text
|
||||||
NSString *loremIpsum = @"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.";
|
NSString *loremIpsum = @"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.";
|
||||||
|
|
||||||
|
// WHEN: the text is wrapped in white space
|
||||||
NSString *string1 = [NSString stringWithFormat:@" %@ ", loremIpsum];
|
NSString *string1 = [NSString stringWithFormat:@" %@ ", loremIpsum];
|
||||||
NSString *string2 = [NSString stringWithFormat:@" %@", loremIpsum];
|
NSString *string2 = [NSString stringWithFormat:@" %@", loremIpsum];
|
||||||
NSString *string3 = [NSString stringWithFormat:@"%@ ", loremIpsum];
|
NSString *string3 = [NSString stringWithFormat:@"%@ ", loremIpsum];
|
||||||
|
|
||||||
|
// THEN: we can successfully trim extra white space
|
||||||
XCTAssertEqualObjects(loremIpsum, [string1 jsq_stringByTrimingWhitespace], @"Strings should be equal after trimming whitespace");
|
XCTAssertEqualObjects(loremIpsum, [string1 jsq_stringByTrimingWhitespace], @"Strings should be equal after trimming whitespace");
|
||||||
|
|
||||||
XCTAssertEqualObjects(loremIpsum, [string2 jsq_stringByTrimingWhitespace], @"Strings should be equal after trimming whitespace");
|
XCTAssertEqualObjects(loremIpsum, [string2 jsq_stringByTrimingWhitespace], @"Strings should be equal after trimming whitespace");
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
// http://opensource.org/licenses/MIT
|
// http://opensource.org/licenses/MIT
|
||||||
//
|
//
|
||||||
|
|
||||||
@import XCTest;
|
#import <XCTest/XCTest.h>
|
||||||
|
|
||||||
#import "UIColor+JSQMessages.h"
|
#import "UIColor+JSQMessages.h"
|
||||||
|
|
||||||
@ -19,63 +19,20 @@
|
|||||||
|
|
||||||
@implementation JSQMessagesUIColorTests
|
@implementation JSQMessagesUIColorTests
|
||||||
|
|
||||||
- (void)setUp
|
|
||||||
{
|
|
||||||
[super setUp];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)tearDown
|
|
||||||
{
|
|
||||||
[super tearDown];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)testGreenColor
|
|
||||||
{
|
|
||||||
CGFloat h, s, b, a;
|
|
||||||
|
|
||||||
UIColor *green = [UIColor jsq_messageBubbleGreenColor];
|
|
||||||
XCTAssertNotNil(green, @"Color should not be nil");
|
|
||||||
|
|
||||||
[green getHue:&h saturation:&s brightness:&b alpha:&a];
|
|
||||||
UIColor *copyGreen = [UIColor colorWithHue:h saturation:s brightness:b alpha:a];
|
|
||||||
XCTAssertEqualObjects(green, copyGreen, @"Colors should be equal");
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)testBlueColor
|
|
||||||
{
|
|
||||||
CGFloat h, s, b, a;
|
|
||||||
|
|
||||||
UIColor *blue = [UIColor jsq_messageBubbleBlueColor];
|
|
||||||
XCTAssertNotNil(blue, @"Color should not be nil");
|
|
||||||
|
|
||||||
[blue getHue:&h saturation:&s brightness:&b alpha:&a];
|
|
||||||
UIColor *copyBlue = [UIColor colorWithHue:h saturation:s brightness:b alpha:a];
|
|
||||||
XCTAssertEqualObjects(blue, copyBlue, @"Colors should be equal");
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)testGrayColor
|
|
||||||
{
|
|
||||||
CGFloat h, s, b, a;
|
|
||||||
|
|
||||||
UIColor *gray = [UIColor jsq_messageBubbleLightGrayColor];
|
|
||||||
XCTAssertNotNil(gray, @"Color should not be nil");
|
|
||||||
|
|
||||||
[gray getHue:&h saturation:&s brightness:&b alpha:&a];
|
|
||||||
UIColor *copyGray = [UIColor colorWithHue:h saturation:s brightness:b alpha:a];
|
|
||||||
XCTAssertEqualObjects(gray, copyGray, @"Colors should be equal");
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)testDarkeningColors
|
- (void)testDarkeningColors
|
||||||
{
|
{
|
||||||
|
// GIVEN: a color and darkening value
|
||||||
CGFloat r = 0.89f, g = 0.34f, b = 0.67f, a = 1.0f;
|
CGFloat r = 0.89f, g = 0.34f, b = 0.67f, a = 1.0f;
|
||||||
|
|
||||||
CGFloat darkeningValue = 0.12f;
|
CGFloat darkeningValue = 0.12f;
|
||||||
|
|
||||||
UIColor *color = [UIColor colorWithRed:r green:g blue:b alpha:a];
|
UIColor *color = [UIColor colorWithRed:r green:g blue:b alpha:a];
|
||||||
|
|
||||||
|
// WHEN: we darken that color
|
||||||
UIColor *darkColor = [color jsq_colorByDarkeningColorWithValue:darkeningValue];
|
UIColor *darkColor = [color jsq_colorByDarkeningColorWithValue:darkeningValue];
|
||||||
|
|
||||||
|
// THEN: each RGB value is changed accordingly
|
||||||
CGFloat dr, dg, db, da;
|
CGFloat dr, dg, db, da;
|
||||||
[darkColor getRed:&dr green:&dg blue:&db alpha:&da];
|
[darkColor getRed:&dr green:&dg blue:&db alpha:&da];
|
||||||
|
|
||||||
XCTAssertEqual(dr, r - darkeningValue, @"Red values should be equal");
|
XCTAssertEqual(dr, r - darkeningValue, @"Red values should be equal");
|
||||||
XCTAssertEqual(dg, g - darkeningValue, @"Green values should be equal");
|
XCTAssertEqual(dg, g - darkeningValue, @"Green values should be equal");
|
||||||
XCTAssertEqual(db, b - darkeningValue, @"Blue values should be equal");
|
XCTAssertEqual(db, b - darkeningValue, @"Blue values should be equal");
|
||||||
@ -84,13 +41,15 @@
|
|||||||
|
|
||||||
- (void)testDarkeningColorsFloorToZero
|
- (void)testDarkeningColorsFloorToZero
|
||||||
{
|
{
|
||||||
|
// GIVEN: a color and darkening value
|
||||||
CGFloat r = 0.89f, g = 0.24f, b = 0.67f, a = 1.0f;
|
CGFloat r = 0.89f, g = 0.24f, b = 0.67f, a = 1.0f;
|
||||||
|
|
||||||
CGFloat darkeningValue = 0.5f;
|
CGFloat darkeningValue = 0.5f;
|
||||||
|
|
||||||
UIColor *color = [UIColor colorWithRed:r green:g blue:b alpha:a];
|
UIColor *color = [UIColor colorWithRed:r green:g blue:b alpha:a];
|
||||||
|
|
||||||
|
// WHEN: we dark that color, such that some RGB values will be negative
|
||||||
UIColor *darkColor = [color jsq_colorByDarkeningColorWithValue:darkeningValue];
|
UIColor *darkColor = [color jsq_colorByDarkeningColorWithValue:darkeningValue];
|
||||||
|
|
||||||
|
// THEN: the RGB values are floored to zero instead of being negative
|
||||||
CGFloat dr, dg, db, da;
|
CGFloat dr, dg, db, da;
|
||||||
[darkColor getRed:&dr green:&dg blue:&db alpha:&da];
|
[darkColor getRed:&dr green:&dg blue:&db alpha:&da];
|
||||||
XCTAssertEqual(dr, r - darkeningValue, @"Red values should be equal");
|
XCTAssertEqual(dr, r - darkeningValue, @"Red values should be equal");
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
// http://opensource.org/licenses/MIT
|
// http://opensource.org/licenses/MIT
|
||||||
//
|
//
|
||||||
|
|
||||||
@import XCTest;
|
#import <XCTest/XCTest.h>
|
||||||
|
|
||||||
#import "UIImage+JSQMessages.h"
|
#import "UIImage+JSQMessages.h"
|
||||||
|
|
||||||
@ -19,24 +19,17 @@
|
|||||||
|
|
||||||
@implementation JSQMessagesUIImageTests
|
@implementation JSQMessagesUIImageTests
|
||||||
|
|
||||||
- (void)setUp
|
|
||||||
{
|
|
||||||
[super setUp];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)tearDown
|
|
||||||
{
|
|
||||||
[super tearDown];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)testImageMasking
|
- (void)testImageMasking
|
||||||
{
|
{
|
||||||
UIImage *img = [UIImage imageNamed:@"bubble_min"];
|
// GIVEN: an image
|
||||||
|
UIImage *img = [UIImage jsq_bubbleCompactImage];
|
||||||
XCTAssertNotNil(img, @"Image should not be nil");
|
XCTAssertNotNil(img, @"Image should not be nil");
|
||||||
|
|
||||||
|
// WHEN: we mask that image
|
||||||
UIImage *imgMasked = [img jsq_imageMaskedWithColor:[UIColor whiteColor]];
|
UIImage *imgMasked = [img jsq_imageMaskedWithColor:[UIColor whiteColor]];
|
||||||
XCTAssertNotNil(imgMasked, @"Image should not be nil");
|
XCTAssertNotNil(imgMasked, @"Image should not be nil");
|
||||||
|
|
||||||
|
// THEN: masking should succeed, and the new image should have the same properties
|
||||||
XCTAssertTrue(CGSizeEqualToSize(img.size, imgMasked.size), @"Image sizes should be equal");
|
XCTAssertTrue(CGSizeEqualToSize(img.size, imgMasked.size), @"Image sizes should be equal");
|
||||||
|
|
||||||
XCTAssertEqual(img.scale, imgMasked.scale, @"Image scales should be equal");
|
XCTAssertEqual(img.scale, imgMasked.scale, @"Image scales should be equal");
|
||||||
@ -44,4 +37,31 @@
|
|||||||
XCTAssertThrows([img jsq_imageMaskedWithColor:nil], @"Should throw when passing nil color");
|
XCTAssertThrows([img jsq_imageMaskedWithColor:nil], @"Should throw when passing nil color");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)testImageAssets
|
||||||
|
{
|
||||||
|
// GIVEN: our image assets
|
||||||
|
|
||||||
|
// WHEN: we create a new UIImage object
|
||||||
|
|
||||||
|
// THEN: the image is created successfully
|
||||||
|
|
||||||
|
XCTAssertNotNil([UIImage jsq_bubbleRegularImage]);
|
||||||
|
|
||||||
|
XCTAssertNotNil([UIImage jsq_bubbleRegularTaillessImage]);
|
||||||
|
|
||||||
|
XCTAssertNotNil([UIImage jsq_bubbleRegularStrokedImage]);
|
||||||
|
|
||||||
|
XCTAssertNotNil([UIImage jsq_bubbleRegularStrokedTaillessImage]);
|
||||||
|
|
||||||
|
XCTAssertNotNil([UIImage jsq_bubbleCompactImage]);
|
||||||
|
|
||||||
|
XCTAssertNotNil([UIImage jsq_bubbleCompactTaillessImage]);
|
||||||
|
|
||||||
|
XCTAssertNotNil([UIImage jsq_defaultAccessoryImage]);
|
||||||
|
|
||||||
|
XCTAssertNotNil([UIImage jsq_defaultTypingIndicatorImage]);
|
||||||
|
|
||||||
|
XCTAssertNotNil([UIImage jsq_defaultPlayImage]);
|
||||||
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
// http://opensource.org/licenses/MIT
|
// http://opensource.org/licenses/MIT
|
||||||
//
|
//
|
||||||
|
|
||||||
@import XCTest;
|
#import <XCTest/XCTest.h>
|
||||||
|
|
||||||
#import "UIView+JSQMessages.h"
|
#import "UIView+JSQMessages.h"
|
||||||
|
|
||||||
@ -19,23 +19,24 @@
|
|||||||
|
|
||||||
@implementation JSQMessagesUIViewTests
|
@implementation JSQMessagesUIViewTests
|
||||||
|
|
||||||
- (void)setUp
|
|
||||||
{
|
|
||||||
[super setUp];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)tearDown
|
|
||||||
{
|
|
||||||
[super tearDown];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)testViewAutoLayoutPinEdges
|
- (void)testViewAutoLayoutPinEdges
|
||||||
{
|
{
|
||||||
|
// GIVEN: a superview and subview
|
||||||
UIView *superview = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 50.0f, 50.0f)];
|
UIView *superview = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 50.0f, 50.0f)];
|
||||||
UIView *subview = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 50.0f, 50.0f)];
|
[superview setTranslatesAutoresizingMaskIntoConstraints:NO];
|
||||||
|
|
||||||
|
UIView *subview = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 25.0f, 25.0f)];
|
||||||
|
[subview setTranslatesAutoresizingMaskIntoConstraints:NO];
|
||||||
|
|
||||||
|
// WHEN: we add the subview to the superview
|
||||||
[superview addSubview:subview];
|
[superview addSubview:subview];
|
||||||
|
|
||||||
|
// WHEN: we pin the edges of the subview to the superview
|
||||||
XCTAssertNoThrow([superview jsq_pinAllEdgesOfSubview:subview], @"Pinning edges of subview to superview should not throw");
|
XCTAssertNoThrow([superview jsq_pinAllEdgesOfSubview:subview], @"Pinning edges of subview to superview should not throw");
|
||||||
|
[superview setNeedsUpdateConstraints];
|
||||||
|
[superview layoutIfNeeded];
|
||||||
|
|
||||||
|
// THEN: add the layout constraints and laying out the views succeeds
|
||||||
|
|
||||||
XCTAssertEqual([[superview constraints] count], 4U, @"Superview should have 4 constraints");
|
XCTAssertEqual([[superview constraints] count], 4U, @"Superview should have 4 constraints");
|
||||||
|
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
// http://opensource.org/licenses/MIT
|
// http://opensource.org/licenses/MIT
|
||||||
//
|
//
|
||||||
|
|
||||||
@import XCTest;
|
#import <XCTest/XCTest.h>
|
||||||
|
|
||||||
#import "JSQMessagesKeyboardController.h"
|
#import "JSQMessagesKeyboardController.h"
|
||||||
|
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
// http://opensource.org/licenses/MIT
|
// http://opensource.org/licenses/MIT
|
||||||
//
|
//
|
||||||
|
|
||||||
@import XCTest;
|
#import <XCTest/XCTest.h>
|
||||||
|
|
||||||
#import <OCMock/OCMock.h>
|
#import <OCMock/OCMock.h>
|
||||||
|
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
// http://opensource.org/licenses/MIT
|
// http://opensource.org/licenses/MIT
|
||||||
//
|
//
|
||||||
|
|
||||||
@import XCTest;
|
#import <XCTest/XCTest.h>
|
||||||
|
|
||||||
#import "JSQMessagesAvatarImageFactory.h"
|
#import "JSQMessagesAvatarImageFactory.h"
|
||||||
|
|
||||||
@ -48,7 +48,6 @@
|
|||||||
avatar.avatarHighlightedImage = [JSQMessagesAvatarImageFactory circularAvatarHighlightedImage:image withDiameter:diameter];
|
avatar.avatarHighlightedImage = [JSQMessagesAvatarImageFactory circularAvatarHighlightedImage:image withDiameter:diameter];
|
||||||
XCTAssertTrue(CGSizeEqualToSize(avatar.avatarHighlightedImage.size, CGSizeMake(diameter, diameter)), @"Avatar size should be equal to diameter");
|
XCTAssertTrue(CGSizeEqualToSize(avatar.avatarHighlightedImage.size, CGSizeMake(diameter, diameter)), @"Avatar size should be equal to diameter");
|
||||||
XCTAssertEqual(avatar.avatarHighlightedImage.scale, [UIScreen mainScreen].scale, @"Avatar scale should be equal to screen scale");
|
XCTAssertEqual(avatar.avatarHighlightedImage.scale, [UIScreen mainScreen].scale, @"Avatar scale should be equal to screen scale");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)testAvatarInitialsImage
|
- (void)testAvatarInitialsImage
|
||||||
|
|||||||
@ -8,10 +8,12 @@
|
|||||||
// http://opensource.org/licenses/MIT
|
// http://opensource.org/licenses/MIT
|
||||||
//
|
//
|
||||||
|
|
||||||
@import XCTest;
|
#import <XCTest/XCTest.h>
|
||||||
|
|
||||||
#import "JSQMessagesBubbleImageFactory.h"
|
#import "JSQMessagesBubbleImageFactory.h"
|
||||||
|
|
||||||
|
#import "UIImage+JSQMessages.h"
|
||||||
|
|
||||||
|
|
||||||
@interface JSQMessagesBubbleImageFactoryTests : XCTestCase
|
@interface JSQMessagesBubbleImageFactoryTests : XCTestCase
|
||||||
|
|
||||||
@ -36,7 +38,7 @@
|
|||||||
|
|
||||||
- (void)testOutgoingMessageBubbleImageView
|
- (void)testOutgoingMessageBubbleImageView
|
||||||
{
|
{
|
||||||
UIImage *bubble = [UIImage imageNamed:@"bubble_min"];
|
UIImage *bubble = [UIImage jsq_bubbleCompactImage];
|
||||||
XCTAssertNotNil(bubble, @"Bubble image should not be nil");
|
XCTAssertNotNil(bubble, @"Bubble image should not be nil");
|
||||||
|
|
||||||
CGPoint center = CGPointMake(bubble.size.width / 2.0f, bubble.size.height / 2.0f);
|
CGPoint center = CGPointMake(bubble.size.width / 2.0f, bubble.size.height / 2.0f);
|
||||||
@ -61,7 +63,7 @@
|
|||||||
|
|
||||||
- (void)testIncomingMessageBubbleImageView
|
- (void)testIncomingMessageBubbleImageView
|
||||||
{
|
{
|
||||||
UIImage *bubble = [UIImage imageNamed:@"bubble_min"];
|
UIImage *bubble = [UIImage jsq_bubbleCompactImage];
|
||||||
XCTAssertNotNil(bubble, @"Bubble image should not be nil");
|
XCTAssertNotNil(bubble, @"Bubble image should not be nil");
|
||||||
|
|
||||||
CGPoint center = CGPointMake(bubble.size.width / 2.0f, bubble.size.height / 2.0f);
|
CGPoint center = CGPointMake(bubble.size.width / 2.0f, bubble.size.height / 2.0f);
|
||||||
@ -86,7 +88,7 @@
|
|||||||
|
|
||||||
- (void)testCustomOutgoingMessageBubbleImageView
|
- (void)testCustomOutgoingMessageBubbleImageView
|
||||||
{
|
{
|
||||||
UIImage *bubble = [UIImage imageNamed:@"clip"];
|
UIImage *bubble = [UIImage jsq_bubbleRegularStrokedTaillessImage];
|
||||||
XCTAssertNotNil(bubble, @"Bubble image should not be nil");
|
XCTAssertNotNil(bubble, @"Bubble image should not be nil");
|
||||||
|
|
||||||
UIEdgeInsets capInsets = UIEdgeInsetsMake(1, 1, 1, 1);
|
UIEdgeInsets capInsets = UIEdgeInsetsMake(1, 1, 1, 1);
|
||||||
@ -109,7 +111,7 @@
|
|||||||
|
|
||||||
- (void)testCustomIncomingMessageBubbleImageView
|
- (void)testCustomIncomingMessageBubbleImageView
|
||||||
{
|
{
|
||||||
UIImage *bubble = [UIImage imageNamed:@"clip"];
|
UIImage *bubble = [UIImage jsq_bubbleRegularStrokedTaillessImage];
|
||||||
XCTAssertNotNil(bubble, @"Bubble image should not be nil");
|
XCTAssertNotNil(bubble, @"Bubble image should not be nil");
|
||||||
|
|
||||||
UIEdgeInsets capInsets = UIEdgeInsetsMake(1, 1, 1, 1);
|
UIEdgeInsets capInsets = UIEdgeInsetsMake(1, 1, 1, 1);
|
||||||
|
|||||||
@ -0,0 +1,37 @@
|
|||||||
|
//
|
||||||
|
// Created by Jesse Squires
|
||||||
|
// http://www.jessesquires.com
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// MIT License
|
||||||
|
// Copyright (c) 2014 Jesse Squires
|
||||||
|
// http://opensource.org/licenses/MIT
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <XCTest/XCTest.h>
|
||||||
|
|
||||||
|
#import "JSQMessagesMediaViewBubbleImageMasker.h"
|
||||||
|
|
||||||
|
|
||||||
|
@interface JSQMessagesMediaViewBubbleImageMaskerTests : XCTestCase
|
||||||
|
@end
|
||||||
|
|
||||||
|
|
||||||
|
@implementation JSQMessagesMediaViewBubbleImageMaskerTests
|
||||||
|
|
||||||
|
- (void)testMediaViewBubbleImageMasker
|
||||||
|
{
|
||||||
|
// GIVEN: a new masker object
|
||||||
|
JSQMessagesMediaViewBubbleImageMasker *masker = [[JSQMessagesMediaViewBubbleImageMasker alloc] init];
|
||||||
|
XCTAssertNotNil(masker);
|
||||||
|
|
||||||
|
// WHEN: we apply a mask to a view
|
||||||
|
UIView *view1 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
|
||||||
|
UIView *view2 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
|
||||||
|
|
||||||
|
// THEN: it succeeds without an error
|
||||||
|
XCTAssertNoThrow([masker applyOutgoingBubbleImageMaskToMediaView:view1]);
|
||||||
|
XCTAssertNoThrow([masker applyIncomingBubbleImageMaskToMediaView:view2]);
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
@ -8,7 +8,7 @@
|
|||||||
// http://opensource.org/licenses/MIT
|
// http://opensource.org/licenses/MIT
|
||||||
//
|
//
|
||||||
|
|
||||||
@import XCTest;
|
#import <XCTest/XCTest.h>
|
||||||
|
|
||||||
#import "JSQMessagesTimestampFormatter.h"
|
#import "JSQMessagesTimestampFormatter.h"
|
||||||
|
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
// http://opensource.org/licenses/MIT
|
// http://opensource.org/licenses/MIT
|
||||||
//
|
//
|
||||||
|
|
||||||
@import XCTest;
|
#import <XCTest/XCTest.h>
|
||||||
|
|
||||||
#import "JSQMessagesToolbarButtonFactory.h"
|
#import "JSQMessagesToolbarButtonFactory.h"
|
||||||
|
|
||||||
@ -16,56 +16,22 @@
|
|||||||
|
|
||||||
|
|
||||||
@interface JSQMessagesToolbarButtonFactoryTests : XCTestCase
|
@interface JSQMessagesToolbarButtonFactoryTests : XCTestCase
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
|
||||||
@implementation JSQMessagesToolbarButtonFactoryTests
|
@implementation JSQMessagesToolbarButtonFactoryTests
|
||||||
|
|
||||||
- (void)setUp
|
|
||||||
{
|
|
||||||
[super setUp];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)tearDown
|
|
||||||
{
|
|
||||||
[super tearDown];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)testDefaultSendButtonItem
|
- (void)testDefaultSendButtonItem
|
||||||
{
|
{
|
||||||
UIButton *button = [JSQMessagesToolbarButtonFactory defaultSendButtonItem];
|
UIButton *button = [JSQMessagesToolbarButtonFactory defaultSendButtonItem];
|
||||||
XCTAssertNotNil(button, @"Button should not be nil");
|
XCTAssertNotNil(button, @"Button should not be nil");
|
||||||
|
|
||||||
XCTAssertTrue(CGRectEqualToRect(button.frame, CGRectZero), @"Button initial frame should equal CGRectZero");
|
|
||||||
|
|
||||||
NSString *title = @"Send";
|
|
||||||
XCTAssertEqualObjects([button titleForState:UIControlStateNormal], title, @"Button title should equal %@", title);
|
|
||||||
XCTAssertNil(button.imageView.image, @"Button image should be nil");
|
|
||||||
|
|
||||||
XCTAssertEqualObjects([button titleColorForState:UIControlStateNormal], [UIColor jsq_messageBubbleBlueColor], @"Button normal title color should be set");
|
|
||||||
XCTAssertEqualObjects([button titleColorForState:UIControlStateHighlighted], [[UIColor jsq_messageBubbleBlueColor] jsq_colorByDarkeningColorWithValue:0.1f], @"Button highlighted title color should be set");
|
|
||||||
XCTAssertEqualObjects([button titleColorForState:UIControlStateDisabled], [UIColor lightGrayColor], @"Button disabled title color should be set");
|
|
||||||
|
|
||||||
XCTAssertEqualObjects(button.titleLabel.font, [UIFont boldSystemFontOfSize:17.0f], @"Button font should be set");
|
|
||||||
XCTAssertEqual(button.contentMode, UIViewContentModeCenter, @"Button content mode should be set");
|
|
||||||
XCTAssertEqualObjects(button.backgroundColor, [UIColor clearColor], @"Button background color should be set");
|
|
||||||
XCTAssertEqualObjects(button.tintColor, [UIColor jsq_messageBubbleBlueColor], @"Button tint color should be set");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)testDefaultAccessoryButtonItem
|
- (void)testDefaultAccessoryButtonItem
|
||||||
{
|
{
|
||||||
UIButton *button = [JSQMessagesToolbarButtonFactory defaultAccessoryButtonItem];
|
UIButton *button = [JSQMessagesToolbarButtonFactory defaultAccessoryButtonItem];
|
||||||
XCTAssertNotNil(button, @"Button should not be nil");
|
XCTAssertNotNil(button, @"Button should not be nil");
|
||||||
|
|
||||||
XCTAssertTrue(CGRectEqualToRect(button.frame, CGRectZero), @"Button frame should equal CGRectZero");
|
|
||||||
|
|
||||||
XCTAssertNil(button.titleLabel.text, @"Button title should be nil");
|
|
||||||
XCTAssertNotNil([button imageForState:UIControlStateNormal], @"Button normal image should not be nil");
|
|
||||||
XCTAssertNotNil([button imageForState:UIControlStateHighlighted], @"Button highlighted image should not be nil");
|
|
||||||
|
|
||||||
XCTAssertEqual(button.contentMode, UIViewContentModeScaleAspectFit, @"Button content mode should be set");
|
|
||||||
XCTAssertEqualObjects(button.backgroundColor, [UIColor clearColor], @"Button background color should be set");
|
|
||||||
XCTAssertEqualObjects(button.tintColor, [UIColor lightGrayColor], @"Button tint color should be set");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
// http://opensource.org/licenses/MIT
|
// http://opensource.org/licenses/MIT
|
||||||
//
|
//
|
||||||
|
|
||||||
@import XCTest;
|
#import <XCTest/XCTest.h>
|
||||||
|
|
||||||
#import "JSQMessagesCollectionViewFlowLayout.h"
|
#import "JSQMessagesCollectionViewFlowLayout.h"
|
||||||
|
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
// http://opensource.org/licenses/MIT
|
// http://opensource.org/licenses/MIT
|
||||||
//
|
//
|
||||||
|
|
||||||
@import XCTest;
|
#import <XCTest/XCTest.h>
|
||||||
|
|
||||||
#import "JSQMessagesCollectionViewLayoutAttributes.h"
|
#import "JSQMessagesCollectionViewLayoutAttributes.h"
|
||||||
|
|
||||||
@ -34,7 +34,7 @@
|
|||||||
NSIndexPath *indexPath = [NSIndexPath indexPathForItem:0 inSection:0];
|
NSIndexPath *indexPath = [NSIndexPath indexPathForItem:0 inSection:0];
|
||||||
JSQMessagesCollectionViewLayoutAttributes *attrs = [JSQMessagesCollectionViewLayoutAttributes layoutAttributesForCellWithIndexPath:indexPath];
|
JSQMessagesCollectionViewLayoutAttributes *attrs = [JSQMessagesCollectionViewLayoutAttributes layoutAttributesForCellWithIndexPath:indexPath];
|
||||||
attrs.messageBubbleFont = [UIFont systemFontOfSize:15.0f];
|
attrs.messageBubbleFont = [UIFont systemFontOfSize:15.0f];
|
||||||
attrs.messageBubbleLeftRightMargin = 40.0f;
|
attrs.messageBubbleContainerViewWidth = 40.0f;
|
||||||
attrs.textViewTextContainerInsets = UIEdgeInsetsMake(10.0f, 8.0f, 10.0f, 8.0f);
|
attrs.textViewTextContainerInsets = UIEdgeInsetsMake(10.0f, 8.0f, 10.0f, 8.0f);
|
||||||
attrs.textViewFrameInsets = UIEdgeInsetsMake(0.0f, 0.0f, 0.0f, 6.0f);
|
attrs.textViewFrameInsets = UIEdgeInsetsMake(0.0f, 0.0f, 0.0f, 6.0f);
|
||||||
attrs.incomingAvatarViewSize = CGSizeMake(34.0f, 34.0f);
|
attrs.incomingAvatarViewSize = CGSizeMake(34.0f, 34.0f);
|
||||||
|
|||||||
64
JSQMessagesTests/ModelTests/JSQLocationMediaItemTests.m
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
//
|
||||||
|
// Created by Jesse Squires
|
||||||
|
// http://www.jessesquires.com
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// MIT License
|
||||||
|
// Copyright (c) 2014 Jesse Squires
|
||||||
|
// http://opensource.org/licenses/MIT
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <XCTest/XCTest.h>
|
||||||
|
|
||||||
|
#import "JSQLocationMediaItem.h"
|
||||||
|
|
||||||
|
|
||||||
|
@interface JSQLocationMediaItemTests : XCTestCase
|
||||||
|
|
||||||
|
@property (strong, nonatomic) CLLocation *location;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
|
||||||
|
@implementation JSQLocationMediaItemTests
|
||||||
|
|
||||||
|
- (void)setUp
|
||||||
|
{
|
||||||
|
[super setUp];
|
||||||
|
self.location = [[CLLocation alloc] initWithLatitude:37.795313 longitude:-122.393757];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)tearDown
|
||||||
|
{
|
||||||
|
self.location = nil;
|
||||||
|
[super tearDown];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)testLocationItemInit
|
||||||
|
{
|
||||||
|
JSQLocationMediaItem *item = [[JSQLocationMediaItem alloc] initWithLocation:self.location];
|
||||||
|
XCTAssertNotNil(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)testMediaDataProtocol
|
||||||
|
{
|
||||||
|
JSQLocationMediaItem *item = [[JSQLocationMediaItem alloc] init];
|
||||||
|
|
||||||
|
XCTAssertTrue(!CGSizeEqualToSize([item mediaViewDisplaySize], CGSizeZero));
|
||||||
|
XCTAssertNotNil([item mediaPlaceholderView]);
|
||||||
|
XCTAssertNil([item mediaView], @"Media view should be nil if location is nil");
|
||||||
|
|
||||||
|
XCTestExpectation *expectation = [self expectationWithDescription:[NSString stringWithFormat:@"%s", __PRETTY_FUNCTION__]];
|
||||||
|
|
||||||
|
[item setLocation:self.location withCompletionHandler:^{
|
||||||
|
[expectation fulfill];
|
||||||
|
}];
|
||||||
|
|
||||||
|
[self waitForExpectationsWithTimeout:5 handler:^(NSError *error) {
|
||||||
|
XCTAssertNil(error, @"Expectation should not error");
|
||||||
|
}];
|
||||||
|
|
||||||
|
XCTAssertNotNil([item mediaView], @"Media view should NOT be nil once item has media data");
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
@ -8,11 +8,11 @@
|
|||||||
// http://opensource.org/licenses/MIT
|
// http://opensource.org/licenses/MIT
|
||||||
//
|
//
|
||||||
|
|
||||||
@import XCTest;
|
#import <XCTest/XCTest.h>
|
||||||
|
|
||||||
#import <OCMock/OCMock.h>
|
#import <OCMock/OCMock.h>
|
||||||
|
|
||||||
#import "JSQMediaMessage.h"
|
#import "JSQMessage.h"
|
||||||
|
|
||||||
|
|
||||||
// Fake media object for testing
|
// Fake media object for testing
|
||||||
@ -35,7 +35,7 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
@interface JSQMediaMessageTests : XCTestCase
|
@interface JSQMessageMediaTests : XCTestCase
|
||||||
|
|
||||||
@property (strong, nonatomic) NSString *senderId;
|
@property (strong, nonatomic) NSString *senderId;
|
||||||
@property (strong, nonatomic) NSString *senderDisplayName;
|
@property (strong, nonatomic) NSString *senderDisplayName;
|
||||||
@ -45,7 +45,7 @@
|
|||||||
@end
|
@end
|
||||||
|
|
||||||
|
|
||||||
@implementation JSQMediaMessageTests
|
@implementation JSQMessageMediaTests
|
||||||
|
|
||||||
- (void)setUp
|
- (void)setUp
|
||||||
{
|
{
|
||||||
@ -65,46 +65,46 @@
|
|||||||
[super tearDown];
|
[super tearDown];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)testTextMessageInit
|
- (void)testMediaMessageInit
|
||||||
{
|
{
|
||||||
JSQMediaMessage *msg = [[JSQMediaMessage alloc] initWithSenderId:self.senderId
|
JSQMessage *msg = [[JSQMessage alloc] initWithSenderId:self.senderId
|
||||||
senderDisplayName:self.senderDisplayName
|
senderDisplayName:self.senderDisplayName
|
||||||
date:self.date
|
date:self.date
|
||||||
media:self.mockMediaData];
|
media:self.mockMediaData];
|
||||||
XCTAssertNotNil(msg, @"Message should not be nil");
|
XCTAssertNotNil(msg, @"Message should not be nil");
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)testMessageInvalidInit
|
- (void)testMediaMessageInvalidInit
|
||||||
{
|
{
|
||||||
XCTAssertThrows([[JSQMediaMessage alloc] init], @"Invalid init should throw");
|
XCTAssertThrows([[JSQMessage alloc] init], @"Invalid init should throw");
|
||||||
XCTAssertThrows([[JSQMediaMessage alloc] initWithSenderId:nil senderDisplayName:nil date:nil media:nil], @"Invalid init should throw");
|
XCTAssertThrows([[JSQMessage alloc] initWithSenderId:nil senderDisplayName:nil date:nil media:nil], @"Invalid init should throw");
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)testMessageIsEqual
|
- (void)testMediaMessageIsEqual
|
||||||
{
|
{
|
||||||
JSQMediaMessage *msg = [[JSQMediaMessage alloc] initWithSenderId:self.senderId
|
JSQMessage *msg = [[JSQMessage alloc] initWithSenderId:self.senderId
|
||||||
senderDisplayName:self.senderDisplayName
|
senderDisplayName:self.senderDisplayName
|
||||||
date:self.date
|
date:self.date
|
||||||
media:self.mockMediaData];
|
media:self.mockMediaData];
|
||||||
JSQMediaMessage *copy = [msg copy];
|
JSQMessage *copy = [msg copy];
|
||||||
|
|
||||||
XCTAssertEqualObjects(msg, copy, @"Copied messages should be equal");
|
XCTAssertEqualObjects(msg, copy, @"Copied messages should be equal");
|
||||||
|
|
||||||
XCTAssertEqual([msg hash], [copy hash], @"Copied messages hashes should be equal");
|
XCTAssertEqual([msg hash], [copy hash], @"Copied messages hashes should be equal");
|
||||||
|
|
||||||
XCTAssertEqualObjects(msg, copy, @"Copied messages should be equal");
|
|
||||||
XCTAssertEqualObjects(msg, msg, @"Messages should be equal to itself");
|
XCTAssertEqualObjects(msg, msg, @"Messages should be equal to itself");
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)testMessageArchiving
|
- (void)testMediaMessageArchiving
|
||||||
{
|
{
|
||||||
JSQMediaMessage *msg = [[JSQMediaMessage alloc] initWithSenderId:self.senderId
|
JSQMessage *msg = [[JSQMessage alloc] initWithSenderId:self.senderId
|
||||||
senderDisplayName:self.senderDisplayName
|
senderDisplayName:self.senderDisplayName
|
||||||
date:self.date
|
date:self.date
|
||||||
media:[FakeMedia new]];
|
media:[FakeMedia new]];
|
||||||
|
|
||||||
NSData *msgData = [NSKeyedArchiver archivedDataWithRootObject:msg];
|
NSData *msgData = [NSKeyedArchiver archivedDataWithRootObject:msg];
|
||||||
|
|
||||||
JSQMediaMessage *unarchivedMsg = [NSKeyedUnarchiver unarchiveObjectWithData:msgData];
|
JSQMessage *unarchivedMsg = [NSKeyedUnarchiver unarchiveObjectWithData:msgData];
|
||||||
|
|
||||||
XCTAssertEqualObjects(msg, unarchivedMsg, @"Message should be equal");
|
XCTAssertEqualObjects(msg, unarchivedMsg, @"Message should be equal");
|
||||||
}
|
}
|
||||||
@ -8,28 +8,34 @@
|
|||||||
// http://opensource.org/licenses/MIT
|
// http://opensource.org/licenses/MIT
|
||||||
//
|
//
|
||||||
|
|
||||||
@import XCTest;
|
#import <XCTest/XCTest.h>
|
||||||
|
|
||||||
#import "JSQMessage.h"
|
#import "JSQMessage.h"
|
||||||
|
|
||||||
|
|
||||||
@interface JSQMessageTests : XCTestCase
|
@interface JSQMessageTextTests : XCTestCase
|
||||||
|
|
||||||
@property (strong, nonatomic) NSString *senderId;
|
@property (strong, nonatomic) NSString *senderId;
|
||||||
@property (strong, nonatomic) NSString *senderDisplayName;
|
@property (strong, nonatomic) NSString *senderDisplayName;
|
||||||
@property (strong, nonatomic) NSDate *date;
|
@property (strong, nonatomic) NSDate *date;
|
||||||
|
@property (strong, nonatomic) NSString *text;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
|
||||||
@implementation JSQMessageTests
|
@implementation JSQMessageTextTests
|
||||||
|
|
||||||
- (void)setUp
|
- (void)setUp
|
||||||
{
|
{
|
||||||
[super setUp];
|
[super setUp];
|
||||||
|
|
||||||
self.senderId = @"324543-43556-212343";
|
self.senderId = @"324543-43556-212343";
|
||||||
self.senderDisplayName = @"Jesse Squires";
|
self.senderDisplayName = @"Jesse Squires";
|
||||||
self.date = [NSDate date];
|
self.date = [NSDate date];
|
||||||
|
|
||||||
|
self.text = @"Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque"
|
||||||
|
@"laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi"
|
||||||
|
@"architecto beatae vitae dicta sunt explicabo.";
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)tearDown
|
- (void)tearDown
|
||||||
@ -37,39 +43,48 @@
|
|||||||
self.senderId = nil;
|
self.senderId = nil;
|
||||||
self.senderDisplayName = nil;
|
self.senderDisplayName = nil;
|
||||||
self.date = nil;
|
self.date = nil;
|
||||||
|
self.text = nil;
|
||||||
[super tearDown];
|
[super tearDown];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)testMessageInit
|
#pragma mark - Text messages
|
||||||
|
|
||||||
|
- (void)testTextMessageInit
|
||||||
{
|
{
|
||||||
JSQMessage *msg = [[JSQMessage alloc] initWithSenderId:self.senderId senderDisplayName:self.senderDisplayName date:self.date isMedia:NO];
|
JSQMessage *msg = [[JSQMessage alloc] initWithSenderId:self.senderId
|
||||||
|
senderDisplayName:self.senderDisplayName
|
||||||
|
date:self.date
|
||||||
|
text:self.text];
|
||||||
XCTAssertNotNil(msg, @"Message should not be nil");
|
XCTAssertNotNil(msg, @"Message should not be nil");
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)testMessageInvalidInit
|
- (void)testTextMessageInvalidInit
|
||||||
{
|
{
|
||||||
XCTAssertThrows([[JSQMessage alloc] init], @"Invalid init should throw");
|
XCTAssertThrows([[JSQMessage alloc] init], @"Invalid init should throw");
|
||||||
XCTAssertThrows([[JSQMessage alloc] initWithSenderId:nil senderDisplayName:nil date:nil isMedia:NO], @"Invalid init should throw");
|
XCTAssertThrows([[JSQMessage alloc] initWithSenderId:nil senderDisplayName:nil date:nil text:nil], @"Invalid init should throw");
|
||||||
XCTAssertThrows([[JSQMessage alloc] initWithSenderId:self.senderId senderDisplayName:nil date:nil isMedia:YES], @"Invalid init should throw");
|
|
||||||
XCTAssertThrows([[JSQMessage alloc] initWithSenderId:nil senderDisplayName:self.senderDisplayName date:nil isMedia:NO], @"Invalid init should throw");
|
|
||||||
XCTAssertThrows([[JSQMessage alloc] initWithSenderId:nil senderDisplayName:nil date:self.date isMedia:YES], @"Invalid init should throw");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)testMessageIsEqual
|
- (void)testTextMessageIsEqual
|
||||||
{
|
{
|
||||||
JSQMessage *msg = [[JSQMessage alloc] initWithSenderId:self.senderId senderDisplayName:self.senderDisplayName date:self.date isMedia:NO];
|
JSQMessage *msg = [[JSQMessage alloc] initWithSenderId:self.senderId
|
||||||
|
senderDisplayName:self.senderDisplayName
|
||||||
|
date:self.date
|
||||||
|
text:self.text];
|
||||||
JSQMessage *copy = [msg copy];
|
JSQMessage *copy = [msg copy];
|
||||||
|
|
||||||
XCTAssertEqualObjects(msg, copy, @"Copied messages should be equal");
|
XCTAssertEqualObjects(msg, copy, @"Copied messages should be equal");
|
||||||
|
|
||||||
XCTAssertEqual([msg hash], [copy hash], @"Copied messages hashes should be equal");
|
XCTAssertEqual([msg hash], [copy hash], @"Copied messages hashes should be equal");
|
||||||
|
|
||||||
XCTAssertEqualObjects(msg, copy, @"Copied messages should be equal");
|
|
||||||
XCTAssertEqualObjects(msg, msg, @"Messages should be equal to itself");
|
XCTAssertEqualObjects(msg, msg, @"Messages should be equal to itself");
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)testMessageArchiving
|
- (void)testTextMessageArchiving
|
||||||
{
|
{
|
||||||
JSQMessage *msg = [[JSQMessage alloc] initWithSenderId:self.senderId senderDisplayName:self.senderDisplayName date:self.date isMedia:YES];
|
JSQMessage *msg = [[JSQMessage alloc] initWithSenderId:self.senderId
|
||||||
|
senderDisplayName:self.senderDisplayName
|
||||||
|
date:self.date
|
||||||
|
text:self.text];
|
||||||
NSData *msgData = [NSKeyedArchiver archivedDataWithRootObject:msg];
|
NSData *msgData = [NSKeyedArchiver archivedDataWithRootObject:msg];
|
||||||
|
|
||||||
JSQMessage *unarchivedMsg = [NSKeyedUnarchiver unarchiveObjectWithData:msgData];
|
JSQMessage *unarchivedMsg = [NSKeyedUnarchiver unarchiveObjectWithData:msgData];
|
||||||
@ -8,7 +8,7 @@
|
|||||||
// http://opensource.org/licenses/MIT
|
// http://opensource.org/licenses/MIT
|
||||||
//
|
//
|
||||||
|
|
||||||
@import XCTest;
|
#import <XCTest/XCTest.h>
|
||||||
|
|
||||||
#import "JSQMessagesAvatarImage.h"
|
#import "JSQMessagesAvatarImage.h"
|
||||||
|
|
||||||
|
|||||||
@ -8,10 +8,12 @@
|
|||||||
// http://opensource.org/licenses/MIT
|
// http://opensource.org/licenses/MIT
|
||||||
//
|
//
|
||||||
|
|
||||||
@import XCTest;
|
#import <XCTest/XCTest.h>
|
||||||
|
|
||||||
#import "JSQMessagesBubbleImage.h"
|
#import "JSQMessagesBubbleImage.h"
|
||||||
|
|
||||||
|
#import "UIImage+JSQMessages.h"
|
||||||
|
|
||||||
|
|
||||||
@interface JSQMessagesBubbleImageTests : XCTestCase
|
@interface JSQMessagesBubbleImageTests : XCTestCase
|
||||||
|
|
||||||
@ -38,14 +40,14 @@
|
|||||||
|
|
||||||
- (void)testInitValid
|
- (void)testInitValid
|
||||||
{
|
{
|
||||||
UIImage *mockImage = [UIImage imageNamed:@"bubble_min"];
|
UIImage *mockImage = [UIImage jsq_bubbleCompactImage];
|
||||||
JSQMessagesBubbleImage *bubbleImage = [[JSQMessagesBubbleImage alloc] initWithMessageBubbleImage:mockImage highlightedImage:mockImage];
|
JSQMessagesBubbleImage *bubbleImage = [[JSQMessagesBubbleImage alloc] initWithMessageBubbleImage:mockImage highlightedImage:mockImage];
|
||||||
XCTAssertNotNil(bubbleImage, @"Valid init should succeed");
|
XCTAssertNotNil(bubbleImage, @"Valid init should succeed");
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)testCopy
|
- (void)testCopy
|
||||||
{
|
{
|
||||||
UIImage *mockImage = [UIImage imageNamed:@"bubble_min"];
|
UIImage *mockImage = [UIImage jsq_bubbleCompactImage];
|
||||||
JSQMessagesBubbleImage *bubbleImage = [[JSQMessagesBubbleImage alloc] initWithMessageBubbleImage:mockImage highlightedImage:mockImage];
|
JSQMessagesBubbleImage *bubbleImage = [[JSQMessagesBubbleImage alloc] initWithMessageBubbleImage:mockImage highlightedImage:mockImage];
|
||||||
|
|
||||||
JSQMessagesBubbleImage *copy = [bubbleImage copy];
|
JSQMessagesBubbleImage *copy = [bubbleImage copy];
|
||||||
|
|||||||
76
JSQMessagesTests/ModelTests/JSQPhotoMediaItemTests.m
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
//
|
||||||
|
// Created by Jesse Squires
|
||||||
|
// http://www.jessesquires.com
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// MIT License
|
||||||
|
// Copyright (c) 2014 Jesse Squires
|
||||||
|
// http://opensource.org/licenses/MIT
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <XCTest/XCTest.h>
|
||||||
|
|
||||||
|
#import "JSQPhotoMediaItem.h"
|
||||||
|
|
||||||
|
|
||||||
|
@interface JSQPhotoMediaItemTests : XCTestCase
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
|
||||||
|
@implementation JSQPhotoMediaItemTests
|
||||||
|
|
||||||
|
- (void)setUp
|
||||||
|
{
|
||||||
|
[super setUp];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)tearDown
|
||||||
|
{
|
||||||
|
[super tearDown];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)testPhotoItemInit
|
||||||
|
{
|
||||||
|
JSQPhotoMediaItem *item = [[JSQPhotoMediaItem alloc] initWithImage:[UIImage new]];
|
||||||
|
XCTAssertNotNil(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)testPhotoItemIsEqual
|
||||||
|
{
|
||||||
|
JSQPhotoMediaItem *item = [[JSQPhotoMediaItem alloc] initWithImage:[UIImage imageNamed:@"demo_avatar_jobs"]];
|
||||||
|
|
||||||
|
JSQPhotoMediaItem *copy = [item copy];
|
||||||
|
|
||||||
|
XCTAssertEqualObjects(item, copy, @"Copied items should be equal");
|
||||||
|
|
||||||
|
XCTAssertEqual([item hash], [copy hash], @"Copied item hashes should be equal");
|
||||||
|
|
||||||
|
XCTAssertEqualObjects(item, item, @"Item should be equal to itself");
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)testPhotoItemArchiving
|
||||||
|
{
|
||||||
|
JSQPhotoMediaItem *item = [[JSQPhotoMediaItem alloc] initWithImage:[UIImage new]];
|
||||||
|
|
||||||
|
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:item];
|
||||||
|
|
||||||
|
JSQPhotoMediaItem *unarchivedItem = [NSKeyedUnarchiver unarchiveObjectWithData:data];
|
||||||
|
|
||||||
|
XCTAssertEqualObjects(item, unarchivedItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)testMediaDataProtocol
|
||||||
|
{
|
||||||
|
JSQPhotoMediaItem *item = [[JSQPhotoMediaItem alloc] initWithImage:nil];
|
||||||
|
|
||||||
|
XCTAssertTrue(!CGSizeEqualToSize([item mediaViewDisplaySize], CGSizeZero));
|
||||||
|
XCTAssertNotNil([item mediaPlaceholderView]);
|
||||||
|
XCTAssertNil([item mediaView], @"Media view should be nil if image is nil");
|
||||||
|
|
||||||
|
item.image = [UIImage imageNamed:@"demo_avatar_jobs"];
|
||||||
|
|
||||||
|
XCTAssertNotNil([item mediaView], @"Media view should NOT be nil once item has media data");
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
@ -1,91 +0,0 @@
|
|||||||
//
|
|
||||||
// Created by Jesse Squires
|
|
||||||
// http://www.jessesquires.com
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// MIT License
|
|
||||||
// Copyright (c) 2014 Jesse Squires
|
|
||||||
// http://opensource.org/licenses/MIT
|
|
||||||
//
|
|
||||||
|
|
||||||
@import XCTest;
|
|
||||||
|
|
||||||
#import "JSQTextMessage.h"
|
|
||||||
|
|
||||||
|
|
||||||
@interface JSQTextMessageTests : XCTestCase
|
|
||||||
|
|
||||||
@property (strong, nonatomic) NSString *senderId;
|
|
||||||
@property (strong, nonatomic) NSString *senderDisplayName;
|
|
||||||
@property (strong, nonatomic) NSDate *date;
|
|
||||||
@property (strong, nonatomic) NSString *text;
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
||||||
|
|
||||||
@implementation JSQTextMessageTests
|
|
||||||
|
|
||||||
- (void)setUp
|
|
||||||
{
|
|
||||||
[super setUp];
|
|
||||||
self.senderId = @"324543-43556-212343";
|
|
||||||
self.senderDisplayName = @"Jesse Squires";
|
|
||||||
self.date = [NSDate date];
|
|
||||||
self.text = @"Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque"
|
|
||||||
@"laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi"
|
|
||||||
@"architecto beatae vitae dicta sunt explicabo.";
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)tearDown
|
|
||||||
{
|
|
||||||
self.senderId = nil;
|
|
||||||
self.senderDisplayName = nil;
|
|
||||||
self.date = nil;
|
|
||||||
self.text = nil;
|
|
||||||
[super tearDown];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)testTextMessageInit
|
|
||||||
{
|
|
||||||
JSQTextMessage *msg = [[JSQTextMessage alloc] initWithSenderId:self.senderId
|
|
||||||
senderDisplayName:self.senderDisplayName
|
|
||||||
date:self.date
|
|
||||||
text:self.text];
|
|
||||||
XCTAssertNotNil(msg, @"Message should not be nil");
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)testMessageInvalidInit
|
|
||||||
{
|
|
||||||
XCTAssertThrows([[JSQTextMessage alloc] init], @"Invalid init should throw");
|
|
||||||
XCTAssertThrows([[JSQTextMessage alloc] initWithSenderId:nil senderDisplayName:nil date:nil text:nil], @"Invalid init should throw");
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)testMessageIsEqual
|
|
||||||
{
|
|
||||||
JSQTextMessage *msg = [[JSQTextMessage alloc] initWithSenderId:self.senderId
|
|
||||||
senderDisplayName:self.senderDisplayName
|
|
||||||
date:self.date
|
|
||||||
text:self.text];
|
|
||||||
JSQTextMessage *copy = [msg copy];
|
|
||||||
|
|
||||||
XCTAssertEqualObjects(msg, copy, @"Copied messages should be equal");
|
|
||||||
XCTAssertEqual([msg hash], [copy hash], @"Copied messages hashes should be equal");
|
|
||||||
|
|
||||||
XCTAssertEqualObjects(msg, copy, @"Copied messages should be equal");
|
|
||||||
XCTAssertEqualObjects(msg, msg, @"Messages should be equal to itself");
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)testMessageArchiving
|
|
||||||
{
|
|
||||||
JSQTextMessage *msg = [[JSQTextMessage alloc] initWithSenderId:self.senderId
|
|
||||||
senderDisplayName:self.senderDisplayName
|
|
||||||
date:self.date
|
|
||||||
text:self.text];
|
|
||||||
NSData *msgData = [NSKeyedArchiver archivedDataWithRootObject:msg];
|
|
||||||
|
|
||||||
JSQTextMessage *unarchivedMsg = [NSKeyedUnarchiver unarchiveObjectWithData:msgData];
|
|
||||||
|
|
||||||
XCTAssertEqualObjects(msg, unarchivedMsg, @"Message should be equal");
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
|
||||||
77
JSQMessagesTests/ModelTests/JSQVideoMediaItemTests.m
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
//
|
||||||
|
// Created by Jesse Squires
|
||||||
|
// http://www.jessesquires.com
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// MIT License
|
||||||
|
// Copyright (c) 2014 Jesse Squires
|
||||||
|
// http://opensource.org/licenses/MIT
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <XCTest/XCTest.h>
|
||||||
|
|
||||||
|
#import "JSQVideoMediaItem.h"
|
||||||
|
|
||||||
|
|
||||||
|
@interface JSQVideoMediaItemTests : XCTestCase
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
|
||||||
|
@implementation JSQVideoMediaItemTests
|
||||||
|
|
||||||
|
- (void)setUp
|
||||||
|
{
|
||||||
|
[super setUp];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)tearDown
|
||||||
|
{
|
||||||
|
[super tearDown];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)testVideoMediaItemInit
|
||||||
|
{
|
||||||
|
JSQVideoMediaItem *item = [[JSQVideoMediaItem alloc] initWithFileURL:[NSURL URLWithString:@"file://"] isReadyToPlay:NO];
|
||||||
|
XCTAssertNotNil(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)testVideoItemIsEqual
|
||||||
|
{
|
||||||
|
JSQVideoMediaItem *item = [[JSQVideoMediaItem alloc] initWithFileURL:[NSURL URLWithString:@"file://"] isReadyToPlay:YES];
|
||||||
|
|
||||||
|
JSQVideoMediaItem *copy = [item copy];
|
||||||
|
|
||||||
|
XCTAssertEqualObjects(item, copy, @"Copied items should be equal");
|
||||||
|
|
||||||
|
XCTAssertEqual([item hash], [copy hash], @"Copied item hashes should be equal");
|
||||||
|
|
||||||
|
XCTAssertEqualObjects(item, item, @"Item should be equal to itself");
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)testVideoItemArchiving
|
||||||
|
{
|
||||||
|
JSQVideoMediaItem *item = [[JSQVideoMediaItem alloc] initWithFileURL:[NSURL URLWithString:@"file://"] isReadyToPlay:YES];
|
||||||
|
|
||||||
|
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:item];
|
||||||
|
|
||||||
|
JSQVideoMediaItem *unarchivedItem = [NSKeyedUnarchiver unarchiveObjectWithData:data];
|
||||||
|
|
||||||
|
XCTAssertEqualObjects(item, unarchivedItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)testMediaDataProtocol
|
||||||
|
{
|
||||||
|
JSQVideoMediaItem *item = [[JSQVideoMediaItem alloc] init];
|
||||||
|
|
||||||
|
XCTAssertTrue(!CGSizeEqualToSize([item mediaViewDisplaySize], CGSizeZero));
|
||||||
|
XCTAssertNotNil([item mediaPlaceholderView]);
|
||||||
|
XCTAssertNil([item mediaView], @"Media view should be nil if fileURL is nil, and readyToPlay is NO");
|
||||||
|
|
||||||
|
item.fileURL = [NSURL URLWithString:@"file://"];
|
||||||
|
item.isReadyToPlay = YES;
|
||||||
|
|
||||||
|
XCTAssertNotNil([item mediaView], @"Media view should NOT be nil once item has media data");
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
@ -8,7 +8,7 @@
|
|||||||
// http://opensource.org/licenses/MIT
|
// http://opensource.org/licenses/MIT
|
||||||
//
|
//
|
||||||
|
|
||||||
@import XCTest;
|
#import <XCTest/XCTest.h>
|
||||||
|
|
||||||
#import "JSQMessagesCollectionViewCellIncoming.h"
|
#import "JSQMessagesCollectionViewCellIncoming.h"
|
||||||
#import "JSQMessagesCollectionViewCellOutgoing.h"
|
#import "JSQMessagesCollectionViewCellOutgoing.h"
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
// http://opensource.org/licenses/MIT
|
// http://opensource.org/licenses/MIT
|
||||||
//
|
//
|
||||||
|
|
||||||
@import XCTest;
|
#import <XCTest/XCTest.h>
|
||||||
|
|
||||||
#import "JSQMessagesCollectionView.h"
|
#import "JSQMessagesCollectionView.h"
|
||||||
#import "JSQMessagesCollectionViewFlowLayout.h"
|
#import "JSQMessagesCollectionViewFlowLayout.h"
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
// http://opensource.org/licenses/MIT
|
// http://opensource.org/licenses/MIT
|
||||||
//
|
//
|
||||||
|
|
||||||
@import XCTest;
|
#import <XCTest/XCTest.h>
|
||||||
|
|
||||||
#import "JSQMessagesComposerTextView.h"
|
#import "JSQMessagesComposerTextView.h"
|
||||||
|
|
||||||
@ -54,7 +54,7 @@
|
|||||||
XCTAssertTrue(UIEdgeInsetsEqualToEdgeInsets(self.textView.scrollIndicatorInsets, UIEdgeInsetsMake(6.0f, 0.0f, 6.0f, 0.0f)), @"Property should be equal to default value");
|
XCTAssertTrue(UIEdgeInsetsEqualToEdgeInsets(self.textView.scrollIndicatorInsets, UIEdgeInsetsMake(6.0f, 0.0f, 6.0f, 0.0f)), @"Property should be equal to default value");
|
||||||
|
|
||||||
XCTAssertTrue(UIEdgeInsetsEqualToEdgeInsets(self.textView.textContainerInset, UIEdgeInsetsMake(4.0f, 2.0f, 4.0f, 2.0f)), @"Property should be equal to default value");
|
XCTAssertTrue(UIEdgeInsetsEqualToEdgeInsets(self.textView.textContainerInset, UIEdgeInsetsMake(4.0f, 2.0f, 4.0f, 2.0f)), @"Property should be equal to default value");
|
||||||
XCTAssertTrue(UIEdgeInsetsEqualToEdgeInsets(self.textView.contentInset, UIEdgeInsetsMake(2.0f, 0.0f, 2.0f, 0.0f)), @"Property should be equal to default value");
|
XCTAssertTrue(UIEdgeInsetsEqualToEdgeInsets(self.textView.contentInset, UIEdgeInsetsMake(1.0f, 0.0f, 1.0f, 0.0f)), @"Property should be equal to default value");
|
||||||
|
|
||||||
XCTAssertEqual(self.textView.scrollEnabled, YES, @"Property should be equal to default value");
|
XCTAssertEqual(self.textView.scrollEnabled, YES, @"Property should be equal to default value");
|
||||||
XCTAssertEqual(self.textView.scrollsToTop, NO, @"Property should be equal to default value");
|
XCTAssertEqual(self.textView.scrollsToTop, NO, @"Property should be equal to default value");
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
// http://opensource.org/licenses/MIT
|
// http://opensource.org/licenses/MIT
|
||||||
//
|
//
|
||||||
|
|
||||||
@import XCTest;
|
#import <XCTest/XCTest.h>
|
||||||
|
|
||||||
#import "JSQMessagesViewController.h"
|
#import "JSQMessagesViewController.h"
|
||||||
#import "JSQMessagesInputToolbar.h"
|
#import "JSQMessagesInputToolbar.h"
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
// http://opensource.org/licenses/MIT
|
// http://opensource.org/licenses/MIT
|
||||||
//
|
//
|
||||||
|
|
||||||
@import XCTest;
|
#import <XCTest/XCTest.h>
|
||||||
|
|
||||||
#import "JSQMessagesLabel.h"
|
#import "JSQMessagesLabel.h"
|
||||||
|
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
// http://opensource.org/licenses/MIT
|
// http://opensource.org/licenses/MIT
|
||||||
//
|
//
|
||||||
|
|
||||||
@import XCTest;
|
#import <XCTest/XCTest.h>
|
||||||
|
|
||||||
#import "JSQMessagesLoadEarlierHeaderView.h"
|
#import "JSQMessagesLoadEarlierHeaderView.h"
|
||||||
|
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
// http://opensource.org/licenses/MIT
|
// http://opensource.org/licenses/MIT
|
||||||
//
|
//
|
||||||
|
|
||||||
@import XCTest;
|
#import <XCTest/XCTest.h>
|
||||||
|
|
||||||
#import "JSQMessagesToolbarContentView.h"
|
#import "JSQMessagesToolbarContentView.h"
|
||||||
#import "JSQMessagesComposerTextView.h"
|
#import "JSQMessagesComposerTextView.h"
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
// http://opensource.org/licenses/MIT
|
// http://opensource.org/licenses/MIT
|
||||||
//
|
//
|
||||||
|
|
||||||
@import XCTest;
|
#import <XCTest/XCTest.h>
|
||||||
|
|
||||||
#import "JSQMessagesTypingIndicatorFooterView.h"
|
#import "JSQMessagesTypingIndicatorFooterView.h"
|
||||||
|
|
||||||
|
|||||||
@ -1,17 +1,19 @@
|
|||||||
Pod::Spec.new do |s|
|
Pod::Spec.new do |s|
|
||||||
s.name = 'JSQMessagesViewController'
|
s.name = 'JSQMessagesViewController'
|
||||||
s.version = '6.0-beta5'
|
s.version = '6.1.1'
|
||||||
s.summary = 'An elegant messages UI library for iOS.'
|
s.summary = 'An elegant messages UI library for iOS.'
|
||||||
s.homepage = 'http://jessesquires.github.io/JSQMessagesViewController'
|
s.homepage = 'http://jessesquires.github.io/JSQMessagesViewController'
|
||||||
s.license = 'MIT'
|
s.license = 'MIT'
|
||||||
s.screenshots = ['https://raw.githubusercontent.com/jessesquires/JSQMessagesViewController/develop/Screenshots/screenshot0.png',
|
s.screenshots = ['https://raw.githubusercontent.com/jessesquires/JSQMessagesViewController/develop/Screenshots/screenshot0.png',
|
||||||
'https://raw.githubusercontent.com/jessesquires/JSQMessagesViewController/develop/Screenshots/screenshot1.png']
|
'https://raw.githubusercontent.com/jessesquires/JSQMessagesViewController/develop/Screenshots/screenshot1.png',
|
||||||
|
'https://raw.githubusercontent.com/jessesquires/JSQMessagesViewController/develop/Screenshots/screenshot2.png',
|
||||||
|
'https://raw.githubusercontent.com/jessesquires/JSQMessagesViewController/develop/Screenshots/screenshot3.png']
|
||||||
s.author = { 'Jesse Squires' => 'jesse.squires.developer@gmail.com' }
|
s.author = { 'Jesse Squires' => 'jesse.squires.developer@gmail.com' }
|
||||||
s.social_media_url = 'https://twitter.com/jesse_squires'
|
s.social_media_url = 'https://twitter.com/jesse_squires'
|
||||||
s.source = { :git => 'https://github.com/jessesquires/JSQMessagesViewController.git', :tag => s.version.to_s }
|
s.source = { :git => 'https://github.com/jessesquires/JSQMessagesViewController.git', :tag => s.version.to_s }
|
||||||
s.platform = :ios, '7.0'
|
s.platform = :ios, '7.0'
|
||||||
s.source_files = 'JSQMessagesViewController/**/*.{h,m}'
|
s.source_files = 'JSQMessagesViewController/**/*.{h,m}'
|
||||||
s.resources = 'JSQMessagesViewController/Assets/**/*.{png,aiff}', 'JSQMessagesViewController/**/*.{xib}'
|
s.resources = 'JSQMessagesViewController/Assets/JSQMessagesAssets.bundle', 'JSQMessagesViewController/Assets/Strings/*.lproj', 'JSQMessagesViewController/**/*.{xib}',
|
||||||
s.frameworks = 'QuartzCore', 'CoreGraphics', 'CoreLocation', 'MapKit', 'UIKit', 'Foundation'
|
s.frameworks = 'QuartzCore', 'CoreGraphics', 'CoreLocation', 'MapKit', 'UIKit', 'Foundation'
|
||||||
s.requires_arc = true
|
s.requires_arc = true
|
||||||
|
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 9.3 KiB After Width: | Height: | Size: 9.3 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 9.3 KiB After Width: | Height: | Size: 9.3 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 372 B After Width: | Height: | Size: 372 B |
|
Before Width: | Height: | Size: 741 B After Width: | Height: | Size: 741 B |
|
Before Width: | Height: | Size: 801 B After Width: | Height: | Size: 801 B |
|
Before Width: | Height: | Size: 412 B After Width: | Height: | Size: 412 B |
|
Before Width: | Height: | Size: 918 B After Width: | Height: | Size: 918 B |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 318 B After Width: | Height: | Size: 318 B |
|
Before Width: | Height: | Size: 652 B After Width: | Height: | Size: 652 B |
|
Before Width: | Height: | Size: 995 B After Width: | Height: | Size: 995 B |
@ -0,0 +1,29 @@
|
|||||||
|
//
|
||||||
|
// Created by Jesse Squires
|
||||||
|
// http://www.jessesquires.com
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Documentation
|
||||||
|
// http://cocoadocs.org/docsets/JSQMessagesViewController
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// GitHub
|
||||||
|
// https://github.com/jessesquires/JSQMessagesViewController
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// License
|
||||||
|
// Copyright (c) 2014 Jesse Squires
|
||||||
|
// Released under an MIT license: http://opensource.org/licenses/MIT
|
||||||
|
//
|
||||||
|
|
||||||
|
// ********************************
|
||||||
|
// Special thanks to the localization contributors!
|
||||||
|
//
|
||||||
|
// https://github.com/jessesquires/JSQMessagesViewController/issues/237
|
||||||
|
// ********************************
|
||||||
|
|
||||||
|
"Load Earlier Messages" = "Load Earlier Messages";
|
||||||
|
|
||||||
|
"Send" = "Send";
|
||||||
|
|
||||||
|
"New Message" = "New Message";
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
//
|
||||||
|
// Created by Jesse Squires
|
||||||
|
// http://www.jessesquires.com
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Documentation
|
||||||
|
// http://cocoadocs.org/docsets/JSQMessagesViewController
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// GitHub
|
||||||
|
// https://github.com/jessesquires/JSQMessagesViewController
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// License
|
||||||
|
// Copyright (c) 2014 Jesse Squires
|
||||||
|
// Released under an MIT license: http://opensource.org/licenses/MIT
|
||||||
|
//
|
||||||
|
|
||||||
|
// ********************************
|
||||||
|
// Special thanks to the localization contributors!
|
||||||
|
//
|
||||||
|
// https://github.com/jessesquires/JSQMessagesViewController/issues/237
|
||||||
|
// ********************************
|
||||||
|
|
||||||
|
"Load Earlier Messages" = "Ältere Nachrichten laden";
|
||||||
|
|
||||||
|
"Send" = "Senden";
|
||||||
|
|
||||||
|
"New Message" = "Neue Nachricht";
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
//
|
||||||
|
// Created by Jesse Squires
|
||||||
|
// http://www.jessesquires.com
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Documentation
|
||||||
|
// http://cocoadocs.org/docsets/JSQMessagesViewController
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// GitHub
|
||||||
|
// https://github.com/jessesquires/JSQMessagesViewController
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// License
|
||||||
|
// Copyright (c) 2014 Jesse Squires
|
||||||
|
// Released under an MIT license: http://opensource.org/licenses/MIT
|
||||||
|
//
|
||||||
|
|
||||||
|
// ********************************
|
||||||
|
// Special thanks to the localization contributors!
|
||||||
|
//
|
||||||
|
// https://github.com/jessesquires/JSQMessagesViewController/issues/237
|
||||||
|
// ********************************
|
||||||
|
|
||||||
|
"Load Earlier Messages" = "Load Earlier Messages";
|
||||||
|
|
||||||
|
"Send" = "Send";
|
||||||
|
|
||||||
|
"New Message" = "New Message";
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
//
|
||||||
|
// Created by Jesse Squires
|
||||||
|
// http://www.jessesquires.com
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Documentation
|
||||||
|
// http://cocoadocs.org/docsets/JSQMessagesViewController
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// GitHub
|
||||||
|
// https://github.com/jessesquires/JSQMessagesViewController
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// License
|
||||||
|
// Copyright (c) 2014 Jesse Squires
|
||||||
|
// Released under an MIT license: http://opensource.org/licenses/MIT
|
||||||
|
//
|
||||||
|
|
||||||
|
// ********************************
|
||||||
|
// Special thanks to the localization contributors!
|
||||||
|
//
|
||||||
|
// https://github.com/jessesquires/JSQMessagesViewController/issues/237
|
||||||
|
// ********************************
|
||||||
|
|
||||||
|
"Load Earlier Messages" = "Cargar mensajes anteriores";
|
||||||
|
|
||||||
|
"Send" = "Enviar";
|
||||||
|
|
||||||
|
"New Message" = "Nuevo mensaje";
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
//
|
||||||
|
// Created by Jesse Squires
|
||||||
|
// http://www.jessesquires.com
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Documentation
|
||||||
|
// http://cocoadocs.org/docsets/JSQMessagesViewController
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// GitHub
|
||||||
|
// https://github.com/jessesquires/JSQMessagesViewController
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// License
|
||||||
|
// Copyright (c) 2014 Jesse Squires
|
||||||
|
// Released under an MIT license: http://opensource.org/licenses/MIT
|
||||||
|
//
|
||||||
|
|
||||||
|
// ********************************
|
||||||
|
// Special thanks to the localization contributors!
|
||||||
|
//
|
||||||
|
// https://github.com/jessesquires/JSQMessagesViewController/issues/237
|
||||||
|
// ********************************
|
||||||
|
|
||||||
|
"Load Earlier Messages" = "Messages précedents";
|
||||||
|
|
||||||
|
"Send" = "Envoi";
|
||||||
|
|
||||||
|
"New Message" = "Nouveau message";
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
//
|
||||||
|
// Created by Jesse Squires
|
||||||
|
// http://www.jessesquires.com
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Documentation
|
||||||
|
// http://cocoadocs.org/docsets/JSQMessagesViewController
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// GitHub
|
||||||
|
// https://github.com/jessesquires/JSQMessagesViewController
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// License
|
||||||
|
// Copyright (c) 2014 Jesse Squires
|
||||||
|
// Released under an MIT license: http://opensource.org/licenses/MIT
|
||||||
|
//
|
||||||
|
|
||||||
|
// ********************************
|
||||||
|
// Special thanks to the localization contributors!
|
||||||
|
//
|
||||||
|
// https://github.com/jessesquires/JSQMessagesViewController/issues/237
|
||||||
|
// ********************************
|
||||||
|
|
||||||
|
"Load Earlier Messages" = "טען הודעות קודמות";
|
||||||
|
|
||||||
|
"Send" = "שלח";
|
||||||
|
|
||||||
|
"New Message" = "הודעה חדשה";
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
//
|
||||||
|
// Created by Jesse Squires
|
||||||
|
// http://www.jessesquires.com
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Documentation
|
||||||
|
// http://cocoadocs.org/docsets/JSQMessagesViewController
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// GitHub
|
||||||
|
// https://github.com/jessesquires/JSQMessagesViewController
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// License
|
||||||
|
// Copyright (c) 2014 Jesse Squires
|
||||||
|
// Released under an MIT license: http://opensource.org/licenses/MIT
|
||||||
|
//
|
||||||
|
|
||||||
|
// ********************************
|
||||||
|
// Special thanks to the localization contributors!
|
||||||
|
//
|
||||||
|
// https://github.com/jessesquires/JSQMessagesViewController/issues/237
|
||||||
|
// ********************************
|
||||||
|
|
||||||
|
"Load Earlier Messages" = "Carica messaggi precedenti";
|
||||||
|
|
||||||
|
"Send" = "Invia";
|
||||||
|
|
||||||
|
"New Message" = "Nuovo Messaggio";
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
//
|
||||||
|
// Created by Jesse Squires
|
||||||
|
// http://www.jessesquires.com
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Documentation
|
||||||
|
// http://cocoadocs.org/docsets/JSQMessagesViewController
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// GitHub
|
||||||
|
// https://github.com/jessesquires/JSQMessagesViewController
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// License
|
||||||
|
// Copyright (c) 2014 Jesse Squires
|
||||||
|
// Released under an MIT license: http://opensource.org/licenses/MIT
|
||||||
|
//
|
||||||
|
|
||||||
|
// ********************************
|
||||||
|
// Special thanks to the localization contributors!
|
||||||
|
//
|
||||||
|
// https://github.com/jessesquires/JSQMessagesViewController/issues/237
|
||||||
|
// ********************************
|
||||||
|
|
||||||
|
"Load Earlier Messages" = "Laad eerdere berichten";
|
||||||
|
|
||||||
|
"Send" = "Stuur";
|
||||||
|
|
||||||
|
"New Message" = "Nieuw bericht";
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
//
|
||||||
|
// Created by Jesse Squires
|
||||||
|
// http://www.jessesquires.com
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Documentation
|
||||||
|
// http://cocoadocs.org/docsets/JSQMessagesViewController
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// GitHub
|
||||||
|
// https://github.com/jessesquires/JSQMessagesViewController
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// License
|
||||||
|
// Copyright (c) 2014 Jesse Squires
|
||||||
|
// Released under an MIT license: http://opensource.org/licenses/MIT
|
||||||
|
//
|
||||||
|
|
||||||
|
// ********************************
|
||||||
|
// Special thanks to the localization contributors!
|
||||||
|
//
|
||||||
|
// https://github.com/jessesquires/JSQMessagesViewController/issues/237
|
||||||
|
// ********************************
|
||||||
|
|
||||||
|
"Load Earlier Messages" = "Otwórz wcześniejsze wiadomości";
|
||||||
|
|
||||||
|
"Send" = "Wyślij";
|
||||||
|
|
||||||
|
"New Message" = "Nowa wiadomość";
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
//
|
||||||
|
// Created by Jesse Squires
|
||||||
|
// http://www.jessesquires.com
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Documentation
|
||||||
|
// http://cocoadocs.org/docsets/JSQMessagesViewController
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// GitHub
|
||||||
|
// https://github.com/jessesquires/JSQMessagesViewController
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// License
|
||||||
|
// Copyright (c) 2014 Jesse Squires
|
||||||
|
// Released under an MIT license: http://opensource.org/licenses/MIT
|
||||||
|
//
|
||||||
|
|
||||||
|
// ********************************
|
||||||
|
// Special thanks to the localization contributors!
|
||||||
|
//
|
||||||
|
// https://github.com/jessesquires/JSQMessagesViewController/issues/237
|
||||||
|
// ********************************
|
||||||
|
|
||||||
|
"Load Earlier Messages" = "Carregar mensagens anteriore";
|
||||||
|
|
||||||
|
"Send" = "Enviar";
|
||||||
|
|
||||||
|
"New Message" = "Nova Mensagem";
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
//
|
||||||
|
// Created by Jesse Squires
|
||||||
|
// http://www.jessesquires.com
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Documentation
|
||||||
|
// http://cocoadocs.org/docsets/JSQMessagesViewController
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// GitHub
|
||||||
|
// https://github.com/jessesquires/JSQMessagesViewController
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// License
|
||||||
|
// Copyright (c) 2014 Jesse Squires
|
||||||
|
// Released under an MIT license: http://opensource.org/licenses/MIT
|
||||||
|
//
|
||||||
|
|
||||||
|
// ********************************
|
||||||
|
// Special thanks to the localization contributors!
|
||||||
|
//
|
||||||
|
// https://github.com/jessesquires/JSQMessagesViewController/issues/237
|
||||||
|
// ********************************
|
||||||
|
|
||||||
|
"Load Earlier Messages" = "Încărcați mesajele anterioare";
|
||||||
|
|
||||||
|
"Send" = "Trimiteți";
|
||||||
|
|
||||||
|
"New Message" = "Mesaj nou";
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
//
|
||||||
|
// Created by Jesse Squires
|
||||||
|
// http://www.jessesquires.com
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Documentation
|
||||||
|
// http://cocoadocs.org/docsets/JSQMessagesViewController
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// GitHub
|
||||||
|
// https://github.com/jessesquires/JSQMessagesViewController
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// License
|
||||||
|
// Copyright (c) 2014 Jesse Squires
|
||||||
|
// Released under an MIT license: http://opensource.org/licenses/MIT
|
||||||
|
//
|
||||||
|
|
||||||
|
// ********************************
|
||||||
|
// Special thanks to the localization contributors!
|
||||||
|
//
|
||||||
|
// https://github.com/jessesquires/JSQMessagesViewController/issues/237
|
||||||
|
// ********************************
|
||||||
|
|
||||||
|
"Load Earlier Messages" = "Предыдущие сообщения";
|
||||||
|
|
||||||
|
"Send" = "Отпр";
|
||||||
|
|
||||||
|
"New Message" = "Сообщение";
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
//
|
||||||
|
// Created by Jesse Squires
|
||||||
|
// http://www.jessesquires.com
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Documentation
|
||||||
|
// http://cocoadocs.org/docsets/JSQMessagesViewController
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// GitHub
|
||||||
|
// https://github.com/jessesquires/JSQMessagesViewController
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// License
|
||||||
|
// Copyright (c) 2014 Jesse Squires
|
||||||
|
// Released under an MIT license: http://opensource.org/licenses/MIT
|
||||||
|
//
|
||||||
|
|
||||||
|
// ********************************
|
||||||
|
// Special thanks to the localization contributors!
|
||||||
|
//
|
||||||
|
// https://github.com/jessesquires/JSQMessagesViewController/issues/237
|
||||||
|
// ********************************
|
||||||
|
|
||||||
|
"Load Earlier Messages" = "Eski mesajları yükle";
|
||||||
|
|
||||||
|
"Send" = "Gönder";
|
||||||
|
|
||||||
|
"New Message" = "Yeni Mesaj";
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
//
|
||||||
|
// Created by Jesse Squires
|
||||||
|
// http://www.jessesquires.com
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Documentation
|
||||||
|
// http://cocoadocs.org/docsets/JSQMessagesViewController
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// GitHub
|
||||||
|
// https://github.com/jessesquires/JSQMessagesViewController
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// License
|
||||||
|
// Copyright (c) 2014 Jesse Squires
|
||||||
|
// Released under an MIT license: http://opensource.org/licenses/MIT
|
||||||
|
//
|
||||||
|
|
||||||
|
// ********************************
|
||||||
|
// Special thanks to the localization contributors!
|
||||||
|
//
|
||||||
|
// https://github.com/jessesquires/JSQMessagesViewController/issues/237
|
||||||
|
// ********************************
|
||||||
|
|
||||||
|
"Load Earlier Messages" = "载入较早的信息";
|
||||||
|
|
||||||
|
"Send" = "发送";
|
||||||
|
|
||||||
|
"New Message" = "新信息";
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
//
|
||||||
|
// Created by Jesse Squires
|
||||||
|
// http://www.jessesquires.com
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Documentation
|
||||||
|
// http://cocoadocs.org/docsets/JSQMessagesViewController
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// GitHub
|
||||||
|
// https://github.com/jessesquires/JSQMessagesViewController
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// License
|
||||||
|
// Copyright (c) 2014 Jesse Squires
|
||||||
|
// Released under an MIT license: http://opensource.org/licenses/MIT
|
||||||
|
//
|
||||||
|
|
||||||
|
// ********************************
|
||||||
|
// Special thanks to the localization contributors!
|
||||||
|
//
|
||||||
|
// https://github.com/jessesquires/JSQMessagesViewController/issues/237
|
||||||
|
// ********************************
|
||||||
|
|
||||||
|
"Load Earlier Messages" = "載入之前的訊息";
|
||||||
|
|
||||||
|
"Send" = "傳送";
|
||||||
|
|
||||||
|
"New Message" = "新信息";
|
||||||
BIN
JSQMessagesViewController/Assets/call_canceled@2x.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
JSQMessagesViewController/Assets/call_failed@2x.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
JSQMessagesViewController/Assets/call_incoming@2x.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
JSQMessagesViewController/Assets/call_outgoing@2x.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
JSQMessagesViewController/Assets/error_white@2x.png
Normal file
|
After Width: | Height: | Size: 7.6 KiB |
BIN
JSQMessagesViewController/Assets/warning_white@2x.png
Normal file
|
After Width: | Height: | Size: 7.1 KiB |
@ -18,8 +18,8 @@
|
|||||||
|
|
||||||
#import "JSQSystemSoundPlayer+JSQMessages.h"
|
#import "JSQSystemSoundPlayer+JSQMessages.h"
|
||||||
|
|
||||||
static NSString * const kJSQMessageReceivedSoundName = @"message_received";
|
static NSString * const kJSQMessageReceivedSoundName = @"JSQMessagesAssets.bundle/Sounds/message_received";
|
||||||
static NSString * const kJSQMessageSentSoundName = @"message_sent";
|
static NSString * const kJSQMessageSentSoundName = @"JSQMessagesAssets.bundle/Sounds/message_sent";
|
||||||
|
|
||||||
|
|
||||||
@implementation JSQSystemSoundPlayer (JSQMessages)
|
@implementation JSQSystemSoundPlayer (JSQMessages)
|
||||||
|
|||||||
@ -16,7 +16,7 @@
|
|||||||
// Released under an MIT license: http://opensource.org/licenses/MIT
|
// Released under an MIT license: http://opensource.org/licenses/MIT
|
||||||
//
|
//
|
||||||
|
|
||||||
@import Foundation;
|
#import <Foundation/Foundation.h>
|
||||||
|
|
||||||
@interface NSString (JSQMessages)
|
@interface NSString (JSQMessages)
|
||||||
|
|
||||||
|
|||||||
@ -16,7 +16,7 @@
|
|||||||
// Released under an MIT license: http://opensource.org/licenses/MIT
|
// Released under an MIT license: http://opensource.org/licenses/MIT
|
||||||
//
|
//
|
||||||
|
|
||||||
@import UIKit;
|
#import <UIKit/UIKit.h>
|
||||||
|
|
||||||
@interface UIColor (JSQMessages)
|
@interface UIColor (JSQMessages)
|
||||||
|
|
||||||
@ -32,11 +32,32 @@
|
|||||||
*/
|
*/
|
||||||
+ (UIColor *)jsq_messageBubbleBlueColor;
|
+ (UIColor *)jsq_messageBubbleBlueColor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return A color object containing HSB values similar to the iOS 7 red color.
|
||||||
|
*/
|
||||||
|
+ (UIColor *)jsq_messageBubbleRedColor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return A color object containing HSB values similar to the iOS 7 messages app light gray bubble color.
|
* @return A color object containing HSB values similar to the iOS 7 messages app light gray bubble color.
|
||||||
*/
|
*/
|
||||||
+ (UIColor *)jsq_messageBubbleLightGrayColor;
|
+ (UIColor *)jsq_messageBubbleLightGrayColor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return A color object containing HSB values similar to Signal gray bubble color.
|
||||||
|
*/
|
||||||
|
+ (UIColor *)jsq_messageBubbleGrayColor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return A color object containing HSB values similar to Signal light blue bubble color.
|
||||||
|
*/
|
||||||
|
+ (UIColor *)jsq_messageBubbleLightBlueColor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return A color object containing HSB values similar to Signal background gray color.
|
||||||
|
*/
|
||||||
|
+ (UIColor *)jsq_messageBackgroundGrayColor;
|
||||||
|
|
||||||
|
|
||||||
#pragma mark - Utilities
|
#pragma mark - Utilities
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -26,7 +26,7 @@
|
|||||||
{
|
{
|
||||||
return [UIColor colorWithHue:130.0f / 360.0f
|
return [UIColor colorWithHue:130.0f / 360.0f
|
||||||
saturation:0.68f
|
saturation:0.68f
|
||||||
brightness:0.80f
|
brightness:0.84f
|
||||||
alpha:1.0f];
|
alpha:1.0f];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -38,6 +38,14 @@
|
|||||||
alpha:1.0f];
|
alpha:1.0f];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
+ (UIColor *)jsq_messageBubbleRedColor
|
||||||
|
{
|
||||||
|
return [UIColor colorWithHue:0.0f / 360.0f
|
||||||
|
saturation:0.79f
|
||||||
|
brightness:1.0f
|
||||||
|
alpha:1.0f];
|
||||||
|
}
|
||||||
|
|
||||||
+ (UIColor *)jsq_messageBubbleLightGrayColor
|
+ (UIColor *)jsq_messageBubbleLightGrayColor
|
||||||
{
|
{
|
||||||
return [UIColor colorWithHue:240.0f / 360.0f
|
return [UIColor colorWithHue:240.0f / 360.0f
|
||||||
@ -46,6 +54,23 @@
|
|||||||
alpha:1.0f];
|
alpha:1.0f];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
+ (UIColor *)jsq_messageBubbleLightBlueColor
|
||||||
|
{
|
||||||
|
return [UIColor colorWithRed:137/255.f green:214/255.f blue:250/255.f alpha:1];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (UIColor *)jsq_messageBubbleGrayColor
|
||||||
|
{
|
||||||
|
return [UIColor colorWithRed:230/255.f green:230/255.f blue:230/255.f alpha:1];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (UIColor *)jsq_messageBackgroundGrayColor
|
||||||
|
{
|
||||||
|
return [UIColor colorWithRed:242.f/255 green:242.f/255 blue:242.f/255 alpha:1];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#pragma mark - Utilities
|
#pragma mark - Utilities
|
||||||
|
|
||||||
- (UIColor *)jsq_colorByDarkeningColorWithValue:(CGFloat)value
|
- (UIColor *)jsq_colorByDarkeningColorWithValue:(CGFloat)value
|
||||||
|
|||||||
@ -16,7 +16,7 @@
|
|||||||
// Released under an MIT license: http://opensource.org/licenses/MIT
|
// Released under an MIT license: http://opensource.org/licenses/MIT
|
||||||
//
|
//
|
||||||
|
|
||||||
@import UIKit;
|
#import <UIKit/UIKit.h>
|
||||||
|
|
||||||
@interface UIDevice (JSQMessages)
|
@interface UIDevice (JSQMessages)
|
||||||
|
|
||||||
|
|||||||
@ -16,7 +16,7 @@
|
|||||||
// Released under an MIT license: http://opensource.org/licenses/MIT
|
// Released under an MIT license: http://opensource.org/licenses/MIT
|
||||||
//
|
//
|
||||||
|
|
||||||
@import UIKit;
|
#import <UIKit/UIKit.h>
|
||||||
|
|
||||||
@interface UIImage (JSQMessages)
|
@interface UIImage (JSQMessages)
|
||||||
|
|
||||||
@ -61,4 +61,19 @@
|
|||||||
*/
|
*/
|
||||||
+ (UIImage *)jsq_bubbleCompactTaillessImage;
|
+ (UIImage *)jsq_bubbleCompactTaillessImage;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return The default input toolbar accessory image.
|
||||||
|
*/
|
||||||
|
+ (UIImage *)jsq_defaultAccessoryImage;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return The default typing indicator image.
|
||||||
|
*/
|
||||||
|
+ (UIImage *)jsq_defaultTypingIndicatorImage;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return The default play icon image.
|
||||||
|
*/
|
||||||
|
+ (UIImage *)jsq_defaultPlayImage;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@ -45,34 +45,55 @@
|
|||||||
return newImage;
|
return newImage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
+ (UIImage *)jsq_bubbleImageFromBundleWithName:(NSString *)name
|
||||||
|
{
|
||||||
|
return [UIImage imageNamed:[NSString stringWithFormat:@"JSQMessagesAssets.bundle/Images/%@", name]];
|
||||||
|
}
|
||||||
|
|
||||||
+ (UIImage *)jsq_bubbleRegularImage
|
+ (UIImage *)jsq_bubbleRegularImage
|
||||||
{
|
{
|
||||||
return [UIImage imageNamed:@"bubble"];
|
return [UIImage jsq_bubbleImageFromBundleWithName:@"bubble_regular"];
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (UIImage *)jsq_bubbleRegularTaillessImage
|
+ (UIImage *)jsq_bubbleRegularTaillessImage
|
||||||
{
|
{
|
||||||
return [UIImage imageNamed:@"bubble_tailless"];
|
return [UIImage jsq_bubbleImageFromBundleWithName:@"bubble_tailless"];
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (UIImage *)jsq_bubbleRegularStrokedImage
|
+ (UIImage *)jsq_bubbleRegularStrokedImage
|
||||||
{
|
{
|
||||||
return [UIImage imageNamed:@"bubble_stroked"];
|
return [UIImage jsq_bubbleImageFromBundleWithName:@"bubble_stroked"];
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (UIImage *)jsq_bubbleRegularStrokedTaillessImage
|
+ (UIImage *)jsq_bubbleRegularStrokedTaillessImage
|
||||||
{
|
{
|
||||||
return [UIImage imageNamed:@"bubble_stroked_tailless"];
|
return [UIImage jsq_bubbleImageFromBundleWithName:@"bubble_stroked_tailless"];
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (UIImage *)jsq_bubbleCompactImage
|
+ (UIImage *)jsq_bubbleCompactImage
|
||||||
{
|
{
|
||||||
return [UIImage imageNamed:@"bubble_min"];
|
return [UIImage jsq_bubbleImageFromBundleWithName:@"bubble_min"];
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (UIImage *)jsq_bubbleCompactTaillessImage
|
+ (UIImage *)jsq_bubbleCompactTaillessImage
|
||||||
{
|
{
|
||||||
return [UIImage imageNamed:@"bubble_min_tailless"];
|
return [UIImage jsq_bubbleImageFromBundleWithName:@"bubble_min_tailless"];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
+ (UIImage *)jsq_defaultAccessoryImage
|
||||||
|
{
|
||||||
|
return [UIImage jsq_bubbleImageFromBundleWithName:@"clip"];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (UIImage *)jsq_defaultTypingIndicatorImage
|
||||||
|
{
|
||||||
|
return [UIImage jsq_bubbleImageFromBundleWithName:@"typing"];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (UIImage *)jsq_defaultPlayImage
|
||||||
|
{
|
||||||
|
return [UIImage jsq_bubbleImageFromBundleWithName:@"play"];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@ -16,7 +16,7 @@
|
|||||||
// Released under an MIT license: http://opensource.org/licenses/MIT
|
// Released under an MIT license: http://opensource.org/licenses/MIT
|
||||||
//
|
//
|
||||||
|
|
||||||
@import UIKit;
|
#import <UIKit/UIKit.h>
|
||||||
|
|
||||||
@interface UIView (JSQMessages)
|
@interface UIView (JSQMessages)
|
||||||
|
|
||||||
|
|||||||
@ -21,8 +21,8 @@
|
|||||||
// https://github.com/danielamitay/DAKeyboardControl
|
// https://github.com/danielamitay/DAKeyboardControl
|
||||||
//
|
//
|
||||||
|
|
||||||
@import Foundation;
|
#import <Foundation/Foundation.h>
|
||||||
@import UIKit;
|
#import <UIKit/UIKit.h>
|
||||||
|
|
||||||
@class JSQMessagesKeyboardController;
|
@class JSQMessagesKeyboardController;
|
||||||
|
|
||||||
@ -59,6 +59,13 @@ FOUNDATION_EXPORT NSString * const JSQMessagesKeyboardControllerUserInfoKeyKeybo
|
|||||||
*/
|
*/
|
||||||
- (void)keyboardController:(JSQMessagesKeyboardController *)keyboardController keyboardDidChangeFrame:(CGRect)keyboardFrame;
|
- (void)keyboardController:(JSQMessagesKeyboardController *)keyboardController keyboardDidChangeFrame:(CGRect)keyboardFrame;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tells the delegate that the keyboard has been hidden.
|
||||||
|
*
|
||||||
|
* @param keyboardController The keyboard controller that is notifying the delegate.
|
||||||
|
*/
|
||||||
|
- (void)keyboardControllerKeyboardDidHide:(JSQMessagesKeyboardController *)keyboardController;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
|
||||||
|
|||||||