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 */; };
|
||||
77CC17A895E6E12BC9CB549A /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 97E6750B77E8A7042BA0754B /* libPods.a */; };
|
||||
88078A9D19D8FEB5005B4595 /* JSQMessagesMediaPlaceholderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 88078A9C19D8FEB5005B4595 /* JSQMessagesMediaPlaceholderView.m */; };
|
||||
88078AA119D8FFEA005B4595 /* clip.png in Resources */ = {isa = PBXBuildFile; fileRef = 88078A9E19D8FFEA005B4595 /* clip.png */; };
|
||||
88078AA219D8FFEA005B4595 /* clip@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 88078A9F19D8FFEA005B4595 /* clip@2x.png */; };
|
||||
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 */; };
|
||||
88324C3419F6301C00BC732D /* JSQMessagesMediaViewBubbleImageMaskerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88324C3319F6301C00BC732D /* JSQMessagesMediaViewBubbleImageMaskerTests.m */; };
|
||||
883C11781A09FB100092A16D /* JSQMessagesCellTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 883C11771A09FB100092A16D /* JSQMessagesCellTextView.m */; };
|
||||
88445B3119E0AE3F0014F889 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 88445B3019E0AE3F0014F889 /* UIKit.framework */; };
|
||||
88445B3319E0AE450014F889 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 88445B3219E0AE450014F889 /* Foundation.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 */; };
|
||||
88445B4519E1B5210014F889 /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 88445B4119E1B50B0014F889 /* CoreLocation.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 */; };
|
||||
8846441919EB15B2001EBA43 /* bubble_min_tailless@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8846441519EB15B2001EBA43 /* bubble_min_tailless@3x.png */; };
|
||||
8846441A19EB15B2001EBA43 /* bubble_min@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8846441619EB15B2001EBA43 /* bubble_min@3x.png */; };
|
||||
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 */; };
|
||||
8861666D19F492B70025B958 /* JSQMessagesAssets.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 8861666C19F492B70025B958 /* JSQMessagesAssets.bundle */; };
|
||||
886C33FD19F4371E006B4997 /* JSQVideoMediaItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 886C33FC19F4371E006B4997 /* JSQVideoMediaItem.m */; };
|
||||
886C33FF19F45E30006B4997 /* JSQMessagesViewController.podspec in Resources */ = {isa = PBXBuildFile; fileRef = 886C33FE19F45E30006B4997 /* JSQMessagesViewController.podspec */; };
|
||||
886FFD2E19E9A65D00EB8485 /* UIDevice+JSQMessages.m in Sources */ = {isa = PBXBuildFile; fileRef = 886FFD2D19E9A65D00EB8485 /* UIDevice+JSQMessages.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 */; };
|
||||
@ -49,14 +36,6 @@
|
||||
88A25F3919D8DF2500924534 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 88A25F3019D8DF2500924534 /* Main.storyboard */; };
|
||||
88A25F3A19D8DF2500924534 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 88A25F3219D8DF2500924534 /* Images.xcassets */; };
|
||||
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 */; };
|
||||
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 */; };
|
||||
@ -72,18 +51,14 @@
|
||||
88A25FC119D8E01A00924534 /* JSQMessagesCollectionViewFlowLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F7119D8E01A00924534 /* JSQMessagesCollectionViewFlowLayout.m */; };
|
||||
88A25FC219D8E01A00924534 /* JSQMessagesCollectionViewFlowLayoutInvalidationContext.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F7319D8E01A00924534 /* JSQMessagesCollectionViewFlowLayoutInvalidationContext.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 */; };
|
||||
88A25FC619D8E01A00924534 /* JSQMessagesAvatarImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F8019D8E01A00924534 /* JSQMessagesAvatarImage.m */; };
|
||||
88A25FC719D8E01A00924534 /* JSQMessagesBubbleImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F8219D8E01A00924534 /* JSQMessagesBubbleImage.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 */; };
|
||||
88A25FCB19D8E01A00924534 /* JSQMessagesCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F8D19D8E01A00924534 /* JSQMessagesCollectionViewCell.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 */; };
|
||||
88A25FCF19D8E01A00924534 /* JSQMessagesCollectionViewCellOutgoing.xib in Resources */ = {isa = PBXBuildFile; fileRef = 88A25F9319D8E01A00924534 /* JSQMessagesCollectionViewCellOutgoing.xib */; };
|
||||
88A25FD019D8E01A00924534 /* JSQMessagesComposerTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F9519D8E01A00924534 /* JSQMessagesComposerTextView.m */; };
|
||||
88A25FD119D8E01A00924534 /* JSQMessagesInputToolbar.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25F9719D8E01A00924534 /* JSQMessagesInputToolbar.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 */; };
|
||||
88A2600B19D8E18400924534 /* JSQMessagesCollectionViewFlowLayoutTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25FF019D8E18400924534 /* JSQMessagesCollectionViewFlowLayoutTests.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 */; };
|
||||
88A2600F19D8E18400924534 /* JSQMessagesBubbleImageTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25FF519D8E18400924534 /* JSQMessagesBubbleImageTests.m */; };
|
||||
88A2601019D8E18400924534 /* JSQMessageTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25FF619D8E18400924534 /* JSQMessageTests.m */; };
|
||||
88A2601119D8E18400924534 /* JSQTextMessageTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25FF719D8E18400924534 /* JSQTextMessageTests.m */; };
|
||||
88A2601019D8E18400924534 /* JSQMessageTextTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25FF619D8E18400924534 /* JSQMessageTextTests.m */; };
|
||||
88A2601219D8E18400924534 /* JSQMessagesCollectionViewCellTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25FF919D8E18400924534 /* JSQMessagesCollectionViewCellTests.m */; };
|
||||
88A2601319D8E18400924534 /* JSQMessagesCollectionViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A25FFA19D8E18400924534 /* JSQMessagesCollectionViewTests.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 */; };
|
||||
88A2601919D8E18400924534 /* JSQMessagesTypingIndicatorFooterViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A2600019D8E18400924534 /* JSQMessagesTypingIndicatorFooterViewTests.m */; };
|
||||
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 */; };
|
||||
88AE58EE19E77FBF0042B0DE /* bubble_stroked_tailless@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 88AE58EA19E77FBF0042B0DE /* bubble_stroked_tailless@2x.png */; };
|
||||
88AE58EF19E77FBF0042B0DE /* bubble_stroked.png in Resources */ = {isa = PBXBuildFile; fileRef = 88AE58EB19E77FBF0042B0DE /* bubble_stroked.png */; };
|
||||
88AE58F019E77FBF0042B0DE /* bubble_stroked@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 88AE58EC19E77FBF0042B0DE /* bubble_stroked@2x.png */; };
|
||||
88A901B619F618B100F99777 /* JSQMediaItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A901B519F618B100F99777 /* JSQMediaItem.m */; };
|
||||
88C00A4E1A44D4C600B004B3 /* JSQLocationMediaItemTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88C00A4D1A44D4C600B004B3 /* JSQLocationMediaItemTests.m */; };
|
||||
88C00A501A44D4D800B004B3 /* JSQPhotoMediaItemTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88C00A4F1A44D4D800B004B3 /* JSQPhotoMediaItemTests.m */; };
|
||||
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 */; };
|
||||
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 */
|
||||
|
||||
/* 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; };
|
||||
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>"; };
|
||||
88078A9E19D8FFEA005B4595 /* clip.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = clip.png; sourceTree = "<group>"; };
|
||||
88078A9F19D8FFEA005B4595 /* clip@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "clip@2x.png"; sourceTree = "<group>"; };
|
||||
88078AA019D8FFEA005B4595 /* clip@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "clip@3x.png"; sourceTree = "<group>"; };
|
||||
88078AA419D9034F005B4595 /* typing@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "typing@3x.png"; sourceTree = "<group>"; };
|
||||
88078AA519D9034F005B4595 /* typing@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "typing@2x.png"; sourceTree = "<group>"; };
|
||||
88078AA619D9034F005B4595 /* typing.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = typing.png; sourceTree = "<group>"; };
|
||||
88324C3319F6301C00BC732D /* JSQMessagesMediaViewBubbleImageMaskerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesMediaViewBubbleImageMaskerTests.m; sourceTree = "<group>"; };
|
||||
883C11761A09FB100092A16D /* JSQMessagesCellTextView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQMessagesCellTextView.h; sourceTree = "<group>"; };
|
||||
883C11771A09FB100092A16D /* JSQMessagesCellTextView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesCellTextView.m; sourceTree = "<group>"; };
|
||||
8841B88619F4988800EA16B6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Base.lproj/JSQMessages.strings; sourceTree = "<group>"; };
|
||||
8841B88819F4988900EA16B6 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/JSQMessages.strings; 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; };
|
||||
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; };
|
||||
@ -161,19 +166,10 @@
|
||||
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; };
|
||||
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>"; };
|
||||
8846441519EB15B2001EBA43 /* bubble_min_tailless@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "bubble_min_tailless@3x.png"; sourceTree = "<group>"; };
|
||||
8846441619EB15B2001EBA43 /* bubble_min@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "bubble_min@3x.png"; sourceTree = "<group>"; };
|
||||
8846441719EB15B2001EBA43 /* bubble_stroked_tailless@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "bubble_stroked_tailless@3x.png"; 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>"; };
|
||||
8861666C19F492B70025B958 /* JSQMessagesAssets.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = JSQMessagesAssets.bundle; sourceTree = "<group>"; };
|
||||
886C33FB19F4371E006B4997 /* JSQVideoMediaItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQVideoMediaItem.h; sourceTree = "<group>"; };
|
||||
886C33FC19F4371E006B4997 /* JSQVideoMediaItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQVideoMediaItem.m; sourceTree = "<group>"; };
|
||||
886C33FE19F45E30006B4997 /* JSQMessagesViewController.podspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = JSQMessagesViewController.podspec; 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>"; };
|
||||
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>"; };
|
||||
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>"; };
|
||||
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>"; };
|
||||
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>"; };
|
||||
@ -226,8 +214,6 @@
|
||||
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>"; };
|
||||
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>"; };
|
||||
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>"; };
|
||||
@ -242,18 +228,14 @@
|
||||
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>"; };
|
||||
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>"; };
|
||||
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>"; };
|
||||
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>"; };
|
||||
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>"; };
|
||||
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>"; };
|
||||
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>"; };
|
||||
@ -287,11 +269,10 @@
|
||||
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>"; };
|
||||
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>"; };
|
||||
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>"; };
|
||||
88A25FF719D8E18400924534 /* JSQTextMessageTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQTextMessageTests.m; sourceTree = "<group>"; };
|
||||
88A25FF619D8E18400924534 /* JSQMessageTextTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessageTextTests.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>"; };
|
||||
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>"; };
|
||||
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>"; };
|
||||
88AE58E919E77FBF0042B0DE /* bubble_stroked_tailless.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bubble_stroked_tailless.png; sourceTree = "<group>"; };
|
||||
88AE58EA19E77FBF0042B0DE /* bubble_stroked_tailless@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "bubble_stroked_tailless@2x.png"; sourceTree = "<group>"; };
|
||||
88AE58EB19E77FBF0042B0DE /* bubble_stroked.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bubble_stroked.png; sourceTree = "<group>"; };
|
||||
88AE58EC19E77FBF0042B0DE /* bubble_stroked@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "bubble_stroked@2x.png"; sourceTree = "<group>"; };
|
||||
88A901B419F618B100F99777 /* JSQMediaItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQMediaItem.h; sourceTree = "<group>"; };
|
||||
88A901B519F618B100F99777 /* JSQMediaItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMediaItem.m; sourceTree = "<group>"; };
|
||||
88C00A4D1A44D4C600B004B3 /* JSQLocationMediaItemTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQLocationMediaItemTests.m; 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; };
|
||||
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>"; };
|
||||
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 */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
@ -368,15 +375,24 @@
|
||||
88445B3A19E0C0B10014F889 /* XCTest.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
path = ../..;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8841B88219F4983C00EA16B6 /* Strings */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8841B88719F4988800EA16B6 /* JSQMessages.strings */,
|
||||
);
|
||||
path = Strings;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
88A25EF919D8DEC400924534 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
886C33FE19F45E30006B4997 /* JSQMessagesViewController.podspec */,
|
||||
88A25F3E19D8E01A00924534 /* JSQMessagesViewController */,
|
||||
88A25F1E19D8DEC500924534 /* JSQMessagesTests */,
|
||||
88A25F2B19D8DF2500924534 /* JSQMessagesDemo */,
|
||||
636A8663AEEE5C37B65C515D /* Frameworks */,
|
||||
88A25F1E19D8DEC500924534 /* JSQMessagesTests */,
|
||||
2BBEF3CD91C31A49E5FF9E3C /* Pods */,
|
||||
88A25F0319D8DEC400924534 /* Products */,
|
||||
);
|
||||
@ -454,55 +470,14 @@
|
||||
88A25F3F19D8E01A00924534 /* Assets */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
88A25F4019D8E01A00924534 /* Images */,
|
||||
88A25F5119D8E01A00924534 /* Sounds */,
|
||||
FCA52AFB1A2B9BAD00CCADFA /* InfoError */,
|
||||
FCA52AF01A2B6F8A00CCADFA /* Calls */,
|
||||
8841B88219F4983C00EA16B6 /* Strings */,
|
||||
8861666C19F492B70025B958 /* JSQMessagesAssets.bundle */,
|
||||
);
|
||||
path = Assets;
|
||||
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 */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@ -541,6 +516,8 @@
|
||||
88A25F6719D8E01A00924534 /* JSQMessagesAvatarImageFactory.m */,
|
||||
88A25F6819D8E01A00924534 /* JSQMessagesBubbleImageFactory.h */,
|
||||
88A25F6919D8E01A00924534 /* JSQMessagesBubbleImageFactory.m */,
|
||||
88C4582E19F5F7A0008FD427 /* JSQMessagesMediaViewBubbleImageMasker.h */,
|
||||
88C4582F19F5F7A0008FD427 /* JSQMessagesMediaViewBubbleImageMasker.m */,
|
||||
88A25F6A19D8E01A00924534 /* JSQMessagesTimestampFormatter.h */,
|
||||
88A25F6B19D8E01A00924534 /* JSQMessagesTimestampFormatter.m */,
|
||||
88A25F6C19D8E01A00924534 /* JSQMessagesToolbarButtonFactory.h */,
|
||||
@ -567,8 +544,8 @@
|
||||
children = (
|
||||
88445B3E19E1B4470014F889 /* JSQLocationMediaItem.h */,
|
||||
88445B3F19E1B4470014F889 /* JSQLocationMediaItem.m */,
|
||||
88A25F7719D8E01A00924534 /* JSQMediaMessage.h */,
|
||||
88A25F7819D8E01A00924534 /* JSQMediaMessage.m */,
|
||||
88A901B419F618B100F99777 /* JSQMediaItem.h */,
|
||||
88A901B519F618B100F99777 /* JSQMediaItem.m */,
|
||||
88A25F7919D8E01A00924534 /* JSQMessage.h */,
|
||||
88A25F7A19D8E01A00924534 /* JSQMessage.m */,
|
||||
88A25F7B19D8E01A00924534 /* JSQMessageAvatarImageDataSource.h */,
|
||||
@ -583,10 +560,16 @@
|
||||
88A25F8419D8E01A00924534 /* JSQMessagesCollectionViewDelegateFlowLayout.h */,
|
||||
88A25F8519D8E01A00924534 /* JSQPhotoMediaItem.h */,
|
||||
88A25F8619D8E01A00924534 /* JSQPhotoMediaItem.m */,
|
||||
88A25F8719D8E01A00924534 /* JSQTextMessage.h */,
|
||||
88A25F8819D8E01A00924534 /* JSQTextMessage.m */,
|
||||
8846442C19EB2BF4001EBA43 /* JSQVideoMediaitem.h */,
|
||||
8846442D19EB2BF4001EBA43 /* JSQVideoMediaitem.m */,
|
||||
886C33FB19F4371E006B4997 /* JSQVideoMediaItem.h */,
|
||||
886C33FC19F4371E006B4997 /* JSQVideoMediaItem.m */,
|
||||
FC4FA0381A1E1BD100DA100A /* JSQCall.h */,
|
||||
FC4FA0391A1E1BD100DA100A /* JSQCall.m */,
|
||||
FCFA5E111A29FC1000C8E32E /* JSQDisplayedMessage.h */,
|
||||
FCFA5E121A29FC1000C8E32E /* JSQDisplayedMessage.m */,
|
||||
FCFA5E141A29FE3B00C8E32E /* JSQInfoMessage.h */,
|
||||
FCFA5E151A29FE3B00C8E32E /* JSQInfoMessage.m */,
|
||||
FCFA5E171A2A044500C8E32E /* JSQErrorMessage.h */,
|
||||
FCFA5E181A2A044500C8E32E /* JSQErrorMessage.m */,
|
||||
);
|
||||
path = Model;
|
||||
sourceTree = "<group>";
|
||||
@ -594,16 +577,19 @@
|
||||
88A25F8919D8E01A00924534 /* Views */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
636A8663AEEE5C37B65C515D /* Frameworks */,
|
||||
883C11761A09FB100092A16D /* JSQMessagesCellTextView.h */,
|
||||
883C11771A09FB100092A16D /* JSQMessagesCellTextView.m */,
|
||||
88A25F8A19D8E01A00924534 /* JSQMessagesCollectionView.h */,
|
||||
88A25F8B19D8E01A00924534 /* JSQMessagesCollectionView.m */,
|
||||
88A25F8C19D8E01A00924534 /* JSQMessagesCollectionViewCell.h */,
|
||||
88A25F8D19D8E01A00924534 /* JSQMessagesCollectionViewCell.m */,
|
||||
88A25F8E19D8E01A00924534 /* JSQMessagesCollectionViewCellIncoming.h */,
|
||||
88A25F8F19D8E01A00924534 /* JSQMessagesCollectionViewCellIncoming.m */,
|
||||
88A25F9019D8E01A00924534 /* JSQMessagesCollectionViewCellIncoming.xib */,
|
||||
FC15B7AE1A1F6AC800F59801 /* JSQMessagesCollectionViewCellIncoming.xib */,
|
||||
88A25F9119D8E01A00924534 /* JSQMessagesCollectionViewCellOutgoing.h */,
|
||||
88A25F9219D8E01A00924534 /* JSQMessagesCollectionViewCellOutgoing.m */,
|
||||
88A25F9319D8E01A00924534 /* JSQMessagesCollectionViewCellOutgoing.xib */,
|
||||
FC15B7AF1A1F6AC800F59801 /* JSQMessagesCollectionViewCellOutgoing.xib */,
|
||||
88A25F9419D8E01A00924534 /* JSQMessagesComposerTextView.h */,
|
||||
88A25F9519D8E01A00924534 /* JSQMessagesComposerTextView.m */,
|
||||
88A25F9619D8E01A00924534 /* JSQMessagesInputToolbar.h */,
|
||||
@ -621,6 +607,12 @@
|
||||
88A25FA019D8E01A00924534 /* JSQMessagesTypingIndicatorFooterView.h */,
|
||||
88A25FA119D8E01A00924534 /* JSQMessagesTypingIndicatorFooterView.m */,
|
||||
88A25FA219D8E01A00924534 /* JSQMessagesTypingIndicatorFooterView.xib */,
|
||||
FC4FA03B1A1E81AF00DA100A /* JSQCallCollectionViewCell.h */,
|
||||
FC4FA03C1A1E81AF00DA100A /* JSQCallCollectionViewCell.m */,
|
||||
FC15B7A81A1E880900F59801 /* JSQCallCollectionViewCell.xib */,
|
||||
FCFA5E1A1A2A08E500C8E32E /* JSQDisplayedMessageCollectionViewCell.h */,
|
||||
FCFA5E1B1A2A08E500C8E32E /* JSQDisplayedMessageCollectionViewCell.m */,
|
||||
FCFA5E1C1A2A08E500C8E32E /* JSQDisplayedMessageCollectionViewCell.xib */,
|
||||
);
|
||||
path = Views;
|
||||
sourceTree = "<group>";
|
||||
@ -650,6 +642,7 @@
|
||||
children = (
|
||||
88A25FEB19D8E18400924534 /* JSQMessagesAvatarImageFactoryTests.m */,
|
||||
88A25FEC19D8E18400924534 /* JSQMessagesBubbleImageFactoryTests.m */,
|
||||
88324C3319F6301C00BC732D /* JSQMessagesMediaViewBubbleImageMaskerTests.m */,
|
||||
88A25FED19D8E18400924534 /* JSQMessagesTimestampFormatterTests.m */,
|
||||
88A25FEE19D8E18400924534 /* JSQMessagesToolbarButtonFactoryTests.m */,
|
||||
);
|
||||
@ -668,11 +661,13 @@
|
||||
88A25FF219D8E18400924534 /* ModelTests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
88A25FF319D8E18400924534 /* JSQMediaMessageTests.m */,
|
||||
88C00A4D1A44D4C600B004B3 /* JSQLocationMediaItemTests.m */,
|
||||
88A25FF319D8E18400924534 /* JSQMessageMediaTests.m */,
|
||||
88A25FF419D8E18400924534 /* JSQMessagesAvatarImageTests.m */,
|
||||
88A25FF519D8E18400924534 /* JSQMessagesBubbleImageTests.m */,
|
||||
88A25FF619D8E18400924534 /* JSQMessageTests.m */,
|
||||
88A25FF719D8E18400924534 /* JSQTextMessageTests.m */,
|
||||
88A25FF619D8E18400924534 /* JSQMessageTextTests.m */,
|
||||
88C00A4F1A44D4D800B004B3 /* JSQPhotoMediaItemTests.m */,
|
||||
88C00A511A44D4E500B004B3 /* JSQVideoMediaItemTests.m */,
|
||||
);
|
||||
path = ModelTests;
|
||||
sourceTree = "<group>";
|
||||
@ -692,6 +687,27 @@
|
||||
path = ViewTests;
|
||||
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 */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
@ -759,6 +775,19 @@
|
||||
knownRegions = (
|
||||
en,
|
||||
Base,
|
||||
es,
|
||||
de,
|
||||
"zh-Hans",
|
||||
"zh-Hant",
|
||||
ro,
|
||||
ru,
|
||||
pl,
|
||||
pt,
|
||||
fr,
|
||||
it,
|
||||
he,
|
||||
nl,
|
||||
tr,
|
||||
);
|
||||
mainGroup = 88A25EF919D8DEC400924534;
|
||||
productRefGroup = 88A25F0319D8DEC400924534 /* Products */;
|
||||
@ -776,43 +805,26 @@
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
88078AA919D9034F005B4595 /* typing.png in Resources */,
|
||||
8846441919EB15B2001EBA43 /* bubble_min_tailless@3x.png in Resources */,
|
||||
88078AA719D9034F005B4595 /* typing@3x.png in Resources */,
|
||||
8846441B19EB15B2001EBA43 /* bubble_stroked_tailless@3x.png 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 */,
|
||||
88E4D7131A0DBD6B000CC061 /* JSQMessages.strings in Resources */,
|
||||
886C33FF19F45E30006B4997 /* JSQMessagesViewController.podspec in Resources */,
|
||||
8861666D19F492B70025B958 /* JSQMessagesAssets.bundle in Resources */,
|
||||
FC15B7B11A1F6AC800F59801 /* JSQMessagesCollectionViewCellOutgoing.xib in Resources */,
|
||||
88A25FD619D8E01A00924534 /* JSQMessagesToolbarContentView.xib in Resources */,
|
||||
FCA52AF71A2B6FAE00CCADFA /* call_incoming@2x.png in Resources */,
|
||||
88A25F3A19D8DF2500924534 /* Images.xcassets in Resources */,
|
||||
88A25FBC19D8E01A00924534 /* JSQMessagesViewController.xib in Resources */,
|
||||
8846442A19EB18A5001EBA43 /* bubble_tailless@2x.png in Resources */,
|
||||
88078AA219D8FFEA005B4595 /* clip@2x.png in Resources */,
|
||||
88A25FA419D8E01A00924534 /* bubble@2x.png in Resources */,
|
||||
88078AA319D8FFEA005B4595 /* clip@3x.png in Resources */,
|
||||
88A25FA819D8E01A00924534 /* bubble_min_tailless@2x.png in Resources */,
|
||||
FCA52AF81A2B6FAE00CCADFA /* call_outgoing@2x.png in Resources */,
|
||||
FCA52B021A2B9F0E00CCADFA /* warning_white@2x.png in Resources */,
|
||||
FCA52AF51A2B6FAE00CCADFA /* call_canceled@2x.png in Resources */,
|
||||
FCA52B031A2B9F0E00CCADFA /* error_white@2x.png in Resources */,
|
||||
FCA52AEF1A2B6ECE00CCADFA /* call_missed@2x.png in Resources */,
|
||||
88A25FD819D8E01A00924534 /* JSQMessagesTypingIndicatorFooterView.xib in Resources */,
|
||||
88AE58F019E77FBF0042B0DE /* bubble_stroked@2x.png in Resources */,
|
||||
88A25FB419D8E01A00924534 /* message_sent.aiff in Resources */,
|
||||
FCFA5E1E1A2A08E500C8E32E /* JSQDisplayedMessageCollectionViewCell.xib in Resources */,
|
||||
88A25F3919D8DF2500924534 /* Main.storyboard in Resources */,
|
||||
FC15B7B01A1F6AC800F59801 /* JSQMessagesCollectionViewCellIncoming.xib in Resources */,
|
||||
88A25FD419D8E01A00924534 /* JSQMessagesLoadEarlierHeaderView.xib in Resources */,
|
||||
8846442519EB1830001EBA43 /* bubble@3x.png in Resources */,
|
||||
88078AA819D9034F005B4595 /* typing@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 */,
|
||||
FC15B7A91A1E880900F59801 /* JSQCallCollectionViewCell.xib in Resources */,
|
||||
FCA52AF61A2B6FAE00CCADFA /* call_failed@2x.png in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@ -900,7 +912,9 @@
|
||||
88A25FCB19D8E01A00924534 /* JSQMessagesCollectionViewCell.m in Sources */,
|
||||
88A25FBB19D8E01A00924534 /* JSQMessagesViewController.m in Sources */,
|
||||
8885734D19DE55D000E89D20 /* NSUserDefaults+DemoSettings.m in Sources */,
|
||||
883C11781A09FB100092A16D /* JSQMessagesCellTextView.m in Sources */,
|
||||
88A25FB919D8E01A00924534 /* UIView+JSQMessages.m in Sources */,
|
||||
FCFA5E131A29FC1000C8E32E /* JSQDisplayedMessage.m in Sources */,
|
||||
88A25FCA19D8E01A00924534 /* JSQMessagesCollectionView.m in Sources */,
|
||||
88A25FD219D8E01A00924534 /* JSQMessagesLabel.m in Sources */,
|
||||
88445B4019E1B4470014F889 /* JSQLocationMediaItem.m in Sources */,
|
||||
@ -908,28 +922,33 @@
|
||||
88A25FD519D8E01A00924534 /* JSQMessagesToolbarContentView.m in Sources */,
|
||||
88A25FC119D8E01A00924534 /* JSQMessagesCollectionViewFlowLayout.m in Sources */,
|
||||
8885734A19DE540400E89D20 /* DemoSettingsViewController.m in Sources */,
|
||||
FC4FA03A1A1E1BD100DA100A /* JSQCall.m in Sources */,
|
||||
88A25FC719D8E01A00924534 /* JSQMessagesBubbleImage.m in Sources */,
|
||||
88A25FC519D8E01A00924534 /* JSQMessage.m in Sources */,
|
||||
88A25FD719D8E01A00924534 /* JSQMessagesTypingIndicatorFooterView.m in Sources */,
|
||||
88A25FD319D8E01A00924534 /* JSQMessagesLoadEarlierHeaderView.m in Sources */,
|
||||
FC4FA03D1A1E81AF00DA100A /* JSQCallCollectionViewCell.m in Sources */,
|
||||
88A25FC819D8E01A00924534 /* JSQPhotoMediaItem.m in Sources */,
|
||||
88C4583019F5F7A0008FD427 /* JSQMessagesMediaViewBubbleImageMasker.m in Sources */,
|
||||
88A25FB819D8E01A00924534 /* UIImage+JSQMessages.m in Sources */,
|
||||
88A25FBF19D8E01A00924534 /* JSQMessagesTimestampFormatter.m in Sources */,
|
||||
88A25FE019D8E0C400924534 /* DemoModelData.m in Sources */,
|
||||
FCFA5E1D1A2A08E500C8E32E /* JSQDisplayedMessageCollectionViewCell.m in Sources */,
|
||||
88A25F3C19D8DF2500924534 /* main.m in Sources */,
|
||||
88A25F3719D8DF2500924534 /* AppDelegate.m in Sources */,
|
||||
886FFD2E19E9A65D00EB8485 /* UIDevice+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 */,
|
||||
88A25FBE19D8E01A00924534 /* JSQMessagesBubbleImageFactory.m in Sources */,
|
||||
88A25FDF19D8E0C400924534 /* DemoMessagesViewController.m in Sources */,
|
||||
88A25FB719D8E01A00924534 /* UIColor+JSQMessages.m in Sources */,
|
||||
886C33FD19F4371E006B4997 /* JSQVideoMediaItem.m in Sources */,
|
||||
88A25FBA19D8E01A00924534 /* JSQMessagesKeyboardController.m in Sources */,
|
||||
FCFA5E161A29FE3B00C8E32E /* JSQInfoMessage.m in Sources */,
|
||||
88A25FC019D8E01A00924534 /* JSQMessagesToolbarButtonFactory.m in Sources */,
|
||||
88A25FC919D8E01A00924534 /* JSQTextMessage.m in Sources */,
|
||||
88A25FC419D8E01A00924534 /* JSQMediaMessage.m in Sources */,
|
||||
88A25FC219D8E01A00924534 /* JSQMessagesCollectionViewFlowLayoutInvalidationContext.m in Sources */,
|
||||
8846442E19EB2BF4001EBA43 /* JSQVideoMediaitem.m in Sources */,
|
||||
88A25FE119D8E0C400924534 /* TableViewController.m in Sources */,
|
||||
88A25FBD19D8E01A00924534 /* JSQMessagesAvatarImageFactory.m in Sources */,
|
||||
88A25FB519D8E01A00924534 /* JSQSystemSoundPlayer+JSQMessages.m in Sources */,
|
||||
@ -944,13 +963,14 @@
|
||||
files = (
|
||||
88A2600219D8E18400924534 /* JSQMessagesUIColorTests.m in Sources */,
|
||||
88A2601819D8E18400924534 /* JSQMessagesToolbarContentViewTests.m in Sources */,
|
||||
88C00A521A44D4E500B004B3 /* JSQVideoMediaItemTests.m in Sources */,
|
||||
88A2601519D8E18400924534 /* JSQMessagesInputToolbarTests.m in Sources */,
|
||||
88A2601719D8E18400924534 /* JSQMessagesLoadEarlierHeaderViewTests.m in Sources */,
|
||||
88A2601219D8E18400924534 /* JSQMessagesCollectionViewCellTests.m in Sources */,
|
||||
88A2601619D8E18400924534 /* JSQMessagesLabelTests.m in Sources */,
|
||||
88A2600B19D8E18400924534 /* JSQMessagesCollectionViewFlowLayoutTests.m in Sources */,
|
||||
88A2601019D8E18400924534 /* JSQMessageTests.m in Sources */,
|
||||
88A2600D19D8E18400924534 /* JSQMediaMessageTests.m in Sources */,
|
||||
88A2601019D8E18400924534 /* JSQMessageTextTests.m in Sources */,
|
||||
88A2600D19D8E18400924534 /* JSQMessageMediaTests.m in Sources */,
|
||||
88A2600719D8E18400924534 /* JSQMessagesAvatarImageFactoryTests.m in Sources */,
|
||||
88A2600419D8E18400924534 /* JSQMessagesUIViewTests.m in Sources */,
|
||||
88A2600F19D8E18400924534 /* JSQMessagesBubbleImageTests.m in Sources */,
|
||||
@ -959,10 +979,12 @@
|
||||
88A2601419D8E18400924534 /* JSQMessagesComposerTextViewTests.m in Sources */,
|
||||
88A2601319D8E18400924534 /* JSQMessagesCollectionViewTests.m in Sources */,
|
||||
88A2600119D8E18400924534 /* JSQMessagesNSStringTests.m in Sources */,
|
||||
88A2601119D8E18400924534 /* JSQTextMessageTests.m in Sources */,
|
||||
88A2600A19D8E18400924534 /* JSQMessagesToolbarButtonFactoryTests.m in Sources */,
|
||||
88C00A501A44D4D800B004B3 /* JSQPhotoMediaItemTests.m in Sources */,
|
||||
88324C3419F6301C00BC732D /* JSQMessagesMediaViewBubbleImageMaskerTests.m in Sources */,
|
||||
88A2601919D8E18400924534 /* JSQMessagesTypingIndicatorFooterViewTests.m in Sources */,
|
||||
88A2600319D8E18400924534 /* JSQMessagesUIImageTests.m in Sources */,
|
||||
88C00A4E1A44D4C600B004B3 /* JSQLocationMediaItemTests.m in Sources */,
|
||||
88A2600C19D8E18400924534 /* JSQMessagesCollectionViewLayoutAttributesTests.m in Sources */,
|
||||
88A2600619D8E18400924534 /* JSQMessagesViewControllerTests.m in Sources */,
|
||||
88A2600519D8E18400924534 /* JSQMessagesKeyboardControllerTests.m in Sources */,
|
||||
@ -981,6 +1003,28 @@
|
||||
/* End PBXTargetDependency 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 */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
@ -1077,11 +1121,14 @@
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
|
||||
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";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
OTHER_LDFLAGS = "$(inherited)";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE = "";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
@ -1092,11 +1139,14 @@
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
|
||||
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";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
OTHER_LDFLAGS = "$(inherited)";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE = "";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
|
||||
@ -16,8 +16,8 @@
|
||||
// Released under an MIT license: http://opensource.org/licenses/MIT
|
||||
//
|
||||
|
||||
@import Foundation;
|
||||
@import UIKit;
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface AppDelegate : UIResponder <UIApplicationDelegate>
|
||||
|
||||
|
||||
@ -45,6 +45,4 @@
|
||||
|
||||
- (void)closePressed:(UIBarButtonItem *)sender;
|
||||
|
||||
// TODO: example of async avatar loading
|
||||
|
||||
@end
|
||||
|
||||
@ -18,6 +18,12 @@
|
||||
|
||||
#import "DemoMessagesViewController.h"
|
||||
|
||||
#import "JSQCallCollectionViewCell.h"
|
||||
#import "JSQCall.h"
|
||||
|
||||
#import "JSQDisplayedMessageCollectionViewCell.h"
|
||||
#import "JSQErrorMessage.h"
|
||||
#import "JSQInfoMessage.h"
|
||||
|
||||
@implementation DemoMessagesViewController
|
||||
|
||||
@ -43,7 +49,7 @@
|
||||
*/
|
||||
self.senderId = kJSQDemoAvatarIdSquires;
|
||||
self.senderDisplayName = kJSQDemoAvatarDisplayNameSquires;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Load up our fake data for the demo
|
||||
@ -62,10 +68,19 @@
|
||||
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
|
||||
target:self
|
||||
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
|
||||
@ -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
|
||||
|
||||
- (void)receiveMessagePressed:(UIBarButtonItem *)sender
|
||||
@ -121,9 +146,9 @@
|
||||
JSQMessage *copyMessage = [[self.demoData.messages lastObject] copy];
|
||||
|
||||
if (!copyMessage) {
|
||||
copyMessage = [JSQTextMessage messageWithSenderId:kJSQDemoAvatarIdJobs
|
||||
displayName:kJSQDemoAvatarDisplayNameJobs
|
||||
text:@"First received!"];
|
||||
copyMessage = [JSQMessage messageWithSenderId:kJSQDemoAvatarIdJobs
|
||||
displayName:kJSQDemoAvatarDisplayNameJobs
|
||||
text:@"First received!"];
|
||||
}
|
||||
|
||||
/**
|
||||
@ -139,7 +164,7 @@
|
||||
id<JSQMessageMediaData> newMediaData = nil;
|
||||
id newMediaAttachmentCopy = nil;
|
||||
|
||||
if ([copyMessage isKindOfClass:[JSQMediaMessage class]]) {
|
||||
if ([copyMessage isKindOfClass:[JSQMessage class]]) {
|
||||
/**
|
||||
* Last message was a media message
|
||||
*/
|
||||
@ -147,6 +172,7 @@
|
||||
|
||||
if ([copyMediaData isKindOfClass:[JSQPhotoMediaItem class]]) {
|
||||
JSQPhotoMediaItem *photoItemCopy = [((JSQPhotoMediaItem *)copyMediaData) copy];
|
||||
photoItemCopy.appliesMediaViewMaskAsOutgoing = NO;
|
||||
newMediaAttachmentCopy = [UIImage imageWithCGImage:photoItemCopy.image.CGImage];
|
||||
|
||||
/**
|
||||
@ -159,6 +185,7 @@
|
||||
}
|
||||
else if ([copyMediaData isKindOfClass:[JSQLocationMediaItem class]]) {
|
||||
JSQLocationMediaItem *locationItemCopy = [((JSQLocationMediaItem *)copyMediaData) copy];
|
||||
locationItemCopy.appliesMediaViewMaskAsOutgoing = NO;
|
||||
newMediaAttachmentCopy = [locationItemCopy.location copy];
|
||||
|
||||
/**
|
||||
@ -168,8 +195,9 @@
|
||||
|
||||
newMediaData = locationItemCopy;
|
||||
}
|
||||
else if ([copyMediaData isKindOfClass:[JSQVideoMediaitem class]]) {
|
||||
JSQVideoMediaitem *videoItemCopy = [((JSQVideoMediaitem *)copyMediaData) copy];
|
||||
else if ([copyMediaData isKindOfClass:[JSQVideoMediaItem class]]) {
|
||||
JSQVideoMediaItem *videoItemCopy = [((JSQVideoMediaItem *)copyMediaData) copy];
|
||||
videoItemCopy.appliesMediaViewMaskAsOutgoing = NO;
|
||||
newMediaAttachmentCopy = [videoItemCopy.fileURL copy];
|
||||
|
||||
/**
|
||||
@ -184,17 +212,17 @@
|
||||
NSLog(@"%s error: unrecognized media item", __PRETTY_FUNCTION__);
|
||||
}
|
||||
|
||||
newMessage = [JSQMediaMessage messageWithSenderId:randomUserId
|
||||
displayName:self.demoData.users[randomUserId]
|
||||
media:newMediaData];
|
||||
newMessage = [JSQMessage messageWithSenderId:randomUserId
|
||||
displayName:self.demoData.users[randomUserId]
|
||||
media:newMediaData];
|
||||
}
|
||||
else {
|
||||
/**
|
||||
* Last message was a text message
|
||||
*/
|
||||
newMessage = [JSQTextMessage messageWithSenderId:randomUserId
|
||||
displayName:self.demoData.users[randomUserId]
|
||||
text:copyMessage.text];
|
||||
newMessage = [JSQMessage messageWithSenderId:randomUserId
|
||||
displayName:self.demoData.users[randomUserId]
|
||||
text:copyMessage.text];
|
||||
}
|
||||
|
||||
/**
|
||||
@ -206,10 +234,10 @@
|
||||
*/
|
||||
[JSQSystemSoundPlayer jsq_playMessageReceivedSound];
|
||||
[self.demoData.messages addObject:newMessage];
|
||||
[self finishReceivingMessage];
|
||||
[self finishReceivingMessageAnimated:YES];
|
||||
|
||||
|
||||
if ([newMessage isKindOfClass:[JSQMediaMessage class]]) {
|
||||
if (newMessage.isMediaMessage) {
|
||||
/**
|
||||
* Simulate "downloading" media
|
||||
*/
|
||||
@ -231,9 +259,9 @@
|
||||
[self.collectionView reloadData];
|
||||
}];
|
||||
}
|
||||
else if ([newMediaData isKindOfClass:[JSQVideoMediaitem class]]) {
|
||||
((JSQVideoMediaitem *)newMediaData).fileURL = newMediaAttachmentCopy;
|
||||
((JSQVideoMediaitem *)newMediaData).isReadyToPlay = YES;
|
||||
else if ([newMediaData isKindOfClass:[JSQVideoMediaItem class]]) {
|
||||
((JSQVideoMediaItem *)newMediaData).fileURL = newMediaAttachmentCopy;
|
||||
((JSQVideoMediaItem *)newMediaData).isReadyToPlay = YES;
|
||||
[self.collectionView reloadData];
|
||||
}
|
||||
else {
|
||||
@ -271,13 +299,14 @@
|
||||
*/
|
||||
[JSQSystemSoundPlayer jsq_playMessageSentSound];
|
||||
|
||||
JSQTextMessage *message = [[JSQTextMessage alloc] initWithSenderId:senderId
|
||||
senderDisplayName:senderDisplayName
|
||||
date:date
|
||||
text:text];
|
||||
JSQMessage *message = [[JSQMessage alloc] initWithSenderId:senderId
|
||||
senderDisplayName:senderDisplayName
|
||||
date:date
|
||||
text:text];
|
||||
|
||||
[self.demoData.messages addObject:message];
|
||||
[self finishSendingMessage];
|
||||
|
||||
[self finishSendingMessageAnimated:YES];
|
||||
}
|
||||
|
||||
- (void)didPressAccessoryButton:(UIButton *)sender
|
||||
@ -318,7 +347,8 @@
|
||||
}
|
||||
|
||||
[JSQSystemSoundPlayer jsq_playMessageSentSound];
|
||||
[self finishSendingMessage];
|
||||
|
||||
[self finishSendingMessageAnimated:YES];
|
||||
}
|
||||
|
||||
|
||||
@ -344,7 +374,7 @@
|
||||
if ([message.senderId isEqualToString:self.senderId]) {
|
||||
return self.demoData.outgoingBubbleImageData;
|
||||
}
|
||||
|
||||
|
||||
return self.demoData.incomingBubbleImageData;
|
||||
}
|
||||
|
||||
@ -372,6 +402,8 @@
|
||||
*/
|
||||
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 (![NSUserDefaults outgoingAvatarSetting]) {
|
||||
return nil;
|
||||
@ -382,8 +414,7 @@
|
||||
return nil;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
return [self.demoData.avatars objectForKey:message.senderId];
|
||||
}
|
||||
|
||||
@ -444,38 +475,34 @@
|
||||
/**
|
||||
* 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];
|
||||
|
||||
if ([msg isKindOfClass:[JSQTextMessage class]]) {
|
||||
|
||||
if ([msg.senderId isEqualToString:self.senderId]) {
|
||||
cell.textView.textColor = [UIColor blackColor];
|
||||
}
|
||||
else {
|
||||
cell.textView.textColor = [UIColor whiteColor];
|
||||
|
||||
if ([msg isKindOfClass:[JSQMessage class]])
|
||||
{
|
||||
JSQMessagesCollectionViewCell *cell = (JSQMessagesCollectionViewCell *)[super collectionView:collectionView cellForItemAtIndexPath:indexPath];
|
||||
if (!msg.isMediaMessage) {
|
||||
if ([msg.senderId isEqualToString:self.senderId]) {
|
||||
cell.textView.textColor = [UIColor blackColor];
|
||||
}
|
||||
else {
|
||||
cell.textView.textColor = [UIColor whiteColor];
|
||||
}
|
||||
|
||||
cell.textView.linkTextAttributes = @{ NSForegroundColorAttributeName : cell.textView.textColor,
|
||||
NSUnderlineStyleAttributeName : @(NSUnderlineStyleSingle | NSUnderlinePatternSolid) };
|
||||
}
|
||||
|
||||
cell.textView.linkTextAttributes = @{ NSForegroundColorAttributeName : cell.textView.textColor,
|
||||
NSUnderlineStyleAttributeName : @(NSUnderlineStyleSingle | NSUnderlinePatternSolid) };
|
||||
return cell;
|
||||
|
||||
} 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
|
||||
*/
|
||||
if (indexPath.item % 3 == 0) {
|
||||
return kJSQMessagesCollectionViewCellLabelHeightDefault;
|
||||
}
|
||||
// if (indexPath.item % 3 == 0) {
|
||||
// return kJSQMessagesCollectionViewCellLabelHeightDefault;
|
||||
// }
|
||||
|
||||
return 0.0f;
|
||||
}
|
||||
|
||||
@ -16,9 +16,9 @@
|
||||
// Released under an MIT license: http://opensource.org/licenses/MIT
|
||||
//
|
||||
|
||||
@import Foundation;
|
||||
@import UIKit;
|
||||
@import CoreLocation;
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <CoreLocation/CoreLocation.h>
|
||||
|
||||
#import "JSQMessages.h"
|
||||
|
||||
|
||||
@ -20,6 +20,9 @@
|
||||
|
||||
#import "NSUserDefaults+DemoSettings.h"
|
||||
|
||||
#import "JSQCall.h"
|
||||
#import "JSQInfoMessage.h"
|
||||
#import "JSQErrorMessage.h"
|
||||
|
||||
/**
|
||||
* This is for demo/testing purposes only.
|
||||
@ -33,7 +36,7 @@
|
||||
{
|
||||
self = [super init];
|
||||
if (self) {
|
||||
|
||||
|
||||
if ([NSUserDefaults emptyMessagesSetting]) {
|
||||
self.messages = [NSMutableArray new];
|
||||
}
|
||||
@ -82,7 +85,7 @@
|
||||
* 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.incomingBubbleImageData = [bubbleFactory incomingMessagesBubbleImageWithColor:[UIColor jsq_messageBubbleGreenColor]];
|
||||
@ -99,35 +102,75 @@
|
||||
* You should have a mutable array or orderedSet, or something.
|
||||
*/
|
||||
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
|
||||
date:[NSDate distantPast]
|
||||
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
|
||||
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."],
|
||||
[[JSQMessage alloc] initWithSenderId:kJSQDemoAvatarIdSquires
|
||||
senderDisplayName:kJSQDemoAvatarDisplayNameSquires
|
||||
date:[NSDate distantPast]
|
||||
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
|
||||
senderDisplayName:kJSQDemoAvatarDisplayNameSquires
|
||||
date:[NSDate distantPast]
|
||||
text:@"It even has data detectors. You can call me tonight. My cell number is 123-456-7890. My website is www.hexedbits.com."],
|
||||
[[JSQMessage alloc] initWithSenderId:kJSQDemoAvatarIdJobs
|
||||
senderDisplayName:kJSQDemoAvatarDisplayNameJobs
|
||||
date:[NSDate date]
|
||||
text:@"JSQMessagesViewController is nearly an exact replica of the iOS Messages App. And perhaps, better."],
|
||||
|
||||
[[JSQTextMessage alloc] initWithSenderId:kJSQDemoAvatarIdJobs
|
||||
senderDisplayName:kJSQDemoAvatarDisplayNameJobs
|
||||
date:[NSDate date]
|
||||
text:@"JSQMessagesViewController is nearly an exact replica of the iOS Messages App. And perhaps, better."],
|
||||
[[JSQMessage alloc] initWithSenderId:kJSQDemoAvatarIdCook
|
||||
senderDisplayName:kJSQDemoAvatarDisplayNameCook
|
||||
date:[NSDate date]
|
||||
text:@"It is unit-tested, free, open-source, and documented."],
|
||||
|
||||
[[JSQTextMessage alloc] initWithSenderId:kJSQDemoAvatarIdCook
|
||||
senderDisplayName:kJSQDemoAvatarDisplayNameCook
|
||||
date:[NSDate date]
|
||||
text:@"It is unit-tested, free, open-source, and documented."],
|
||||
|
||||
[[JSQTextMessage alloc] initWithSenderId:kJSQDemoAvatarIdSquires
|
||||
[[JSQMessage alloc] initWithSenderId:kJSQDemoAvatarIdSquires
|
||||
senderDisplayName:kJSQDemoAvatarDisplayNameSquires
|
||||
date:[NSDate date]
|
||||
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];
|
||||
|
||||
[self addPhotoMediaMessage];
|
||||
@ -148,9 +191,9 @@
|
||||
* You should see "END" twice
|
||||
*/
|
||||
if ([NSUserDefaults longMessageSetting]) {
|
||||
JSQTextMessage *reallyLongMessage = [JSQTextMessage messageWithSenderId:kJSQDemoAvatarIdSquires
|
||||
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"];
|
||||
JSQMessage *reallyLongMessage = [JSQMessage messageWithSenderId:kJSQDemoAvatarIdSquires
|
||||
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"];
|
||||
|
||||
[self.messages addObject:reallyLongMessage];
|
||||
}
|
||||
@ -159,9 +202,9 @@
|
||||
- (void)addPhotoMediaMessage
|
||||
{
|
||||
JSQPhotoMediaItem *photoItem = [[JSQPhotoMediaItem alloc] initWithImage:[UIImage imageNamed:@"goldengate"]];
|
||||
JSQMediaMessage *photoMessage = [JSQMediaMessage messageWithSenderId:kJSQDemoAvatarIdSquires
|
||||
displayName:kJSQDemoAvatarDisplayNameSquires
|
||||
media:photoItem];
|
||||
JSQMessage *photoMessage = [JSQMessage messageWithSenderId:kJSQDemoAvatarIdSquires
|
||||
displayName:kJSQDemoAvatarDisplayNameSquires
|
||||
media:photoItem];
|
||||
[self.messages addObject:photoMessage];
|
||||
}
|
||||
|
||||
@ -172,9 +215,9 @@
|
||||
JSQLocationMediaItem *locationItem = [[JSQLocationMediaItem alloc] init];
|
||||
[locationItem setLocation:ferryBuildingInSF withCompletionHandler:completion];
|
||||
|
||||
JSQMediaMessage *locationMessage = [JSQMediaMessage messageWithSenderId:kJSQDemoAvatarIdSquires
|
||||
displayName:kJSQDemoAvatarDisplayNameSquires
|
||||
media:locationItem];
|
||||
JSQMessage *locationMessage = [JSQMessage messageWithSenderId:kJSQDemoAvatarIdSquires
|
||||
displayName:kJSQDemoAvatarDisplayNameSquires
|
||||
media:locationItem];
|
||||
[self.messages addObject:locationMessage];
|
||||
}
|
||||
|
||||
@ -183,10 +226,10 @@
|
||||
// don't have a real video, just pretending
|
||||
NSURL *videoURL = [NSURL URLWithString:@"file://"];
|
||||
|
||||
JSQVideoMediaitem *videoItem = [[JSQVideoMediaitem alloc] initWithFileURL:videoURL isReadyToPlay:YES];
|
||||
JSQMediaMessage *videoMessage = [JSQMediaMessage messageWithSenderId:kJSQDemoAvatarIdSquires
|
||||
displayName:kJSQDemoAvatarDisplayNameSquires
|
||||
media:videoItem];
|
||||
JSQVideoMediaItem *videoItem = [[JSQVideoMediaItem alloc] initWithFileURL:videoURL isReadyToPlay:YES];
|
||||
JSQMessage *videoMessage = [JSQMessage messageWithSenderId:kJSQDemoAvatarIdSquires
|
||||
displayName:kJSQDemoAvatarDisplayNameSquires
|
||||
media:videoItem];
|
||||
[self.messages addObject:videoMessage];
|
||||
}
|
||||
|
||||
|
||||
@ -16,8 +16,8 @@
|
||||
// Released under an MIT license: http://opensource.org/licenses/MIT
|
||||
//
|
||||
|
||||
@import Foundation;
|
||||
@import UIKit;
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
/**
|
||||
* This is for demo/testing purposes only.
|
||||
|
||||
@ -15,11 +15,11 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>6.0.0</string>
|
||||
<string>6.1.1</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>6.0.0</string>
|
||||
<string>6.1.1</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
// Released under an MIT license: http://opensource.org/licenses/MIT
|
||||
//
|
||||
|
||||
@import Foundation;
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface NSUserDefaults (DemoSettings)
|
||||
|
||||
|
||||
@ -16,8 +16,8 @@
|
||||
// Released under an MIT license: http://opensource.org/licenses/MIT
|
||||
//
|
||||
|
||||
@import Foundation;
|
||||
@import UIKit;
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <UIKit/UIKit.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
|
||||
//
|
||||
|
||||
@import XCTest;
|
||||
#import <XCTest/XCTest.h>
|
||||
|
||||
#import "NSString+JSQMessages.h"
|
||||
|
||||
@ -19,24 +19,17 @@
|
||||
|
||||
@implementation JSQMessagesNSStringTests
|
||||
|
||||
- (void)setUp
|
||||
{
|
||||
[super setUp];
|
||||
}
|
||||
|
||||
- (void)tearDown
|
||||
{
|
||||
[super tearDown];
|
||||
}
|
||||
|
||||
- (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.";
|
||||
|
||||
// WHEN: the text is wrapped in white space
|
||||
NSString *string1 = [NSString stringWithFormat:@" %@ ", loremIpsum];
|
||||
NSString *string2 = [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, [string2 jsq_stringByTrimingWhitespace], @"Strings should be equal after trimming whitespace");
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
// http://opensource.org/licenses/MIT
|
||||
//
|
||||
|
||||
@import XCTest;
|
||||
#import <XCTest/XCTest.h>
|
||||
|
||||
#import "UIColor+JSQMessages.h"
|
||||
|
||||
@ -19,63 +19,20 @@
|
||||
|
||||
@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
|
||||
{
|
||||
// GIVEN: a color and darkening value
|
||||
CGFloat r = 0.89f, g = 0.34f, b = 0.67f, a = 1.0f;
|
||||
|
||||
CGFloat darkeningValue = 0.12f;
|
||||
|
||||
UIColor *color = [UIColor colorWithRed:r green:g blue:b alpha:a];
|
||||
|
||||
// WHEN: we darken that color
|
||||
UIColor *darkColor = [color jsq_colorByDarkeningColorWithValue:darkeningValue];
|
||||
|
||||
// THEN: each RGB value is changed accordingly
|
||||
CGFloat dr, dg, db, da;
|
||||
[darkColor getRed:&dr green:&dg blue:&db alpha:&da];
|
||||
|
||||
XCTAssertEqual(dr, r - darkeningValue, @"Red values should be equal");
|
||||
XCTAssertEqual(dg, g - darkeningValue, @"Green values should be equal");
|
||||
XCTAssertEqual(db, b - darkeningValue, @"Blue values should be equal");
|
||||
@ -84,13 +41,15 @@
|
||||
|
||||
- (void)testDarkeningColorsFloorToZero
|
||||
{
|
||||
// GIVEN: a color and darkening value
|
||||
CGFloat r = 0.89f, g = 0.24f, b = 0.67f, a = 1.0f;
|
||||
|
||||
CGFloat darkeningValue = 0.5f;
|
||||
|
||||
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];
|
||||
|
||||
// THEN: the RGB values are floored to zero instead of being negative
|
||||
CGFloat dr, dg, db, da;
|
||||
[darkColor getRed:&dr green:&dg blue:&db alpha:&da];
|
||||
XCTAssertEqual(dr, r - darkeningValue, @"Red values should be equal");
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
// http://opensource.org/licenses/MIT
|
||||
//
|
||||
|
||||
@import XCTest;
|
||||
#import <XCTest/XCTest.h>
|
||||
|
||||
#import "UIImage+JSQMessages.h"
|
||||
|
||||
@ -19,24 +19,17 @@
|
||||
|
||||
@implementation JSQMessagesUIImageTests
|
||||
|
||||
- (void)setUp
|
||||
{
|
||||
[super setUp];
|
||||
}
|
||||
|
||||
- (void)tearDown
|
||||
{
|
||||
[super tearDown];
|
||||
}
|
||||
|
||||
- (void)testImageMasking
|
||||
{
|
||||
UIImage *img = [UIImage imageNamed:@"bubble_min"];
|
||||
// GIVEN: an image
|
||||
UIImage *img = [UIImage jsq_bubbleCompactImage];
|
||||
XCTAssertNotNil(img, @"Image should not be nil");
|
||||
|
||||
// WHEN: we mask that image
|
||||
UIImage *imgMasked = [img jsq_imageMaskedWithColor:[UIColor whiteColor]];
|
||||
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");
|
||||
|
||||
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");
|
||||
}
|
||||
|
||||
- (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
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
// http://opensource.org/licenses/MIT
|
||||
//
|
||||
|
||||
@import XCTest;
|
||||
#import <XCTest/XCTest.h>
|
||||
|
||||
#import "UIView+JSQMessages.h"
|
||||
|
||||
@ -19,23 +19,24 @@
|
||||
|
||||
@implementation JSQMessagesUIViewTests
|
||||
|
||||
- (void)setUp
|
||||
{
|
||||
[super setUp];
|
||||
}
|
||||
|
||||
- (void)tearDown
|
||||
{
|
||||
[super tearDown];
|
||||
}
|
||||
|
||||
- (void)testViewAutoLayoutPinEdges
|
||||
{
|
||||
// GIVEN: a superview and subview
|
||||
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];
|
||||
|
||||
// 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");
|
||||
[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");
|
||||
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
// http://opensource.org/licenses/MIT
|
||||
//
|
||||
|
||||
@import XCTest;
|
||||
#import <XCTest/XCTest.h>
|
||||
|
||||
#import "JSQMessagesKeyboardController.h"
|
||||
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
// http://opensource.org/licenses/MIT
|
||||
//
|
||||
|
||||
@import XCTest;
|
||||
#import <XCTest/XCTest.h>
|
||||
|
||||
#import <OCMock/OCMock.h>
|
||||
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
// http://opensource.org/licenses/MIT
|
||||
//
|
||||
|
||||
@import XCTest;
|
||||
#import <XCTest/XCTest.h>
|
||||
|
||||
#import "JSQMessagesAvatarImageFactory.h"
|
||||
|
||||
@ -48,7 +48,6 @@
|
||||
avatar.avatarHighlightedImage = [JSQMessagesAvatarImageFactory circularAvatarHighlightedImage:image withDiameter: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");
|
||||
|
||||
}
|
||||
|
||||
- (void)testAvatarInitialsImage
|
||||
|
||||
@ -8,10 +8,12 @@
|
||||
// http://opensource.org/licenses/MIT
|
||||
//
|
||||
|
||||
@import XCTest;
|
||||
#import <XCTest/XCTest.h>
|
||||
|
||||
#import "JSQMessagesBubbleImageFactory.h"
|
||||
|
||||
#import "UIImage+JSQMessages.h"
|
||||
|
||||
|
||||
@interface JSQMessagesBubbleImageFactoryTests : XCTestCase
|
||||
|
||||
@ -36,7 +38,7 @@
|
||||
|
||||
- (void)testOutgoingMessageBubbleImageView
|
||||
{
|
||||
UIImage *bubble = [UIImage imageNamed:@"bubble_min"];
|
||||
UIImage *bubble = [UIImage jsq_bubbleCompactImage];
|
||||
XCTAssertNotNil(bubble, @"Bubble image should not be nil");
|
||||
|
||||
CGPoint center = CGPointMake(bubble.size.width / 2.0f, bubble.size.height / 2.0f);
|
||||
@ -61,7 +63,7 @@
|
||||
|
||||
- (void)testIncomingMessageBubbleImageView
|
||||
{
|
||||
UIImage *bubble = [UIImage imageNamed:@"bubble_min"];
|
||||
UIImage *bubble = [UIImage jsq_bubbleCompactImage];
|
||||
XCTAssertNotNil(bubble, @"Bubble image should not be nil");
|
||||
|
||||
CGPoint center = CGPointMake(bubble.size.width / 2.0f, bubble.size.height / 2.0f);
|
||||
@ -86,7 +88,7 @@
|
||||
|
||||
- (void)testCustomOutgoingMessageBubbleImageView
|
||||
{
|
||||
UIImage *bubble = [UIImage imageNamed:@"clip"];
|
||||
UIImage *bubble = [UIImage jsq_bubbleRegularStrokedTaillessImage];
|
||||
XCTAssertNotNil(bubble, @"Bubble image should not be nil");
|
||||
|
||||
UIEdgeInsets capInsets = UIEdgeInsetsMake(1, 1, 1, 1);
|
||||
@ -109,7 +111,7 @@
|
||||
|
||||
- (void)testCustomIncomingMessageBubbleImageView
|
||||
{
|
||||
UIImage *bubble = [UIImage imageNamed:@"clip"];
|
||||
UIImage *bubble = [UIImage jsq_bubbleRegularStrokedTaillessImage];
|
||||
XCTAssertNotNil(bubble, @"Bubble image should not be nil");
|
||||
|
||||
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
|
||||
//
|
||||
|
||||
@import XCTest;
|
||||
#import <XCTest/XCTest.h>
|
||||
|
||||
#import "JSQMessagesTimestampFormatter.h"
|
||||
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
// http://opensource.org/licenses/MIT
|
||||
//
|
||||
|
||||
@import XCTest;
|
||||
#import <XCTest/XCTest.h>
|
||||
|
||||
#import "JSQMessagesToolbarButtonFactory.h"
|
||||
|
||||
@ -16,56 +16,22 @@
|
||||
|
||||
|
||||
@interface JSQMessagesToolbarButtonFactoryTests : XCTestCase
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@implementation JSQMessagesToolbarButtonFactoryTests
|
||||
|
||||
- (void)setUp
|
||||
{
|
||||
[super setUp];
|
||||
}
|
||||
|
||||
- (void)tearDown
|
||||
{
|
||||
[super tearDown];
|
||||
}
|
||||
|
||||
- (void)testDefaultSendButtonItem
|
||||
{
|
||||
UIButton *button = [JSQMessagesToolbarButtonFactory defaultSendButtonItem];
|
||||
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
|
||||
{
|
||||
UIButton *button = [JSQMessagesToolbarButtonFactory defaultAccessoryButtonItem];
|
||||
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
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
// http://opensource.org/licenses/MIT
|
||||
//
|
||||
|
||||
@import XCTest;
|
||||
#import <XCTest/XCTest.h>
|
||||
|
||||
#import "JSQMessagesCollectionViewFlowLayout.h"
|
||||
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
// http://opensource.org/licenses/MIT
|
||||
//
|
||||
|
||||
@import XCTest;
|
||||
#import <XCTest/XCTest.h>
|
||||
|
||||
#import "JSQMessagesCollectionViewLayoutAttributes.h"
|
||||
|
||||
@ -34,7 +34,7 @@
|
||||
NSIndexPath *indexPath = [NSIndexPath indexPathForItem:0 inSection:0];
|
||||
JSQMessagesCollectionViewLayoutAttributes *attrs = [JSQMessagesCollectionViewLayoutAttributes layoutAttributesForCellWithIndexPath:indexPath];
|
||||
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.textViewFrameInsets = UIEdgeInsetsMake(0.0f, 0.0f, 0.0f, 6.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
|
||||
//
|
||||
|
||||
@import XCTest;
|
||||
#import <XCTest/XCTest.h>
|
||||
|
||||
#import <OCMock/OCMock.h>
|
||||
|
||||
#import "JSQMediaMessage.h"
|
||||
#import "JSQMessage.h"
|
||||
|
||||
|
||||
// Fake media object for testing
|
||||
@ -35,7 +35,7 @@
|
||||
|
||||
|
||||
|
||||
@interface JSQMediaMessageTests : XCTestCase
|
||||
@interface JSQMessageMediaTests : XCTestCase
|
||||
|
||||
@property (strong, nonatomic) NSString *senderId;
|
||||
@property (strong, nonatomic) NSString *senderDisplayName;
|
||||
@ -45,7 +45,7 @@
|
||||
@end
|
||||
|
||||
|
||||
@implementation JSQMediaMessageTests
|
||||
@implementation JSQMessageMediaTests
|
||||
|
||||
- (void)setUp
|
||||
{
|
||||
@ -65,46 +65,46 @@
|
||||
[super tearDown];
|
||||
}
|
||||
|
||||
- (void)testTextMessageInit
|
||||
- (void)testMediaMessageInit
|
||||
{
|
||||
JSQMediaMessage *msg = [[JSQMediaMessage alloc] initWithSenderId:self.senderId
|
||||
senderDisplayName:self.senderDisplayName
|
||||
date:self.date
|
||||
media:self.mockMediaData];
|
||||
JSQMessage *msg = [[JSQMessage alloc] initWithSenderId:self.senderId
|
||||
senderDisplayName:self.senderDisplayName
|
||||
date:self.date
|
||||
media:self.mockMediaData];
|
||||
XCTAssertNotNil(msg, @"Message should not be nil");
|
||||
}
|
||||
|
||||
- (void)testMessageInvalidInit
|
||||
- (void)testMediaMessageInvalidInit
|
||||
{
|
||||
XCTAssertThrows([[JSQMediaMessage alloc] init], @"Invalid init should throw");
|
||||
XCTAssertThrows([[JSQMediaMessage alloc] initWithSenderId:nil senderDisplayName:nil date:nil media:nil], @"Invalid init should throw");
|
||||
XCTAssertThrows([[JSQMessage alloc] init], @"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
|
||||
senderDisplayName:self.senderDisplayName
|
||||
date:self.date
|
||||
media:self.mockMediaData];
|
||||
JSQMediaMessage *copy = [msg copy];
|
||||
JSQMessage *msg = [[JSQMessage alloc] initWithSenderId:self.senderId
|
||||
senderDisplayName:self.senderDisplayName
|
||||
date:self.date
|
||||
media:self.mockMediaData];
|
||||
JSQMessage *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
|
||||
- (void)testMediaMessageArchiving
|
||||
{
|
||||
JSQMediaMessage *msg = [[JSQMediaMessage alloc] initWithSenderId:self.senderId
|
||||
senderDisplayName:self.senderDisplayName
|
||||
date:self.date
|
||||
media:[FakeMedia new]];
|
||||
JSQMessage *msg = [[JSQMessage alloc] initWithSenderId:self.senderId
|
||||
senderDisplayName:self.senderDisplayName
|
||||
date:self.date
|
||||
media:[FakeMedia new]];
|
||||
|
||||
NSData *msgData = [NSKeyedArchiver archivedDataWithRootObject:msg];
|
||||
|
||||
JSQMediaMessage *unarchivedMsg = [NSKeyedUnarchiver unarchiveObjectWithData:msgData];
|
||||
JSQMessage *unarchivedMsg = [NSKeyedUnarchiver unarchiveObjectWithData:msgData];
|
||||
|
||||
XCTAssertEqualObjects(msg, unarchivedMsg, @"Message should be equal");
|
||||
}
|
||||
@ -8,28 +8,34 @@
|
||||
// http://opensource.org/licenses/MIT
|
||||
//
|
||||
|
||||
@import XCTest;
|
||||
#import <XCTest/XCTest.h>
|
||||
|
||||
#import "JSQMessage.h"
|
||||
|
||||
|
||||
@interface JSQMessageTests : XCTestCase
|
||||
@interface JSQMessageTextTests : XCTestCase
|
||||
|
||||
@property (strong, nonatomic) NSString *senderId;
|
||||
@property (strong, nonatomic) NSString *senderDisplayName;
|
||||
@property (strong, nonatomic) NSDate *date;
|
||||
@property (strong, nonatomic) NSString *text;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@implementation JSQMessageTests
|
||||
@implementation JSQMessageTextTests
|
||||
|
||||
- (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
|
||||
@ -37,39 +43,48 @@
|
||||
self.senderId = nil;
|
||||
self.senderDisplayName = nil;
|
||||
self.date = nil;
|
||||
self.text = nil;
|
||||
[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");
|
||||
}
|
||||
|
||||
- (void)testMessageInvalidInit
|
||||
- (void)testTextMessageInvalidInit
|
||||
{
|
||||
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: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");
|
||||
XCTAssertThrows([[JSQMessage alloc] initWithSenderId:nil senderDisplayName:nil date:nil text:nil], @"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];
|
||||
|
||||
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
|
||||
- (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];
|
||||
|
||||
JSQMessage *unarchivedMsg = [NSKeyedUnarchiver unarchiveObjectWithData:msgData];
|
||||
@ -8,7 +8,7 @@
|
||||
// http://opensource.org/licenses/MIT
|
||||
//
|
||||
|
||||
@import XCTest;
|
||||
#import <XCTest/XCTest.h>
|
||||
|
||||
#import "JSQMessagesAvatarImage.h"
|
||||
|
||||
|
||||
@ -8,10 +8,12 @@
|
||||
// http://opensource.org/licenses/MIT
|
||||
//
|
||||
|
||||
@import XCTest;
|
||||
#import <XCTest/XCTest.h>
|
||||
|
||||
#import "JSQMessagesBubbleImage.h"
|
||||
|
||||
#import "UIImage+JSQMessages.h"
|
||||
|
||||
|
||||
@interface JSQMessagesBubbleImageTests : XCTestCase
|
||||
|
||||
@ -38,14 +40,14 @@
|
||||
|
||||
- (void)testInitValid
|
||||
{
|
||||
UIImage *mockImage = [UIImage imageNamed:@"bubble_min"];
|
||||
UIImage *mockImage = [UIImage jsq_bubbleCompactImage];
|
||||
JSQMessagesBubbleImage *bubbleImage = [[JSQMessagesBubbleImage alloc] initWithMessageBubbleImage:mockImage highlightedImage:mockImage];
|
||||
XCTAssertNotNil(bubbleImage, @"Valid init should succeed");
|
||||
}
|
||||
|
||||
- (void)testCopy
|
||||
{
|
||||
UIImage *mockImage = [UIImage imageNamed:@"bubble_min"];
|
||||
UIImage *mockImage = [UIImage jsq_bubbleCompactImage];
|
||||
JSQMessagesBubbleImage *bubbleImage = [[JSQMessagesBubbleImage alloc] initWithMessageBubbleImage:mockImage highlightedImage:mockImage];
|
||||
|
||||
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
|
||||
//
|
||||
|
||||
@import XCTest;
|
||||
#import <XCTest/XCTest.h>
|
||||
|
||||
#import "JSQMessagesCollectionViewCellIncoming.h"
|
||||
#import "JSQMessagesCollectionViewCellOutgoing.h"
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
// http://opensource.org/licenses/MIT
|
||||
//
|
||||
|
||||
@import XCTest;
|
||||
#import <XCTest/XCTest.h>
|
||||
|
||||
#import "JSQMessagesCollectionView.h"
|
||||
#import "JSQMessagesCollectionViewFlowLayout.h"
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
// http://opensource.org/licenses/MIT
|
||||
//
|
||||
|
||||
@import XCTest;
|
||||
#import <XCTest/XCTest.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.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.scrollsToTop, NO, @"Property should be equal to default value");
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
// http://opensource.org/licenses/MIT
|
||||
//
|
||||
|
||||
@import XCTest;
|
||||
#import <XCTest/XCTest.h>
|
||||
|
||||
#import "JSQMessagesViewController.h"
|
||||
#import "JSQMessagesInputToolbar.h"
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
// http://opensource.org/licenses/MIT
|
||||
//
|
||||
|
||||
@import XCTest;
|
||||
#import <XCTest/XCTest.h>
|
||||
|
||||
#import "JSQMessagesLabel.h"
|
||||
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
// http://opensource.org/licenses/MIT
|
||||
//
|
||||
|
||||
@import XCTest;
|
||||
#import <XCTest/XCTest.h>
|
||||
|
||||
#import "JSQMessagesLoadEarlierHeaderView.h"
|
||||
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
// http://opensource.org/licenses/MIT
|
||||
//
|
||||
|
||||
@import XCTest;
|
||||
#import <XCTest/XCTest.h>
|
||||
|
||||
#import "JSQMessagesToolbarContentView.h"
|
||||
#import "JSQMessagesComposerTextView.h"
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
// http://opensource.org/licenses/MIT
|
||||
//
|
||||
|
||||
@import XCTest;
|
||||
#import <XCTest/XCTest.h>
|
||||
|
||||
#import "JSQMessagesTypingIndicatorFooterView.h"
|
||||
|
||||
|
||||
@ -1,17 +1,19 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'JSQMessagesViewController'
|
||||
s.version = '6.0-beta5'
|
||||
s.version = '6.1.1'
|
||||
s.summary = 'An elegant messages UI library for iOS.'
|
||||
s.homepage = 'http://jessesquires.github.io/JSQMessagesViewController'
|
||||
s.license = 'MIT'
|
||||
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.social_media_url = 'https://twitter.com/jesse_squires'
|
||||
s.source = { :git => 'https://github.com/jessesquires/JSQMessagesViewController.git', :tag => s.version.to_s }
|
||||
s.platform = :ios, '7.0'
|
||||
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.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"
|
||||
|
||||
static NSString * const kJSQMessageReceivedSoundName = @"message_received";
|
||||
static NSString * const kJSQMessageSentSoundName = @"message_sent";
|
||||
static NSString * const kJSQMessageReceivedSoundName = @"JSQMessagesAssets.bundle/Sounds/message_received";
|
||||
static NSString * const kJSQMessageSentSoundName = @"JSQMessagesAssets.bundle/Sounds/message_sent";
|
||||
|
||||
|
||||
@implementation JSQSystemSoundPlayer (JSQMessages)
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
// Released under an MIT license: http://opensource.org/licenses/MIT
|
||||
//
|
||||
|
||||
@import Foundation;
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface NSString (JSQMessages)
|
||||
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
// Released under an MIT license: http://opensource.org/licenses/MIT
|
||||
//
|
||||
|
||||
@import UIKit;
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface UIColor (JSQMessages)
|
||||
|
||||
@ -32,11 +32,32 @@
|
||||
*/
|
||||
+ (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.
|
||||
*/
|
||||
+ (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
|
||||
|
||||
/**
|
||||
|
||||
@ -26,7 +26,7 @@
|
||||
{
|
||||
return [UIColor colorWithHue:130.0f / 360.0f
|
||||
saturation:0.68f
|
||||
brightness:0.80f
|
||||
brightness:0.84f
|
||||
alpha:1.0f];
|
||||
}
|
||||
|
||||
@ -38,6 +38,14 @@
|
||||
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
|
||||
{
|
||||
return [UIColor colorWithHue:240.0f / 360.0f
|
||||
@ -46,6 +54,23 @@
|
||||
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
|
||||
|
||||
- (UIColor *)jsq_colorByDarkeningColorWithValue:(CGFloat)value
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
// Released under an MIT license: http://opensource.org/licenses/MIT
|
||||
//
|
||||
|
||||
@import UIKit;
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface UIDevice (JSQMessages)
|
||||
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
// Released under an MIT license: http://opensource.org/licenses/MIT
|
||||
//
|
||||
|
||||
@import UIKit;
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface UIImage (JSQMessages)
|
||||
|
||||
@ -61,4 +61,19 @@
|
||||
*/
|
||||
+ (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
|
||||
|
||||
@ -45,34 +45,55 @@
|
||||
return newImage;
|
||||
}
|
||||
|
||||
+ (UIImage *)jsq_bubbleImageFromBundleWithName:(NSString *)name
|
||||
{
|
||||
return [UIImage imageNamed:[NSString stringWithFormat:@"JSQMessagesAssets.bundle/Images/%@", name]];
|
||||
}
|
||||
|
||||
+ (UIImage *)jsq_bubbleRegularImage
|
||||
{
|
||||
return [UIImage imageNamed:@"bubble"];
|
||||
return [UIImage jsq_bubbleImageFromBundleWithName:@"bubble_regular"];
|
||||
}
|
||||
|
||||
+ (UIImage *)jsq_bubbleRegularTaillessImage
|
||||
{
|
||||
return [UIImage imageNamed:@"bubble_tailless"];
|
||||
return [UIImage jsq_bubbleImageFromBundleWithName:@"bubble_tailless"];
|
||||
}
|
||||
|
||||
+ (UIImage *)jsq_bubbleRegularStrokedImage
|
||||
{
|
||||
return [UIImage imageNamed:@"bubble_stroked"];
|
||||
return [UIImage jsq_bubbleImageFromBundleWithName:@"bubble_stroked"];
|
||||
}
|
||||
|
||||
+ (UIImage *)jsq_bubbleRegularStrokedTaillessImage
|
||||
{
|
||||
return [UIImage imageNamed:@"bubble_stroked_tailless"];
|
||||
return [UIImage jsq_bubbleImageFromBundleWithName:@"bubble_stroked_tailless"];
|
||||
}
|
||||
|
||||
+ (UIImage *)jsq_bubbleCompactImage
|
||||
{
|
||||
return [UIImage imageNamed:@"bubble_min"];
|
||||
return [UIImage jsq_bubbleImageFromBundleWithName:@"bubble_min"];
|
||||
}
|
||||
|
||||
+ (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
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
// Released under an MIT license: http://opensource.org/licenses/MIT
|
||||
//
|
||||
|
||||
@import UIKit;
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface UIView (JSQMessages)
|
||||
|
||||
|
||||
@ -21,8 +21,8 @@
|
||||
// https://github.com/danielamitay/DAKeyboardControl
|
||||
//
|
||||
|
||||
@import Foundation;
|
||||
@import UIKit;
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@class JSQMessagesKeyboardController;
|
||||
|
||||
@ -59,6 +59,13 @@ FOUNDATION_EXPORT NSString * const JSQMessagesKeyboardControllerUserInfoKeyKeybo
|
||||
*/
|
||||
- (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
|
||||
|
||||
|
||||
|
||||