├── .gitignore
├── Podfile
├── Podfile.lock
├── RChat.xcodeproj
├── project.pbxproj
└── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── RChat.xcworkspace
├── contents.xcworkspacedata
└── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── RChat
├── AppDelegate.h
├── AppDelegate.m
├── Assets.xcassets
│ ├── AppIcon.appiconset
│ │ └── Contents.json
│ └── Contents.json
├── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── Main.storyboard
├── Info.plist
├── MessageIcon
│ ├── icon_inputBox_recoder_too_short.png
│ ├── icon_inputBox_recorder_prompt1.png
│ ├── icon_inputBox_recorder_prompt2.png
│ ├── icon_inputBox_recorder_prompt3.png
│ ├── icon_inputBox_recorder_prompt4.png
│ ├── icon_inputBox_recorder_prompt5.png
│ ├── icon_inputBox_recorder_prompt_recall.png
│ ├── icon_inputBox_recorder_prompt_voice.png
│ ├── icon_message_attachments@3x.png
│ ├── icon_message_send_failure.png
│ ├── icon_message_sending@3x.png
│ ├── icon_message_voice_receive_0@2x.png
│ ├── icon_message_voice_receive_0@3x.png
│ ├── icon_message_voice_receive_1@2x.png
│ ├── icon_message_voice_receive_1@3x.png
│ ├── icon_message_voice_receive_2@2x.png
│ ├── icon_message_voice_receive_2@3x.png
│ ├── icon_message_voice_send_0@2x.png
│ ├── icon_message_voice_send_0@3x.png
│ ├── icon_message_voice_send_1@2x.png
│ ├── icon_message_voice_send_1@3x.png
│ ├── icon_message_voice_send_2@2x.png
│ ├── icon_message_voice_send_2@3x.png
│ ├── receiver_message_background@3x.png
│ └── sender_message_background@3x.png
├── Messages
│ ├── BAPhotoBrowser
│ │ ├── KPhotoBrowserConfig.h
│ │ ├── Model
│ │ │ ├── KPhoto.h
│ │ │ └── KPhoto.m
│ │ ├── Resource
│ │ │ ├── icon_inputBox_thumb@3x.png
│ │ │ ├── icon_inputBox_videoPlay_cancel@3x.png
│ │ │ ├── icon_inputBox_video_ pause@3x.png
│ │ │ ├── icon_inputBox_video_bttom_play@3x.png
│ │ │ └── icon_inputBox_video_play@3x.png
│ │ └── View
│ │ │ ├── BAProgressView.h
│ │ │ ├── BAProgressView.m
│ │ │ ├── FSActionSheet
│ │ │ ├── FSActionSheet.h
│ │ │ ├── FSActionSheet.m
│ │ │ ├── FSActionSheetCell.h
│ │ │ ├── FSActionSheetCell.m
│ │ │ ├── FSActionSheetConfig.h
│ │ │ ├── FSActionSheetConfig.m
│ │ │ ├── FSActionSheetItem.h
│ │ │ └── FSActionSheetItem.m
│ │ │ ├── KPhotoBrowser.h
│ │ │ ├── KPhotoBrowser.m
│ │ │ ├── KVideoPlayView.h
│ │ │ ├── KVideoPlayView.m
│ │ │ ├── KZoomingScrollView.h
│ │ │ ├── KZoomingScrollView.m
│ │ │ └── PageControl
│ │ │ ├── TAAbstractDotView.h
│ │ │ ├── TAAbstractDotView.m
│ │ │ ├── TAAnimatedDotView.h
│ │ │ ├── TAAnimatedDotView.m
│ │ │ ├── TADotView.h
│ │ │ ├── TADotView.m
│ │ │ ├── TAPageControl.h
│ │ │ └── TAPageControl.m
│ ├── Category
│ │ ├── KNetworkDetection.h
│ │ ├── KNetworkDetection.m
│ │ ├── NSArray+Json.h
│ │ ├── NSArray+Json.m
│ │ ├── NSAttributedString+Addition.h
│ │ ├── NSAttributedString+Addition.m
│ │ ├── NSDate+KCategory.h
│ │ ├── NSDate+KCategory.m
│ │ ├── NSDictionary+Json.h
│ │ ├── NSDictionary+Json.m
│ │ ├── NSString+Category.h
│ │ ├── NSString+Category.m
│ │ ├── NSString+Size.h
│ │ ├── NSString+Size.m
│ │ ├── NSTextAttachment+Emoji.h
│ │ ├── NSTextAttachment+Emoji.m
│ │ ├── UIImage+Color.h
│ │ ├── UIImage+Color.m
│ │ ├── UIImage+Compression.h
│ │ ├── UIImage+Compression.m
│ │ ├── UIImage+KVideo.h
│ │ ├── UIImage+KVideo.m
│ │ ├── UILabel+KAutoLabelHeightAndWidth.h
│ │ ├── UILabel+KAutoLabelHeightAndWidth.m
│ │ ├── UIScrollView+Addition.h
│ │ ├── UIScrollView+Addition.m
│ │ ├── UIView+KExtension.h
│ │ ├── UIView+KExtension.m
│ │ ├── UIViewController+KCategory.h
│ │ └── UIViewController+KCategory.m
│ ├── Common
│ │ ├── BaseViewController.h
│ │ ├── BaseViewController.m
│ │ ├── KFileCache.h
│ │ ├── KFileCache.m
│ │ ├── KFileManagement.h
│ │ ├── KFileManagement.m
│ │ ├── KSystemAuthorization.h
│ │ └── KSystemAuthorization.m
│ ├── Controller
│ │ ├── KChatViewController+Image.h
│ │ ├── KChatViewController+Image.m
│ │ ├── KChatViewController+Voice.h
│ │ ├── KChatViewController+Voice.m
│ │ ├── KChatViewController.h
│ │ ├── KChatViewController.m
│ │ ├── KMessagesViewController.h
│ │ ├── KMessagesViewController.m
│ │ ├── KSearchMessageViewController.h
│ │ └── KSearchMessageViewController.m
│ ├── InputBox
│ │ ├── Controller
│ │ │ ├── KVideoViewController.h
│ │ │ └── KVideoViewController.m
│ │ ├── Model
│ │ │ ├── KEmojiGroup.h
│ │ │ ├── KEmojiGroup.m
│ │ │ ├── KEmojiModel.h
│ │ │ ├── KEmojiModel.m
│ │ │ ├── KInputBoxMoreModel.h
│ │ │ ├── KInputBoxMoreModel.m
│ │ │ ├── KTextBackedString.h
│ │ │ └── KTextBackedString.m
│ │ ├── Resource
│ │ │ ├── Face
│ │ │ │ ├── emoji_delete.png
│ │ │ │ ├── emoji_normal.png
│ │ │ │ ├── emotion_aini.png
│ │ │ │ ├── emotion_aini_gif.gif
│ │ │ │ ├── emotion_aiqing.png
│ │ │ │ ├── emotion_aiqing_gif.gif
│ │ │ │ ├── emotion_aixin.png
│ │ │ │ ├── emotion_aixin_gif.gif
│ │ │ │ ├── emotion_aoman.png
│ │ │ │ ├── emotion_aoman_gif.gif
│ │ │ │ ├── emotion_baiyan.png
│ │ │ │ ├── emotion_baiyan_gif.gif
│ │ │ │ ├── emotion_bangbangtang.png
│ │ │ │ ├── emotion_bangbangtang_gif.gif
│ │ │ │ ├── emotion_baobao.png
│ │ │ │ ├── emotion_baobao_gif.gif
│ │ │ │ ├── emotion_baojing.png
│ │ │ │ ├── emotion_baojing_gif.gif
│ │ │ │ ├── emotion_baoquan.png
│ │ │ │ ├── emotion_baoquan_gif.gif
│ │ │ │ ├── emotion_bianbian.png
│ │ │ │ ├── emotion_bianbian_gif.gif
│ │ │ │ ├── emotion_bianpao.png
│ │ │ │ ├── emotion_bianpao_gif.gif
│ │ │ │ ├── emotion_biezui.png
│ │ │ │ ├── emotion_biezui_gif.gif
│ │ │ │ ├── emotion_bishi.png
│ │ │ │ ├── emotion_bishi_gif.gif
│ │ │ │ ├── emotion_bizui.png
│ │ │ │ ├── emotion_bizui_gif.gif
│ │ │ │ ├── emotion_cahan.png
│ │ │ │ ├── emotion_cahan_gif.gif
│ │ │ │ ├── emotion_caidao.png
│ │ │ │ ├── emotion_caidao_gif.gif
│ │ │ │ ├── emotion_caiqiu.png
│ │ │ │ ├── emotion_caiqiu_gif.gif
│ │ │ │ ├── emotion_chajing.png
│ │ │ │ ├── emotion_chajing_gif.gif
│ │ │ │ ├── emotion_chaopiao.png
│ │ │ │ ├── emotion_chaopiao_gif.gif
│ │ │ │ ├── emotion_chexiang.png
│ │ │ │ ├── emotion_chexiang_gif.gif
│ │ │ │ ├── emotion_ciya.png
│ │ │ │ ├── emotion_ciya_gif.gif
│ │ │ │ ├── emotion_dabing.png
│ │ │ │ ├── emotion_dabing_gif.gif
│ │ │ │ ├── emotion_daku.png
│ │ │ │ ├── emotion_daku_gif.gif
│ │ │ │ ├── emotion_dangao.png
│ │ │ │ ├── emotion_dangao_gif.gif
│ │ │ │ ├── emotion_dao.png
│ │ │ │ ├── emotion_dao_gif.gif
│ │ │ │ ├── emotion_dashan.png
│ │ │ │ ├── emotion_dashan_gif.gif
│ │ │ │ ├── emotion_dashuai.png
│ │ │ │ ├── emotion_dashuai_gif.gif
│ │ │ │ ├── emotion_denglong.png
│ │ │ │ ├── emotion_denglong_gif.gif
│ │ │ │ ├── emotion_dengpao.png
│ │ │ │ ├── emotion_dengpao_gif.gif
│ │ │ │ ├── emotion_deyi.png
│ │ │ │ ├── emotion_deyi_gif.gif
│ │ │ │ ├── emotion_diaoxie.png
│ │ │ │ ├── emotion_diaoxie_gif.gif
│ │ │ │ ├── emotion_duoyun.png
│ │ │ │ ├── emotion_duoyun_gif.gif
│ │ │ │ ├── emotion_facai.png
│ │ │ │ ├── emotion_facai_gif.gif
│ │ │ │ ├── emotion_fadai.png
│ │ │ │ ├── emotion_fadai_gif.gif
│ │ │ │ ├── emotion_fadou.png
│ │ │ │ ├── emotion_fadou_gif.gif
│ │ │ │ ├── emotion_fakuang.png
│ │ │ │ ├── emotion_fakuang_gif.gif
│ │ │ │ ├── emotion_fan.png
│ │ │ │ ├── emotion_fan_gif.gif
│ │ │ │ ├── emotion_fanu.png
│ │ │ │ ├── emotion_fanu_gif.gif
│ │ │ │ ├── emotion_feiji.png
│ │ │ │ ├── emotion_feiji_gif.gif
│ │ │ │ ├── emotion_feiwen.png
│ │ │ │ ├── emotion_feiwen_gif.gif
│ │ │ │ ├── emotion_fendou.png
│ │ │ │ ├── emotion_fendou_gif.gif
│ │ │ │ ├── emotion_fengche.png
│ │ │ │ ├── emotion_fengche_gif.gif
│ │ │ │ ├── emotion_ganga.png
│ │ │ │ ├── emotion_ganga_gif.gif
│ │ │ │ ├── emotion_gouwu.png
│ │ │ │ ├── emotion_gouwu_gif.gif
│ │ │ │ ├── emotion_gouying.png
│ │ │ │ ├── emotion_gouying_gif.gif
│ │ │ │ ├── emotion_guzhang.png
│ │ │ │ ├── emotion_guzhang_gif.gif
│ │ │ │ ├── emotion_haixiu.png
│ │ │ │ ├── emotion_haixiu_gif.gif
│ │ │ │ ├── emotion_hanxiao.png
│ │ │ │ ├── emotion_hanxiao_gif.gif
│ │ │ │ ├── emotion_haqian.png
│ │ │ │ ├── emotion_haqian_gif.gif
│ │ │ │ ├── emotion_hecai.png
│ │ │ │ ├── emotion_hecai_gif.gif
│ │ │ │ ├── emotion_henai.png
│ │ │ │ ├── emotion_henai_gif.gif
│ │ │ │ ├── emotion_huaixiao.png
│ │ │ │ ├── emotion_huaixiao_gif.gif
│ │ │ │ ├── emotion_huishou.png
│ │ │ │ ├── emotion_huishou_gif.gif
│ │ │ │ ├── emotion_huitou.png
│ │ │ │ ├── emotion_huitou_gif.gif
│ │ │ │ ├── emotion_jidong.png
│ │ │ │ ├── emotion_jidong_gif.gif
│ │ │ │ ├── emotion_jie.png
│ │ │ │ ├── emotion_jie_gif.gif
│ │ │ │ ├── emotion_jiewu.png
│ │ │ │ ├── emotion_jiewu_gif.gif
│ │ │ │ ├── emotion_jingkong.png
│ │ │ │ ├── emotion_jingkong_gif.gif
│ │ │ │ ├── emotion_jingya.png
│ │ │ │ ├── emotion_jingya_gif.gif
│ │ │ │ ├── emotion_kafei.png
│ │ │ │ ├── emotion_kafei_gif.gif
│ │ │ │ ├── emotion_kaiche.png
│ │ │ │ ├── emotion_kaiche_gif.gif
│ │ │ │ ├── emotion_keai.png
│ │ │ │ ├── emotion_keai_gif.gif
│ │ │ │ ├── emotion_kelian.png
│ │ │ │ ├── emotion_kelian_gif.gif
│ │ │ │ ├── emotion_ketou.png
│ │ │ │ ├── emotion_ketou_gif.gif
│ │ │ │ ├── emotion_kge.png
│ │ │ │ ├── emotion_kge_gif.gif
│ │ │ │ ├── emotion_koubi.png
│ │ │ │ ├── emotion_koubi_gif.gif
│ │ │ │ ├── emotion_ku.png
│ │ │ │ ├── emotion_ku_gif.gif
│ │ │ │ ├── emotion_kuaikule.png
│ │ │ │ ├── emotion_kuaikule_gif.gif
│ │ │ │ ├── emotion_kulou.png
│ │ │ │ ├── emotion_kulou_gif.gif
│ │ │ │ ├── emotion_kun.png
│ │ │ │ ├── emotion_kun_gif.gif
│ │ │ │ ├── emotion_lanqiu.png
│ │ │ │ ├── emotion_lanqiu_gif.gif
│ │ │ │ ├── emotion_lenghan.png
│ │ │ │ ├── emotion_lenghan_gif.gif
│ │ │ │ ├── emotion_liuhan.png
│ │ │ │ ├── emotion_liuhan_gif.gif
│ │ │ │ ├── emotion_liulei.png
│ │ │ │ ├── emotion_liulei_gif.gif
│ │ │ │ ├── emotion_liwu.png
│ │ │ │ ├── emotion_liwu_gif.gif
│ │ │ │ ├── emotion_meigui.png
│ │ │ │ ├── emotion_meigui_gif.gif
│ │ │ │ ├── emotion_nanguo.png
│ │ │ │ ├── emotion_nanguo_gif.gif
│ │ │ │ ├── emotion_naozhong.png
│ │ │ │ ├── emotion_naozhong_gif.gif
│ │ │ │ ├── emotion_no.png
│ │ │ │ ├── emotion_no_gif.gif
│ │ │ │ ├── emotion_ok.png
│ │ │ │ ├── emotion_ok_gif.gif
│ │ │ │ ├── emotion_ouhuo.png
│ │ │ │ ├── emotion_ouhuo_gif.gif
│ │ │ │ ├── emotion_pachong.png
│ │ │ │ ├── emotion_pachong_gif.gif
│ │ │ │ ├── emotion_pijiu.png
│ │ │ │ ├── emotion_pijiu_gif.gif
│ │ │ │ ├── emotion_pingpang.png
│ │ │ │ ├── emotion_pingpang_gif.gif
│ │ │ │ ├── emotion_qiang.png
│ │ │ │ ├── emotion_qiang_gif.gif
│ │ │ │ ├── emotion_qiaoda.png
│ │ │ │ ├── emotion_qiaoda_gif.gif
│ │ │ │ ├── emotion_qidao.png
│ │ │ │ ├── emotion_qidao_gif.gif
│ │ │ │ ├── emotion_qingwa.png
│ │ │ │ ├── emotion_qingwa_gif.gif
│ │ │ │ ├── emotion_qinqin.png
│ │ │ │ ├── emotion_qinqin_gif.gif
│ │ │ │ ├── emotion_qiudale.png
│ │ │ │ ├── emotion_qiudale_gif.gif
│ │ │ │ ├── emotion_quantou.png
│ │ │ │ ├── emotion_quantou_gif.gif
│ │ │ │ ├── emotion_ruo.png
│ │ │ │ ├── emotion_ruo_gif.gif
│ │ │ │ ├── emotion_se.png
│ │ │ │ ├── emotion_se_gif.gif
│ │ │ │ ├── emotion_shafa.png
│ │ │ │ ├── emotion_shafa_gif.gif
│ │ │ │ ├── emotion_shandian.png
│ │ │ │ ├── emotion_shandian_gif.gif
│ │ │ │ ├── emotion_shengli.png
│ │ │ │ ├── emotion_shengli_gif.gif
│ │ │ │ ├── emotion_shiai.png
│ │ │ │ ├── emotion_shiai_gif.gif
│ │ │ │ ├── emotion_shouqiang.png
│ │ │ │ ├── emotion_shouqiang_gif.gif
│ │ │ │ ├── emotion_shuai.png
│ │ │ │ ├── emotion_shuai_gif.gif
│ │ │ │ ├── emotion_shuangxi.png
│ │ │ │ ├── emotion_shuangxi_gif.gif
│ │ │ │ ├── emotion_shui.png
│ │ │ │ ├── emotion_shui_gif.gif
│ │ │ │ ├── emotion_taiyang.png
│ │ │ │ ├── emotion_taiyang_gif.gif
│ │ │ │ ├── emotion_tiaopi.png
│ │ │ │ ├── emotion_tiaopi_gif.gif
│ │ │ │ ├── emotion_tiaosheng.png
│ │ │ │ ├── emotion_tiaosheng_gif.gif
│ │ │ │ ├── emotion_tiaotiao.png
│ │ │ │ ├── emotion_tiaotiao_gif.gif
│ │ │ │ ├── emotion_touxiao.png
│ │ │ │ ├── emotion_touxiao_gif.gif
│ │ │ │ ├── emotion_tu.png
│ │ │ │ ├── emotion_tu_gif.gif
│ │ │ │ ├── emotion_weiqu.png
│ │ │ │ ├── emotion_weiqu_gif.gif
│ │ │ │ ├── emotion_weixiao.png
│ │ │ │ ├── emotion_weixiao_gif.gif
│ │ │ │ ├── emotion_woshou.png
│ │ │ │ ├── emotion_woshou_gif.gif
│ │ │ │ ├── emotion_xia.png
│ │ │ │ ├── emotion_xia_gif.gif
│ │ │ │ ├── emotion_xiamian.png
│ │ │ │ ├── emotion_xiamian_gif.gif
│ │ │ │ ├── emotion_xiangjiao.png
│ │ │ │ ├── emotion_xiangjiao_gif.gif
│ │ │ │ ├── emotion_xianwen.png
│ │ │ │ ├── emotion_xianwen_gif.gif
│ │ │ │ ├── emotion_xiayu.png
│ │ │ │ ├── emotion_xiayu_gif.gif
│ │ │ │ ├── emotion_xigua.png
│ │ │ │ ├── emotion_xigua_gif.gif
│ │ │ │ ├── emotion_xinsui.png
│ │ │ │ ├── emotion_xinsui_gif.gif
│ │ │ │ ├── emotion_xiongmao.png
│ │ │ │ ├── emotion_xiongmao_gif.gif
│ │ │ │ ├── emotion_xu.png
│ │ │ │ ├── emotion_xu_gif.gif
│ │ │ │ ├── emotion_yao.png
│ │ │ │ ├── emotion_yao_gif.gif
│ │ │ │ ├── emotion_yingxian.png
│ │ │ │ ├── emotion_yingxian_gif.gif
│ │ │ │ ├── emotion_yiwen.png
│ │ │ │ ├── emotion_yiwen_gif.gif
│ │ │ │ ├── emotion_youchexiang.png
│ │ │ │ ├── emotion_youchexiang_gif.gif
│ │ │ │ ├── emotion_youhengheng.png
│ │ │ │ ├── emotion_youhengheng_gif.gif
│ │ │ │ ├── emotion_youjian.png
│ │ │ │ ├── emotion_youjian_gif.gif
│ │ │ │ ├── emotion_youtaiji.png
│ │ │ │ ├── emotion_youtaiji_gif.gif
│ │ │ │ ├── emotion_yueliang.png
│ │ │ │ ├── emotion_yueliang_gif.gif
│ │ │ │ ├── emotion_yun.png
│ │ │ │ ├── emotion_yun_gif.gif
│ │ │ │ ├── emotion_zaijian.png
│ │ │ │ ├── emotion_zaijian_gif.gif
│ │ │ │ ├── emotion_zhadan.png
│ │ │ │ ├── emotion_zhadan_gif.gif
│ │ │ │ ├── emotion_zhijing.png
│ │ │ │ ├── emotion_zhijing_gif.gif
│ │ │ │ ├── emotion_zhuakuang.png
│ │ │ │ ├── emotion_zhuakuang_gif.gif
│ │ │ │ ├── emotion_zhuanjie.png
│ │ │ │ ├── emotion_zhuanjie_gif.gif
│ │ │ │ ├── emotion_zhuanquan.png
│ │ │ │ ├── emotion_zhuanquan_gif.gif
│ │ │ │ ├── emotion_zhuqiu.png
│ │ │ │ ├── emotion_zhuqiu_gif.gif
│ │ │ │ ├── emotion_zhutou.png
│ │ │ │ ├── emotion_zhutou_gif.gif
│ │ │ │ ├── emotion_zouma.png
│ │ │ │ ├── emotion_zouma_gif.gif
│ │ │ │ ├── emotion_zuochetou.png
│ │ │ │ ├── emotion_zuochetou_gif.gif
│ │ │ │ ├── emotion_zuohengheng.png
│ │ │ │ ├── emotion_zuohengheng_gif.gif
│ │ │ │ ├── emotion_zuotaiji.png
│ │ │ │ ├── emotion_zuotaiji_gif.gif
│ │ │ │ └── msg_state_fail_resend.png
│ │ │ ├── InputBoxMore.plist
│ │ │ ├── icon_inputBox_menu_add@3x.png
│ │ │ ├── icon_inputBox_more_mail@3x.png
│ │ │ ├── icon_inputBox_more_mobile@3x.png
│ │ │ ├── icon_inputBox_more_photo@3x.png
│ │ │ ├── icon_inputBox_more_takeVideo_back@3x.png
│ │ │ ├── icon_inputBox_more_takeVideo_camera@3x.png
│ │ │ ├── icon_inputBox_more_takeVideo_cancel@3x.png
│ │ │ ├── icon_inputBox_more_takeVideo_confirm@3x.png
│ │ │ ├── icon_inputBox_more_takeVideo_focusing@3x.png
│ │ │ ├── icon_inputBox_more_takeVideo_photograph@3x.png
│ │ │ ├── icon_inputBox_more_take_photo@3x.png
│ │ │ ├── icon_inputBox_more_take_video@3x.png
│ │ │ ├── icon_message_emoji_delete@2x.png
│ │ │ ├── icon_message_expression@3x.png
│ │ │ ├── icon_message_keyboard@3x.png
│ │ │ ├── icon_message_more@3x.png
│ │ │ ├── icon_message_voiceBtn@3x.png
│ │ │ └── normal_emoji.plist
│ │ └── View
│ │ │ ├── KEmojiCollectionViewCell.h
│ │ │ ├── KEmojiCollectionViewCell.m
│ │ │ ├── KHorizontalPageFlowlayout.h
│ │ │ ├── KHorizontalPageFlowlayout.m
│ │ │ ├── KInputBoxEmojiMenuView.h
│ │ │ ├── KInputBoxEmojiMenuView.m
│ │ │ ├── KInputBoxEmojiView.h
│ │ │ ├── KInputBoxEmojiView.m
│ │ │ ├── KInputBoxMoreItemView.h
│ │ │ ├── KInputBoxMoreItemView.m
│ │ │ ├── KInputBoxMoreUnitView.h
│ │ │ ├── KInputBoxMoreUnitView.m
│ │ │ ├── KInputBoxMoreView.h
│ │ │ ├── KInputBoxMoreView.m
│ │ │ ├── KInputBoxRecorderView.h
│ │ │ ├── KInputBoxRecorderView.m
│ │ │ ├── KInputBoxView.h
│ │ │ ├── KInputBoxView.m
│ │ │ ├── KInputBoxViewCtrl.h
│ │ │ ├── KInputBoxViewCtrl.m
│ │ │ ├── KInputBoxViewDelegate.h
│ │ │ ├── KPlayer.h
│ │ │ ├── KPlayer.m
│ │ │ ├── KRecordView.h
│ │ │ ├── KRecordView.m
│ │ │ ├── KTextView.h
│ │ │ ├── KTextView.m
│ │ │ ├── KVideoProgressView.h
│ │ │ └── KVideoProgressView.m
│ ├── Model
│ │ ├── KChatMessageHelper.h
│ │ ├── KChatMessageHelper.m
│ │ ├── KConversationModel.h
│ │ ├── KConversationModel.m
│ │ ├── KMailAccountInfoModel.h
│ │ ├── KMailAccountInfoModel.m
│ │ ├── KMessageModel.h
│ │ ├── KMessageModel.m
│ │ ├── KPhotoPreviewModel.h
│ │ └── KPhotoPreviewModel.m
│ ├── Resource
│ │ ├── conversationList
│ │ ├── messageList101824_143701
│ │ ├── previewPicture.jpeg
│ │ └── reviewVideo.mp4
│ ├── Utils
│ │ ├── ColorTools.h
│ │ ├── ColorTools.m
│ │ ├── KAppDefaultUtil.h
│ │ ├── KAppDefaultUtil.m
│ │ ├── KProgressView.h
│ │ └── KProgressView.m
│ └── View
│ │ ├── KChatImageTableViewCell.h
│ │ ├── KChatImageTableViewCell.m
│ │ ├── KChatMailTableViewCell.h
│ │ ├── KChatMailTableViewCell.m
│ │ ├── KChatTableViewCell.h
│ │ ├── KChatTableViewCell.m
│ │ ├── KChatTableViewCellDelegate.h
│ │ ├── KChatTextTableViewCell.h
│ │ ├── KChatTextTableViewCell.m
│ │ ├── KChatVideoTableViewCell.h
│ │ ├── KChatVideoTableViewCell.m
│ │ ├── KChatVoiceTableViewCell.h
│ │ ├── KChatVoiceTableViewCell.m
│ │ ├── KMessagesListTableViewCell.h
│ │ └── KMessagesListTableViewCell.m
├── PrefixHeader.pch
└── main.m
├── RChatTests
├── Info.plist
└── RChatTests.m
├── RChatUITests
├── Info.plist
└── RChatUITests.m
└── README.md
/.gitignore:
--------------------------------------------------------------------------------
1 | # Xcode
2 | #
3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
4 | # Mac OS X Finder and whatnot
5 | .DS_Store
6 | ## Build generated
7 | build/
8 | DerivedData/
9 | ## Various settings
10 | *.pbxuser
11 | !default.pbxuser
12 | *.mode1v3
13 | !default.mode1v3
14 | *.mode2v3
15 | !default.mode2v3
16 | *.perspectivev3
17 | !default.perspectivev3
18 | xcuserdata/
19 | ## Other
20 | *.moved-aside
21 | *.xcuserstate
22 | *.xccheckout
23 | ## Obj-C/Swift specific
24 | *.hmap
25 | *.ipa
26 | *.dSYM.zip
27 | *.dSYM
28 | #CocoaPods
29 | Pods/
--------------------------------------------------------------------------------
/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment the next line to define a global platform for your project
2 | # platform :ios, '9.0'
3 |
4 | target 'RChat' do
5 | # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
6 | # use_frameworks!
7 | pod 'MJRefresh' #上下拉刷新
8 | pod 'SDAutoLayout' #自动约束布局
9 | pod 'SDWebImage' #图片加载库
10 | pod 'SVProgressHUD' #弹窗指示器
11 | pod 'AFNetworking' #网络请求库
12 | pod 'TZImagePickerController'
13 | # Pods for RChat
14 |
15 | target 'RChatTests' do
16 | inherit! :search_paths
17 | # Pods for testing
18 | end
19 |
20 | target 'RChatUITests' do
21 | inherit! :search_paths
22 | # Pods for testing
23 | end
24 |
25 | end
26 |
--------------------------------------------------------------------------------
/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - AFNetworking (3.2.1):
3 | - AFNetworking/NSURLSession (= 3.2.1)
4 | - AFNetworking/Reachability (= 3.2.1)
5 | - AFNetworking/Security (= 3.2.1)
6 | - AFNetworking/Serialization (= 3.2.1)
7 | - AFNetworking/UIKit (= 3.2.1)
8 | - AFNetworking/NSURLSession (3.2.1):
9 | - AFNetworking/Reachability
10 | - AFNetworking/Security
11 | - AFNetworking/Serialization
12 | - AFNetworking/Reachability (3.2.1)
13 | - AFNetworking/Security (3.2.1)
14 | - AFNetworking/Serialization (3.2.1)
15 | - AFNetworking/UIKit (3.2.1):
16 | - AFNetworking/NSURLSession
17 | - MJRefresh (3.1.15.3)
18 | - SDAutoLayout (2.2.1)
19 | - SDWebImage (4.4.2):
20 | - SDWebImage/Core (= 4.4.2)
21 | - SDWebImage/Core (4.4.2)
22 | - SVProgressHUD (2.2.5)
23 | - TZImagePickerController (2.2.5)
24 |
25 | DEPENDENCIES:
26 | - AFNetworking
27 | - MJRefresh
28 | - SDAutoLayout
29 | - SDWebImage
30 | - SVProgressHUD
31 | - TZImagePickerController
32 |
33 | SPEC REPOS:
34 | https://github.com/CocoaPods/Specs.git:
35 | - AFNetworking
36 | - MJRefresh
37 | - SDAutoLayout
38 | - SDWebImage
39 | - SVProgressHUD
40 | - TZImagePickerController
41 |
42 | SPEC CHECKSUMS:
43 | AFNetworking: b6f891fdfaed196b46c7a83cf209e09697b94057
44 | MJRefresh: b48380ae2b927b46c4ef000de9adb8dc748e1df7
45 | SDAutoLayout: 8bf6b3bbc8b01f775d4defbb4fda2ace805461be
46 | SDWebImage: 624d6e296c69b244bcede364c72ae0430ac14681
47 | SVProgressHUD: 1428aafac632c1f86f62aa4243ec12008d7a51d6
48 | TZImagePickerController: cf5c9f0ae343e2eb1912b26e4d9fa811b3159319
49 |
50 | PODFILE CHECKSUM: e802b9d5080f7f738aaeffa5622da4b3427c4473
51 |
52 | COCOAPODS: 1.5.0
53 |
--------------------------------------------------------------------------------
/RChat.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/RChat.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/RChat.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/RChat.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/RChat/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // RChat
4 | //
5 | // Created by eims on 2018/9/4.
6 | // Copyright © 2018年 RPK. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 |
16 | @end
17 |
18 |
--------------------------------------------------------------------------------
/RChat/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "20x20",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "20x20",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "29x29",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "29x29",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "40x40",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "40x40",
31 | "scale" : "3x"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "size" : "60x60",
36 | "scale" : "2x"
37 | },
38 | {
39 | "idiom" : "iphone",
40 | "size" : "60x60",
41 | "scale" : "3x"
42 | },
43 | {
44 | "idiom" : "ipad",
45 | "size" : "20x20",
46 | "scale" : "1x"
47 | },
48 | {
49 | "idiom" : "ipad",
50 | "size" : "20x20",
51 | "scale" : "2x"
52 | },
53 | {
54 | "idiom" : "ipad",
55 | "size" : "29x29",
56 | "scale" : "1x"
57 | },
58 | {
59 | "idiom" : "ipad",
60 | "size" : "29x29",
61 | "scale" : "2x"
62 | },
63 | {
64 | "idiom" : "ipad",
65 | "size" : "40x40",
66 | "scale" : "1x"
67 | },
68 | {
69 | "idiom" : "ipad",
70 | "size" : "40x40",
71 | "scale" : "2x"
72 | },
73 | {
74 | "idiom" : "ipad",
75 | "size" : "76x76",
76 | "scale" : "1x"
77 | },
78 | {
79 | "idiom" : "ipad",
80 | "size" : "76x76",
81 | "scale" : "2x"
82 | },
83 | {
84 | "idiom" : "ipad",
85 | "size" : "83.5x83.5",
86 | "scale" : "2x"
87 | },
88 | {
89 | "idiom" : "ios-marketing",
90 | "size" : "1024x1024",
91 | "scale" : "1x"
92 | }
93 | ],
94 | "info" : {
95 | "version" : 1,
96 | "author" : "xcode"
97 | }
98 | }
--------------------------------------------------------------------------------
/RChat/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/RChat/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/RChat/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/RChat/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | NSPhotoLibraryUsageDescription
6 | 需要您的同意,APP才能访问相册
7 | NSCameraUsageDescription
8 | 需要您的同意,APP才能访问相机
9 | NSMicrophoneUsageDescription
10 | 需要您的同意,APP才能访问麦克风
11 | CFBundleDevelopmentRegion
12 | $(DEVELOPMENT_LANGUAGE)
13 | NSAppTransportSecurity
14 |
15 | NSAllowsArbitraryLoads
16 |
17 |
18 | CFBundleExecutable
19 | $(EXECUTABLE_NAME)
20 | CFBundleIdentifier
21 | $(PRODUCT_BUNDLE_IDENTIFIER)
22 | CFBundleInfoDictionaryVersion
23 | 6.0
24 | CFBundleName
25 | $(PRODUCT_NAME)
26 | CFBundlePackageType
27 | APPL
28 | CFBundleShortVersionString
29 | 1.0
30 | CFBundleVersion
31 | 1
32 | LSRequiresIPhoneOS
33 |
34 | UILaunchStoryboardName
35 | LaunchScreen
36 | UIMainStoryboardFile
37 | Main
38 | UIRequiredDeviceCapabilities
39 |
40 | armv7
41 |
42 | UISupportedInterfaceOrientations
43 |
44 | UIInterfaceOrientationPortrait
45 | UIInterfaceOrientationLandscapeLeft
46 | UIInterfaceOrientationLandscapeRight
47 |
48 | UISupportedInterfaceOrientations~ipad
49 |
50 | UIInterfaceOrientationPortrait
51 | UIInterfaceOrientationPortraitUpsideDown
52 | UIInterfaceOrientationLandscapeLeft
53 | UIInterfaceOrientationLandscapeRight
54 |
55 | nsap
56 |
57 |
58 |
59 |
--------------------------------------------------------------------------------
/RChat/MessageIcon/icon_inputBox_recoder_too_short.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/MessageIcon/icon_inputBox_recoder_too_short.png
--------------------------------------------------------------------------------
/RChat/MessageIcon/icon_inputBox_recorder_prompt1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/MessageIcon/icon_inputBox_recorder_prompt1.png
--------------------------------------------------------------------------------
/RChat/MessageIcon/icon_inputBox_recorder_prompt2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/MessageIcon/icon_inputBox_recorder_prompt2.png
--------------------------------------------------------------------------------
/RChat/MessageIcon/icon_inputBox_recorder_prompt3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/MessageIcon/icon_inputBox_recorder_prompt3.png
--------------------------------------------------------------------------------
/RChat/MessageIcon/icon_inputBox_recorder_prompt4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/MessageIcon/icon_inputBox_recorder_prompt4.png
--------------------------------------------------------------------------------
/RChat/MessageIcon/icon_inputBox_recorder_prompt5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/MessageIcon/icon_inputBox_recorder_prompt5.png
--------------------------------------------------------------------------------
/RChat/MessageIcon/icon_inputBox_recorder_prompt_recall.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/MessageIcon/icon_inputBox_recorder_prompt_recall.png
--------------------------------------------------------------------------------
/RChat/MessageIcon/icon_inputBox_recorder_prompt_voice.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/MessageIcon/icon_inputBox_recorder_prompt_voice.png
--------------------------------------------------------------------------------
/RChat/MessageIcon/icon_message_attachments@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/MessageIcon/icon_message_attachments@3x.png
--------------------------------------------------------------------------------
/RChat/MessageIcon/icon_message_send_failure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/MessageIcon/icon_message_send_failure.png
--------------------------------------------------------------------------------
/RChat/MessageIcon/icon_message_sending@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/MessageIcon/icon_message_sending@3x.png
--------------------------------------------------------------------------------
/RChat/MessageIcon/icon_message_voice_receive_0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/MessageIcon/icon_message_voice_receive_0@2x.png
--------------------------------------------------------------------------------
/RChat/MessageIcon/icon_message_voice_receive_0@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/MessageIcon/icon_message_voice_receive_0@3x.png
--------------------------------------------------------------------------------
/RChat/MessageIcon/icon_message_voice_receive_1@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/MessageIcon/icon_message_voice_receive_1@2x.png
--------------------------------------------------------------------------------
/RChat/MessageIcon/icon_message_voice_receive_1@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/MessageIcon/icon_message_voice_receive_1@3x.png
--------------------------------------------------------------------------------
/RChat/MessageIcon/icon_message_voice_receive_2@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/MessageIcon/icon_message_voice_receive_2@2x.png
--------------------------------------------------------------------------------
/RChat/MessageIcon/icon_message_voice_receive_2@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/MessageIcon/icon_message_voice_receive_2@3x.png
--------------------------------------------------------------------------------
/RChat/MessageIcon/icon_message_voice_send_0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/MessageIcon/icon_message_voice_send_0@2x.png
--------------------------------------------------------------------------------
/RChat/MessageIcon/icon_message_voice_send_0@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/MessageIcon/icon_message_voice_send_0@3x.png
--------------------------------------------------------------------------------
/RChat/MessageIcon/icon_message_voice_send_1@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/MessageIcon/icon_message_voice_send_1@2x.png
--------------------------------------------------------------------------------
/RChat/MessageIcon/icon_message_voice_send_1@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/MessageIcon/icon_message_voice_send_1@3x.png
--------------------------------------------------------------------------------
/RChat/MessageIcon/icon_message_voice_send_2@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/MessageIcon/icon_message_voice_send_2@2x.png
--------------------------------------------------------------------------------
/RChat/MessageIcon/icon_message_voice_send_2@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/MessageIcon/icon_message_voice_send_2@3x.png
--------------------------------------------------------------------------------
/RChat/MessageIcon/receiver_message_background@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/MessageIcon/receiver_message_background@3x.png
--------------------------------------------------------------------------------
/RChat/MessageIcon/sender_message_background@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/MessageIcon/sender_message_background@3x.png
--------------------------------------------------------------------------------
/RChat/Messages/BAPhotoBrowser/Model/KPhoto.h:
--------------------------------------------------------------------------------
1 | //
2 | // BAPhoto.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/17.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface KPhoto : NSObject
12 | // 默认图
13 | @property (nonatomic, strong) UIImage *defaultImage;
14 | // 缩略图url
15 | @property (nonatomic, strong) NSString *thumbUrl;
16 | // 高清图片url
17 | @property (nonatomic, strong) NSString *imageUrl;
18 | // 视频url
19 | @property (nonatomic, strong) NSString *videoUrl;
20 |
21 | - (BOOL)isEmpty;
22 | - (BOOL)isVideo;
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/RChat/Messages/BAPhotoBrowser/Model/KPhoto.m:
--------------------------------------------------------------------------------
1 | //
2 | // KPhoto.m
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/17.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import "KPhoto.h"
10 |
11 | @implementation KPhoto
12 |
13 | - (BOOL)isEmpty {
14 | if (self.videoUrl == nil && self.defaultImage == nil && self.imageUrl == nil && self.thumbUrl == nil) {
15 | return YES;
16 | }
17 | else {
18 | return NO;
19 | }
20 | }
21 |
22 | - (BOOL)isVideo {
23 | if (self.videoUrl != nil) {
24 | return YES;
25 | }
26 | return NO;
27 | }
28 |
29 | @end
30 |
--------------------------------------------------------------------------------
/RChat/Messages/BAPhotoBrowser/Resource/icon_inputBox_thumb@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/BAPhotoBrowser/Resource/icon_inputBox_thumb@3x.png
--------------------------------------------------------------------------------
/RChat/Messages/BAPhotoBrowser/Resource/icon_inputBox_videoPlay_cancel@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/BAPhotoBrowser/Resource/icon_inputBox_videoPlay_cancel@3x.png
--------------------------------------------------------------------------------
/RChat/Messages/BAPhotoBrowser/Resource/icon_inputBox_video_ pause@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/BAPhotoBrowser/Resource/icon_inputBox_video_ pause@3x.png
--------------------------------------------------------------------------------
/RChat/Messages/BAPhotoBrowser/Resource/icon_inputBox_video_bttom_play@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/BAPhotoBrowser/Resource/icon_inputBox_video_bttom_play@3x.png
--------------------------------------------------------------------------------
/RChat/Messages/BAPhotoBrowser/Resource/icon_inputBox_video_play@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/BAPhotoBrowser/Resource/icon_inputBox_video_play@3x.png
--------------------------------------------------------------------------------
/RChat/Messages/BAPhotoBrowser/View/BAProgressView.h:
--------------------------------------------------------------------------------
1 | //
2 | // BAProgressView.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/17.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #import "KPhotoBrowserConfig.h"
12 |
13 | @interface BAProgressView : UIView
14 |
15 | @property (nonatomic, assign) CGFloat progress;
16 | @property (nonatomic, assign) KProgressViewMode mode;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/RChat/Messages/BAPhotoBrowser/View/FSActionSheet/FSActionSheetCell.h:
--------------------------------------------------------------------------------
1 | //
2 | // FSActionSheetCell.h
3 | // FSActionSheet
4 | //
5 | // Created by Steven on 6/7/16.
6 | // Copyright © 2016年 Steven. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "FSActionSheetConfig.h"
11 | @class FSActionSheetItem;
12 |
13 | @interface FSActionSheetCell : UITableViewCell
14 |
15 | @property (nonatomic, assign) FSContentAlignment contentAlignment;
16 | @property (nonatomic, strong) FSActionSheetItem *item;
17 | @property (nonatomic, assign) BOOL hideTopLine; ///< 是否隐藏顶部线条
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/RChat/Messages/BAPhotoBrowser/View/FSActionSheet/FSActionSheetConfig.m:
--------------------------------------------------------------------------------
1 | //
2 | // FSActionSheetConfig.m
3 | // FSActionSheet
4 | //
5 | // Created by Steven on 6/8/16.
6 | // Copyright © 2016 Steven. All rights reserved.
7 | //
8 |
9 | #import "FSActionSheetConfig.h"
10 |
11 | // float
12 | CGFloat const FSActionSheetDefaultMargin = 10; ///< 默认边距 (标题四边边距, 选项靠左或靠右时距离边缘的距离)
13 | CGFloat const FSActionSheetContentMaxScale = 0.65; ///< 弹窗内容高度与屏幕高度的默认比例
14 | CGFloat const FSActionSheetRowHeight = 44; ///< 行高
15 | CGFloat const FSActionSheetTitleLineSpacing = 2.5; ///< 标题行距
16 | CGFloat const FSActionSheetTitleKernSpacing = 0.5; ///< 标题字距
17 | CGFloat const FSActionSheetItemTitleFontSize = 16; ///< 选项文字字体大小, default is 16.
18 | CGFloat const FSActionSheetItemContentSpacing = 5; ///< 选项图片和文字的间距
19 | // color
20 | NSString * const FSActionSheetTitleColor = @"#888888"; ///< 标题颜色
21 | NSString * const FSActionSheetBackColor = @"#E8E8ED"; ///< 背景颜色
22 | NSString * const FSActionSheetRowNormalColor = @"#FBFBFE"; ///< 单元格背景颜色
23 | NSString * const FSActionSheetRowHighlightedColor = @"#F1F1F5"; ///< 选中高亮颜色
24 | NSString * const FSActionSheetRowTopLineColor = @"#D7D7D8"; ///< 单元格顶部线条颜色
25 | NSString * const FSActionSheetItemNormalColor = @"#000000"; ///< 选项默认颜色
26 | NSString * const FSActionSheetItemHighlightedColor = @"#E64340"; ///< 选项高亮颜色
27 |
--------------------------------------------------------------------------------
/RChat/Messages/BAPhotoBrowser/View/FSActionSheet/FSActionSheetItem.h:
--------------------------------------------------------------------------------
1 | //
2 | // FSActionSheetItem.h
3 | // FSActionSheet
4 | //
5 | // Created by Steven on 16/5/11.
6 | // Copyright © 2016年 Steven. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "FSActionSheetConfig.h"
11 |
12 | @interface FSActionSheetItem : NSObject
13 |
14 | @property (nonatomic, assign) FSActionSheetType type; ///< 选项类型, 有 默认 和 高亮 两种类型.
15 | @property (nonatomic, strong) UIImage *image; ///< 选项图标, 建议image的size为 @2x: 46x46, @3x: 69x69.
16 | @property (nonatomic, copy) NSString *title; ///< 选项标题
17 | @property (nonatomic, strong) UIColor *tintColor; ///< 选项前景色, 如果设置了这个颜色的话, 则无论选项设置的图标是什么颜色都会被修改为当前设置的这个颜色,
18 | ///< 同时这个颜色也会是标题的文本颜色.
19 |
20 | + (instancetype)itemWithType:(FSActionSheetType)type image:(UIImage *)image title:(NSString *)title tintColor:(UIColor *)tintColor;
21 |
22 | @end
23 |
24 | /*! @author Steven
25 | * @brief 单标题的选项
26 | * @param type 类型
27 | * @param title 标题
28 | */
29 | NS_INLINE FSActionSheetItem *FSActionSheetTitleItemMake(FSActionSheetType type, NSString *title) {
30 | return [FSActionSheetItem itemWithType:type image:nil title:title tintColor:nil];
31 | }
32 |
33 | /*! @author Steven
34 | * @brief 标题和图标的选项
35 | * @param type 类型
36 | * @param image 图片
37 | * @param title 标题
38 | */
39 | NS_INLINE FSActionSheetItem *FSActionSheetTitleWithImageItemMake(FSActionSheetType type, UIImage *image, NSString *title) {
40 | return [FSActionSheetItem itemWithType:type image:image title:title tintColor:nil];
41 | }
42 |
43 | /*! @author Steven
44 | * @brief 单标题且自定义前景色的选项
45 | * @param type 类型
46 | * @param title 标题
47 | * @param tintColor 自定义前景色
48 | */
49 | NS_INLINE FSActionSheetItem *FSActionSheetTitleWithColorItemMake(FSActionSheetType type, NSString *title, UIColor *tintColor) {
50 | return [FSActionSheetItem itemWithType:type image:nil title:title tintColor:tintColor];
51 | }
52 |
53 | /*! @author Steven
54 | * @brief 标题和图片并且自定义前景色的选项
55 | * @param type 类型
56 | * @param title 标题
57 | * @param image 图片
58 | * @param tintColor 自定义前景色
59 | */
60 | NS_INLINE FSActionSheetItem *FSActionSheetItemMake(FSActionSheetType type, UIImage *image, NSString *title, UIColor *tintColor) {
61 | return [FSActionSheetItem itemWithType:type image:image title:title tintColor:tintColor];
62 | }
63 |
64 |
65 |
--------------------------------------------------------------------------------
/RChat/Messages/BAPhotoBrowser/View/FSActionSheet/FSActionSheetItem.m:
--------------------------------------------------------------------------------
1 | //
2 | // FSActionSheetItem.m
3 | // FSActionSheet
4 | //
5 | // Created by Steven on 16/5/11.
6 | // Copyright © 2016年 Steven. All rights reserved.
7 | //
8 |
9 | #import "FSActionSheetItem.h"
10 |
11 | @implementation FSActionSheetItem
12 |
13 | + (instancetype)itemWithType:(FSActionSheetType)type image:(UIImage *)image title:(NSString *)title tintColor:(UIColor *)tintColor {
14 |
15 | FSActionSheetItem *item = [[FSActionSheetItem alloc] init];
16 | item.type = type;
17 | item.image = image;
18 | item.title = title;
19 | item.tintColor = tintColor;
20 |
21 | return item;
22 | }
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/RChat/Messages/BAPhotoBrowser/View/KVideoPlayView.h:
--------------------------------------------------------------------------------
1 | //
2 | // KVideoPlayView.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/17.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @class KVideoPlayView;
12 | @protocol KVideoPlayViewDelegate
13 |
14 | - (void)videoPlayView:(KVideoPlayView *)videoPlayView clickBackButton:(UIButton *)back;
15 |
16 | @end
17 |
18 |
19 | @interface KVideoPlayView : UIView
20 |
21 | // 视频URL
22 | @property (nonatomic, strong) NSURL *videoUrl;
23 |
24 | @property (nonatomic, assign) id delegate;
25 |
26 | - (void)play;
27 | - (void)stop;
28 |
29 | @end
30 |
--------------------------------------------------------------------------------
/RChat/Messages/BAPhotoBrowser/View/KZoomingScrollView.h:
--------------------------------------------------------------------------------
1 | //
2 | // KZoomingScrollView.h
3 | // XLPhotoBrowserDemo
4 | //
5 | // Created by Liushannoon on 16/7/15.
6 | // Copyright © 2016年 LiuShannoon. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #import "KPhoto.h"
12 |
13 | @class KVideoPlayView;
14 | @class KZoomingScrollView;
15 |
16 | @protocol KZoomingScrollViewDelegate
17 |
18 | /**
19 | * 单击图像时调用
20 | *
21 | * @param zoomingScrollView 图片缩放视图
22 | * @param singleTap 用户单击手势
23 | */
24 | - (void)zoomingScrollView:(KZoomingScrollView *)zoomingScrollView singleTapDetected:(UITapGestureRecognizer *)singleTap;
25 |
26 | @optional
27 | /**
28 | * 图片加载进度
29 | *
30 | * @param zoomingScrollView 图片缩放视图
31 | * @param progress 加载进度 , 0 - 1.0
32 | */
33 | - (void)zoomingScrollView:(KZoomingScrollView *)zoomingScrollView imageLoadProgress:(CGFloat)progress;
34 |
35 | @end
36 |
37 |
38 | @interface KZoomingScrollView : UIView
39 |
40 | @property (nonatomic, assign) BOOL isAutoPlay;
41 |
42 | /**
43 | * zoomingScrollViewdelegate
44 | */
45 | @property (nonatomic , weak) id zoomingScrollViewdelegate;
46 | // 视频播放器
47 | @property (nonatomic, strong) KVideoPlayView *videoPlayer;
48 | /**
49 | * 图片加载进度
50 | */
51 | @property (nonatomic, assign) CGFloat progress;
52 | /**
53 | * 展示的图片
54 | */
55 | //@property (nonatomic , strong , readonly) UIImage *currentImage;
56 |
57 | /**
58 | 需要展示的数据。可能是图片,也可能是视频
59 | */
60 | @property (nonatomic, strong) KPhoto *photo;
61 | /**
62 | * 展示图片的UIImageView视图 , 回缩的动画用
63 | */
64 | @property (nonatomic , weak , readonly) UIImageView *imageView;
65 | @property (nonatomic , strong , readonly) UIScrollView *scrollview;
66 |
67 | /**
68 | * 显示图片
69 | *
70 | * @param photo 占位的缩略图 / 或者是高清大图都可以
71 | */
72 | - (void)setShowHighQualityImageWithPhoto:(KPhoto *)photo;
73 | /**
74 | * 显示图片
75 | *
76 | * @param photo 图片
77 | */
78 | - (void)setShowImage:(KPhoto *)photo;
79 | /**
80 | * 调整尺寸
81 | */
82 | - (void)setMaxAndMinZoomScales;
83 | /**
84 | * 重用,清理资源
85 | */
86 | - (void)prepareForReuse;
87 |
88 | @end
89 |
--------------------------------------------------------------------------------
/RChat/Messages/BAPhotoBrowser/View/PageControl/TAAbstractDotView.h:
--------------------------------------------------------------------------------
1 | //
2 | // TAAbstractDotView.h
3 | // TAPageControl
4 | //
5 | // Created by Tanguy Aladenise on 2015-01-22.
6 | // Copyright (c) 2015 Tanguy Aladenise. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 |
12 | @interface TAAbstractDotView : UIView
13 |
14 |
15 | /**
16 | * A method call let view know which state appearance it should take. Active meaning it's current page. Inactive not the current page.
17 | *
18 | * @param active BOOL to tell if view is active or not
19 | */
20 | - (void)changeActivityState:(BOOL)active;
21 |
22 |
23 | @end
24 |
25 |
--------------------------------------------------------------------------------
/RChat/Messages/BAPhotoBrowser/View/PageControl/TAAbstractDotView.m:
--------------------------------------------------------------------------------
1 | //
2 | // TAAbstractDotView.m
3 | // TAPageControl
4 | //
5 | // Created by Tanguy Aladenise on 2015-01-22.
6 | // Copyright (c) 2015 Tanguy Aladenise. All rights reserved.
7 | //
8 |
9 | #import "TAAbstractDotView.h"
10 |
11 |
12 | @implementation TAAbstractDotView
13 |
14 |
15 | - (id)init
16 | {
17 | @throw [NSException exceptionWithName:NSInternalInconsistencyException
18 | reason:[NSString stringWithFormat:@"You must override %@ in %@", NSStringFromSelector(_cmd), self.class]
19 | userInfo:nil];
20 | }
21 |
22 |
23 | - (void)changeActivityState:(BOOL)active
24 | {
25 | @throw [NSException exceptionWithName:NSInternalInconsistencyException
26 | reason:[NSString stringWithFormat:@"You must override %@ in %@", NSStringFromSelector(_cmd), self.class]
27 | userInfo:nil];
28 | }
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/RChat/Messages/BAPhotoBrowser/View/PageControl/TAAnimatedDotView.h:
--------------------------------------------------------------------------------
1 | //
2 | // TAAnimatedDotView.h
3 | // TAPageControl
4 | //
5 | // Created by Tanguy Aladenise on 2015-01-22.
6 | // Copyright (c) 2015 Tanguy Aladenise. All rights reserved.
7 | //
8 |
9 | #import "TAAbstractDotView.h"
10 |
11 | @interface TAAnimatedDotView : TAAbstractDotView
12 |
13 | @property (nonatomic, strong) UIColor *dotColor;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/RChat/Messages/BAPhotoBrowser/View/PageControl/TAAnimatedDotView.m:
--------------------------------------------------------------------------------
1 | //
2 | // TAAnimatedDotView.m
3 | // TAPageControl
4 | //
5 | // Created by Tanguy Aladenise on 2015-01-22.
6 | // Copyright (c) 2015 Tanguy Aladenise. All rights reserved.
7 | //
8 |
9 | #import "TAAnimatedDotView.h"
10 |
11 | static CGFloat const kAnimateDuration = 1;
12 |
13 | @implementation TAAnimatedDotView
14 |
15 | - (instancetype)init
16 | {
17 | self = [super init];
18 | if (self) {
19 | [self initialization];
20 | }
21 |
22 | return self;
23 | }
24 |
25 |
26 | - (id)initWithFrame:(CGRect)frame
27 | {
28 | self = [super initWithFrame:frame];
29 | if (self) {
30 | [self initialization];
31 | }
32 | return self;
33 | }
34 |
35 |
36 | - (id)initWithCoder:(NSCoder *)aDecoder
37 | {
38 | self = [super initWithCoder:aDecoder];
39 | if (self) {
40 | [self initialization];
41 | }
42 |
43 | return self;
44 | }
45 |
46 | - (void)setDotColor:(UIColor *)dotColor
47 | {
48 | _dotColor = dotColor;
49 | self.layer.borderColor = dotColor.CGColor;
50 | }
51 |
52 | - (void)initialization
53 | {
54 | _dotColor = [UIColor whiteColor];
55 | self.backgroundColor = [UIColor clearColor];
56 | self.layer.cornerRadius = CGRectGetWidth(self.frame) / 2;
57 | self.layer.borderColor = [UIColor whiteColor].CGColor;
58 | self.layer.borderWidth = 1;
59 | }
60 |
61 |
62 | - (void)changeActivityState:(BOOL)active
63 | {
64 | if (active) {
65 | [self animateToActiveState];
66 | } else {
67 | [self animateToDeactiveState];
68 | }
69 | }
70 |
71 | static CGFloat damping = 0.25;
72 |
73 | - (void)animateToActiveState
74 | {
75 | [UIView animateWithDuration:kAnimateDuration delay:0 usingSpringWithDamping:damping initialSpringVelocity:-20 options:UIViewAnimationOptionCurveLinear animations:^{
76 | self.backgroundColor = _dotColor;
77 | self.transform = CGAffineTransformMakeScale(1.4, 1.4);
78 | } completion:nil];
79 | }
80 |
81 | - (void)animateToDeactiveState
82 | {
83 | [UIView animateWithDuration:kAnimateDuration delay:0 usingSpringWithDamping:damping initialSpringVelocity:0 options:UIViewAnimationOptionCurveLinear animations:^{
84 | self.backgroundColor = [UIColor clearColor];
85 | self.transform = CGAffineTransformIdentity;
86 | } completion:nil];
87 | }
88 |
89 | @end
90 |
--------------------------------------------------------------------------------
/RChat/Messages/BAPhotoBrowser/View/PageControl/TADotView.h:
--------------------------------------------------------------------------------
1 | //
2 | // TADotView.h
3 | // TAPageControl
4 | //
5 | // Created by Tanguy Aladenise on 2015-01-22.
6 | // Copyright (c) 2015 Tanguy Aladenise. All rights reserved.
7 | //
8 |
9 | #import "TAAbstractDotView.h"
10 |
11 | @interface TADotView : TAAbstractDotView
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/RChat/Messages/BAPhotoBrowser/View/PageControl/TADotView.m:
--------------------------------------------------------------------------------
1 | //
2 | // TADotView.m
3 | // TAPageControl
4 | //
5 | // Created by Tanguy Aladenise on 2015-01-22.
6 | // Copyright (c) 2015 Tanguy Aladenise. All rights reserved.
7 | //
8 |
9 | #import "TADotView.h"
10 |
11 | @implementation TADotView
12 |
13 |
14 | - (instancetype)init
15 | {
16 | self = [super init];
17 | if (self) {
18 | [self initialization];
19 | }
20 |
21 | return self;
22 | }
23 |
24 |
25 | - (id)initWithFrame:(CGRect)frame
26 | {
27 | self = [super initWithFrame:frame];
28 | if (self) {
29 | [self initialization];
30 | }
31 | return self;
32 | }
33 |
34 |
35 | - (id)initWithCoder:(NSCoder *)aDecoder
36 | {
37 | self = [super initWithCoder:aDecoder];
38 | if (self) {
39 | [self initialization];
40 | }
41 |
42 | return self;
43 | }
44 |
45 | - (void)initialization
46 | {
47 | self.backgroundColor = [UIColor clearColor];
48 | self.layer.cornerRadius = CGRectGetWidth(self.frame) / 2;
49 | self.layer.borderColor = [UIColor whiteColor].CGColor;
50 | self.layer.borderWidth = 1;
51 | }
52 |
53 |
54 | - (void)changeActivityState:(BOOL)active
55 | {
56 | if (active) {
57 | self.backgroundColor = [UIColor whiteColor];
58 | } else {
59 | self.backgroundColor = [UIColor clearColor];
60 | }
61 | }
62 |
63 | @end
64 |
--------------------------------------------------------------------------------
/RChat/Messages/Category/KNetworkDetection.h:
--------------------------------------------------------------------------------
1 | //
2 | // KNetworkDetection.h
3 | // KXiniuCloud
4 | //
5 | // Created by RPK on 2018/7/3.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface KNetworkDetection : NSObject
12 |
13 | /**
14 | 单例
15 |
16 | @return 实例对象
17 | */
18 | + (instancetype)shareInstance;
19 |
20 | /**
21 | 检测网络是否可用
22 |
23 | @return YES:可用,NO:不可用
24 | */
25 | - (BOOL)checkNetCanUse;
26 |
27 | /**
28 | 过滤html
29 |
30 | @param html HTML页面
31 | @return HTML字符串
32 | */
33 | - (NSString *)filterHTML:(NSString *)html;
34 | @end
35 |
--------------------------------------------------------------------------------
/RChat/Messages/Category/NSArray+Json.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSArray+Json.h
3 | // KXiniuCloud
4 | //
5 | // Created by RPK on 2018/6/19.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface NSArray (Json)
12 |
13 | /**
14 | json转数组
15 |
16 | @param jsonStr json字符串
17 | @return 数组
18 | */
19 | + (instancetype)arrayWithJsonStr:(NSString *)jsonStr;
20 |
21 | /**
22 | 数组转json
23 |
24 | @return json字符串
25 | */
26 | - (NSString *)toJSONString;
27 | @end
28 |
--------------------------------------------------------------------------------
/RChat/Messages/Category/NSArray+Json.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSArray+Json.m
3 | // KXiniuCloud
4 | //
5 | // Created by RPK on 2018/6/19.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import "NSArray+Json.h"
10 |
11 | @implementation NSArray (Json)
12 |
13 | /**
14 | json转数组
15 |
16 | @param jsonStr json字符串
17 | @return 数组
18 | */
19 | + (instancetype)arrayWithJsonStr:(NSString *)jsonStr {
20 | if (!jsonStr) {
21 | return nil;
22 | }
23 | return [NSJSONSerialization JSONObjectWithData:[jsonStr dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingAllowFragments | NSJSONReadingMutableLeaves | NSJSONReadingMutableContainers error:nil];
24 | }
25 |
26 | /**
27 | 数组转json
28 |
29 | @return json字符串
30 | */
31 | - (NSString *)toJSONString
32 | {
33 | NSData *data = [NSJSONSerialization dataWithJSONObject:self
34 | options:NSJSONReadingMutableLeaves | NSJSONReadingAllowFragments
35 | error:nil];
36 |
37 | if (data == nil) {
38 | return nil;
39 | }
40 |
41 | NSString *string = [[NSString alloc] initWithData:data
42 | encoding:NSUTF8StringEncoding];
43 | return string;
44 | }
45 |
46 | @end
47 |
--------------------------------------------------------------------------------
/RChat/Messages/Category/NSAttributedString+Addition.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSAttributedString+Addition.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/29.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @class KTextBackedString;
12 |
13 | @interface NSAttributedString (Addition)
14 |
15 | - (NSRange)rangeOfAll;
16 |
17 | - (nullable NSString *)plainTextForRange:(NSRange)range;
18 |
19 | @end
20 |
21 | @interface NSMutableAttributedString (Addition)
22 |
23 | - (void)setTextBackedString:(nullable KTextBackedString *)textBackedString range:(NSRange)range;
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/RChat/Messages/Category/NSAttributedString+Addition.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSAttributedString+Addition.m
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/29.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import "NSAttributedString+Addition.h"
10 | #import "NSTextAttachment+Emoji.h"
11 |
12 | @implementation NSAttributedString (Addition)
13 |
14 | - (NSRange)rangeOfAll
15 | {
16 | return NSMakeRange(0, self.length);
17 | }
18 |
19 | - (NSString *)plainTextForRange:(NSRange)range
20 | {
21 | if (range.location == NSNotFound || range.length == NSNotFound) {
22 | return nil;
23 | }
24 |
25 | NSMutableString *result = [[NSMutableString alloc] init];
26 | if (range.length == 0) {
27 | return result;
28 | }
29 |
30 | NSString *string = self.string;
31 | [self enumerateAttribute:NSAttachmentAttributeName inRange:range options:kNilOptions usingBlock:^(id value, NSRange range, BOOL *stop) {
32 | NSTextAttachment *backed = (NSTextAttachment *)value;
33 | if (backed && backed.emojiName) {
34 | [result appendString:backed.emojiName];
35 | } else {
36 | [result appendString:[string substringWithRange:range]];
37 | }
38 | }];
39 | return result;
40 | }
41 |
42 | @end
43 |
44 | @implementation NSMutableAttributedString (Addition)
45 |
46 | - (void)setTextBackedString:(KTextBackedString *)textBackedString range:(NSRange)range
47 | {
48 | if (textBackedString && ![NSNull isEqual:textBackedString]) {
49 | [self addAttribute:NSAttachmentAttributeName value:textBackedString range:range];
50 | } else {
51 | [self removeAttribute:NSAttachmentAttributeName range:range];
52 | }
53 | }
54 |
55 | @end
56 |
--------------------------------------------------------------------------------
/RChat/Messages/Category/NSDate+KCategory.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSDate+KCategory.h
3 | // KRhinoMail
4 | //
5 | // Created by RPK on 2017/7/19.
6 | // Copyright © 2017年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface NSDate (KCategory)
12 |
13 | /**
14 | *比较from和self的时间差值
15 | */
16 | + (NSDateComponents *)deltaFrom:(NSDate *)from;
17 |
18 | /**
19 | 获取当前时间
20 |
21 | @param dateFormat 时间格式
22 | @return 时间字符串
23 | */
24 | + (NSString *)getCurrentStringTimesWithdateFormat:(NSString *)dateFormat;
25 |
26 | /**
27 | 获取当前时间
28 | */
29 | + (NSDate *)getCurrentDateTimes;
30 |
31 | /**
32 | *是否为今年
33 | */
34 | - (BOOL)isThisYear;
35 |
36 | /**
37 | *是否为今天
38 | */
39 | - (BOOL)isToday;
40 |
41 | /**
42 | *是否为昨天
43 | */
44 | - (BOOL)isYesterday;
45 |
46 | /**
47 | 是否在一周内
48 | */
49 | - (BOOL)isWeek;
50 |
51 | /**
52 | 根据不同格式,格式化时间戳
53 |
54 | @param date 时间戳
55 | @return 格式化后的时间
56 | */
57 | + (NSString *)dateFormatter:(NSDate *)date;
58 |
59 | // 获取当前时间戳
60 | + (NSString *)getCurrentTimestamp;
61 |
62 | /**
63 | 消息模块部分
64 | 根据不同格式,格式化时间戳
65 |
66 | @param date 时间戳
67 | @return 格式化后的时间
68 | */
69 | + (NSString *)messageWithDate:(NSDate *)date;
70 |
71 | /**
72 | 时间加随机数
73 | */
74 | + (NSString *)timeAndRandom;
75 |
76 | /**
77 | 消息id
78 |
79 | @return 本地消息id
80 | */
81 | + (NSString *)localMessageId;
82 |
83 | /**
84 | 两个时间差
85 |
86 | @param preTime 上一条消息的时间
87 | @param lastTime 最后一条消息的时间
88 | @return 是否显示时间
89 | */
90 | + (BOOL)showTimeWithPreviousTime:(NSTimeInterval)preTime lastTime:(NSTimeInterval)lastTime;
91 |
92 | /**
93 | 聊天页面消息时间显示
94 |
95 | @param recvTime 服务器收到的时间
96 | @return 处理好的时间
97 | */
98 | + (NSString *)messageTimeWithRecvTime:(NSTimeInterval)recvTime;
99 |
100 | /**
101 | 会话页面消息时间显示
102 |
103 | @param recvTime 服务器收到的时间
104 | @return 处理好的时间
105 | */
106 | + (NSString *)conversationTimeWithRecvTime:(NSTimeInterval)recvTime;
107 |
108 | @end
109 |
--------------------------------------------------------------------------------
/RChat/Messages/Category/NSDictionary+Json.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSDictionary+Json.h
3 | // KXiniuCloud
4 | //
5 | // Created by RPK on 2018/6/12.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface NSDictionary (Json)
12 |
13 | /**
14 | json转字典
15 |
16 | @param jsonString json字符串
17 | @return 转换后的字典
18 | */
19 | + (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString;
20 |
21 | /**
22 | 字典转json
23 |
24 | @return json字符串
25 | */
26 | - (NSString *)dictionaryTurnJson;
27 |
28 |
29 | @end
30 |
--------------------------------------------------------------------------------
/RChat/Messages/Category/NSDictionary+Json.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSDictionary+Json.m
3 | // KXiniuCloud
4 | //
5 | // Created by RPK on 2018/6/12.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import "NSDictionary+Json.h"
10 |
11 | @implementation NSDictionary (Json)
12 |
13 | /**
14 | json转字典
15 |
16 | @param jsonString json字符串
17 | @return 字典
18 | */
19 | + (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString {
20 |
21 | if (jsonString == nil || [jsonString isEqualToString:@""]) {
22 | return nil;
23 | }
24 |
25 | NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
26 | NSError *err;
27 | NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&err];
28 |
29 | if(err) {
30 | NSLog(@"json解析失败:%@", err);
31 | return nil;
32 | }
33 |
34 | return dic;
35 | }
36 |
37 | /**
38 | 字典转json
39 |
40 | @return json
41 | */
42 | - (NSString *)dictionaryTurnJson
43 | {
44 | NSError *parseError = nil;
45 | NSData *jsonData = [NSJSONSerialization dataWithJSONObject:self options:NSJSONWritingPrettyPrinted error:&parseError];
46 |
47 | return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
48 | }
49 |
50 | @end
51 |
--------------------------------------------------------------------------------
/RChat/Messages/Category/NSString+Category.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSString+Category.h
3 | // RChat
4 | //
5 | // Created by eims on 2018/9/4.
6 | // Copyright © 2018年 RPK. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface NSString (Category)
12 | // 判断字符串是否是全空格
13 | - (BOOL)isEmptyString;
14 | @end
15 |
--------------------------------------------------------------------------------
/RChat/Messages/Category/NSString+Category.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSString+Category.m
3 | // RChat
4 | //
5 | // Created by eims on 2018/9/4.
6 | // Copyright © 2018年 RPK. All rights reserved.
7 | //
8 |
9 | #import "NSString+Category.h"
10 |
11 | @implementation NSString (Category)
12 |
13 | // 判断字符串是否是全空格
14 | - (BOOL)isEmptyString
15 | {
16 | if (!self || !self.length)
17 | {
18 | return true;
19 | }
20 | else
21 | {
22 | NSCharacterSet *set = [NSCharacterSet whitespaceAndNewlineCharacterSet];
23 | NSString *isString = [self stringByTrimmingCharactersInSet:set];
24 |
25 | if ([isString length] == 0)
26 | {
27 | return true;
28 | }
29 | else
30 | {
31 | return false;
32 | }
33 | }
34 | }
35 |
36 | @end
37 |
--------------------------------------------------------------------------------
/RChat/Messages/Category/NSString+Size.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSString+Size.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/29.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface NSString (Size)
12 |
13 | - (CGSize)kSizeWithFont:(UIFont *)font;
14 | - (CGSize)kSizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(NSLineBreakMode)lineBreakMode;
15 |
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/RChat/Messages/Category/NSString+Size.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSString+Size.m
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/29.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import "NSString+Size.h"
10 |
11 | @implementation NSString (Size)
12 |
13 | - (CGSize)kSizeWithFont:(UIFont *)font
14 | {
15 | return [self kSizeWithFont:font constrainedToSize:CGSizeMake(CGFLOAT_MAX, 1) lineBreakMode:NSLineBreakByWordWrapping];
16 | }
17 |
18 | - (CGSize)kSizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(NSLineBreakMode)lineBreakMode
19 | {
20 | NSMutableDictionary *attributes = [[NSMutableDictionary alloc] init];
21 |
22 | if (font) {
23 | attributes[NSFontAttributeName] = font;
24 | }
25 |
26 | NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
27 | paragraphStyle.lineBreakMode = lineBreakMode;
28 | attributes[NSParagraphStyleAttributeName] = paragraphStyle;
29 |
30 | return [self boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil].size;
31 | }
32 |
33 |
34 |
35 | @end
36 |
--------------------------------------------------------------------------------
/RChat/Messages/Category/NSTextAttachment+Emoji.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSTextAttachment+Emoji.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/25.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface NSTextAttachment (Emoji)
12 |
13 | @property (nonatomic, strong) NSString *emojiName;
14 |
15 | @property (nonatomic, assign) id emojiSize;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/RChat/Messages/Category/NSTextAttachment+Emoji.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSTextAttachment+Emoji.m
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/25.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import "NSTextAttachment+Emoji.h"
10 |
11 | static const char *emojiNameKey = "emojiName";
12 | static const char *emojiSizeKey = "emojiSize";
13 |
14 | @implementation NSTextAttachment (Emoji)
15 |
16 | - (NSString *)emojiName {
17 | return objc_getAssociatedObject(self, emojiNameKey);
18 | }
19 |
20 | - (void)setEmojiName:(NSString *)emojiName {
21 | objc_setAssociatedObject(self, emojiNameKey, emojiName, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
22 | }
23 |
24 | - (id)emojiSize {
25 | return objc_getAssociatedObject(self, emojiSizeKey);
26 | }
27 |
28 | - (void)setEmojiSize:(id)emojiSize {
29 | objc_setAssociatedObject(self, emojiSizeKey, emojiSize, OBJC_ASSOCIATION_ASSIGN);
30 | }
31 |
32 | @end
33 |
--------------------------------------------------------------------------------
/RChat/Messages/Category/UIImage+Color.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIImage+Color.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/4/27.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface UIImage (Color)
12 |
13 | + (UIImage *)imageWithColor:(UIColor *)color;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/RChat/Messages/Category/UIImage+Color.m:
--------------------------------------------------------------------------------
1 | //
2 | // UIImage+Color.m
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/4/27.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import "UIImage+Color.h"
10 |
11 | @implementation UIImage (Color)
12 |
13 | + (UIImage *)imageWithColor:(UIColor *)color
14 | {
15 | CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
16 | UIGraphicsBeginImageContext(rect.size);
17 | CGContextRef context = UIGraphicsGetCurrentContext();
18 | CGContextSetFillColorWithColor(context, [color CGColor]);
19 | CGContextFillRect(context, rect);
20 | UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();
21 | UIGraphicsEndImageContext();
22 |
23 | return theImage;
24 | }
25 |
26 | @end
27 |
--------------------------------------------------------------------------------
/RChat/Messages/Category/UIImage+Compression.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIImage+Compression.h
3 | // KXiniuCloud
4 | //
5 | // Created by RPK on 2018/6/26.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface UIImage (Compression)
12 |
13 | /**
14 | 压缩图片到指定大小
15 | @param maxLength 设置的最大字节数(以KB为单位)
16 | @return 返回图片
17 | */
18 | - (NSData *)compressImageWithKilobyte:(NSInteger)maxLength;
19 | /**
20 | * 压缩图片
21 | *
22 | * @param fImageKBytes 希望压缩后的大小(以KB为单位)
23 | */
24 | - (void)compressedWithImageKilobyte:(CGFloat)fImageKBytes
25 | imageBlock:(void(^)(NSData *imageData))block;
26 |
27 | /**
28 | 压缩图片
29 |
30 | @param fImageKBytes fImageKBytes 希望压缩后的大小(以KB为单位)
31 | @return 返回处理好的图片
32 | */
33 | - (NSData *)compressedWithImageKilobyte:(CGFloat)fImageKBytes;
34 |
35 | /* 根据 dWidth dHeight 返回一个新的image**/
36 | - (UIImage *)drawWithNewImageSize:(CGSize)imageSize;
37 | @end
38 |
--------------------------------------------------------------------------------
/RChat/Messages/Category/UIImage+KVideo.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIImage+KVideo.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/16.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface UIImage (KVideo)
12 |
13 | /**
14 | 获取视频地址缩略图
15 |
16 | @param videoURL 视频地址
17 | @return 缩略图
18 | */
19 | + (UIImage *)imageWithVideo:(NSURL *)videoURL;
20 |
21 | @end
22 |
--------------------------------------------------------------------------------
/RChat/Messages/Category/UIImage+KVideo.m:
--------------------------------------------------------------------------------
1 | //
2 | // UIImage+KVideo.m
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/16.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import "UIImage+KVideo.h"
10 |
11 | #import
12 |
13 | @implementation UIImage (KVideo)
14 |
15 |
16 | /**
17 | 获取视频地址缩略图
18 |
19 | @param videoURL 视频地址
20 | @return 缩略图
21 | */
22 | + (UIImage *)imageWithVideo:(NSURL *)videoURL {
23 |
24 | AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:videoURL options:nil];
25 |
26 | AVAssetImageGenerator *gen = [[AVAssetImageGenerator alloc] initWithAsset:asset];
27 |
28 | gen.appliesPreferredTrackTransform = YES;
29 |
30 | CMTime time = CMTimeMakeWithSeconds(0.0, 600);
31 |
32 | NSError *error = nil;
33 |
34 | CMTime actualTime;
35 |
36 | CGImageRef image = [gen copyCGImageAtTime:time actualTime:&actualTime error:&error];
37 |
38 | UIImage *thumb = [[UIImage alloc] initWithCGImage:image];
39 |
40 | CGImageRelease(image);
41 |
42 | return thumb;
43 | }
44 |
45 |
46 |
47 | @end
48 |
--------------------------------------------------------------------------------
/RChat/Messages/Category/UILabel+KAutoLabelHeightAndWidth.h:
--------------------------------------------------------------------------------
1 | //
2 | // UILabel+KAutoLabelHeightAndWidth.h
3 | // ShoveCrowdfunding
4 | //
5 | // Created by RPK on 16/5/6.
6 | // Copyright © 2016年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface UILabel (KAutoLabelHeightAndWidth)
12 |
13 | /**
14 | * 自适应获取文本高度
15 | *
16 | * @param width 文本宽度
17 | * @param title 文本内容
18 | * @param font 字体属性
19 | *
20 | * @return 高度
21 | */
22 | + (CGFloat)getHeightByWidth:(CGFloat)width title:(NSString *)title font:(UIFont *)font;
23 |
24 | /**
25 | * 自适应获取宽度
26 | *
27 | * @param title 文本内容
28 | * @param font 字体属性
29 | *
30 | * @return 宽度
31 | */
32 | + (CGFloat)getWidthWithTitle:(NSString *)title font:(UIFont *)font;
33 |
34 |
35 |
36 | /**
37 | 设置行距、间距,动态获取字符串高度
38 |
39 | @param titleString 文本内容
40 | @param font 字体属性
41 | @param width 最大宽度
42 | @param lineSpace 行距
43 | @param wordSpace 间距
44 | @return 高度
45 | */
46 | + (CGFloat)getSpaceLabelHeight:(NSString *)titleString font:(UIFont *)font width:(CGFloat)width withLineSpace:(float)lineSpace WordSpace:(float)wordSpace;
47 |
48 | /**
49 | * 改变行间距
50 | */
51 | + (void)changeLineSpaceForLabel:(UILabel *)label WithSpace:(float)space;
52 |
53 | /**
54 | * 改变字间距
55 | */
56 | + (void)changeWordSpaceForLabel:(UILabel *)label WithSpace:(float)space;
57 |
58 | /**
59 | * 改变行间距和字间距
60 | */
61 | + (void)changeSpaceForLabel:(UILabel *)label withLineSpace:(float)lineSpace WordSpace:(float)wordSpace;
62 |
63 | @end
64 |
--------------------------------------------------------------------------------
/RChat/Messages/Category/UIScrollView+Addition.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIScrollView+Addition.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/29.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface UIScrollView (Addition)
12 |
13 | - (CGPoint)maximumContentOffset;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/RChat/Messages/Category/UIScrollView+Addition.m:
--------------------------------------------------------------------------------
1 | //
2 | // UIScrollView+Addition.m
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/29.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import "UIScrollView+Addition.h"
10 |
11 | @implementation UIScrollView (Addition)
12 |
13 | - (CGPoint)maximumContentOffset {
14 | CGRect bounds = self.bounds;
15 | CGSize contentSize = self.contentSize;
16 | UIEdgeInsets contentInset = self.contentInset;
17 |
18 | CGFloat x = MAX(-contentInset.left, contentSize.width + contentInset.right - bounds.size.width);
19 | CGFloat y = MAX(-contentInset.top, contentSize.height + contentInset.bottom - bounds.size.height);
20 |
21 | return CGPointMake(x, y);
22 | }
23 |
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/RChat/Messages/Category/UIView+KExtension.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIView+KExtension.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/2.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface UIView (KExtension)
12 | // view最大的x
13 | @property (nonatomic, assign) CGFloat kMax_x;
14 | // view最大的y
15 | @property (nonatomic, assign) CGFloat kMax_y;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/RChat/Messages/Category/UIView+KExtension.m:
--------------------------------------------------------------------------------
1 | //
2 | // UIView+KExtension.m
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/2.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import "UIView+KExtension.h"
10 |
11 | @implementation UIView (KExtension)
12 | // 给view的最大的x赋值,并重新定义view的位置
13 | - (void)setKMax_x:(CGFloat)kMax_x {
14 | self.frame = CGRectMake(kMax_x - self.mj_w, self.mj_y, self.mj_w, self.mj_h);
15 | }
16 |
17 | - (CGFloat)kMax_x {
18 | return self.mj_w + self.mj_x;
19 | }
20 | // 给view的最大的y赋值,并重新定义view的位置
21 | - (void)setKMax_y:(CGFloat)kMax_y {
22 | self.frame = CGRectMake(self.mj_x, kMax_y - self.mj_h, self.mj_w, self.mj_h);
23 | }
24 |
25 | - (CGFloat)kMax_y {
26 | return self.mj_y + self.mj_h;
27 | }
28 |
29 | @end
30 |
--------------------------------------------------------------------------------
/RChat/Messages/Category/UIViewController+KCategory.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIViewController+KCategory.h
3 | // KXiniuCloud
4 | //
5 | // Created by RPK on 2018/6/30.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface UIViewController (KCategory)
12 |
13 | //获取当前屏幕显示的viewcontroller
14 | - (UIViewController *)getCurrentVC;
15 | @end
16 |
--------------------------------------------------------------------------------
/RChat/Messages/Category/UIViewController+KCategory.m:
--------------------------------------------------------------------------------
1 |
2 | //
3 | // UIViewController+KCategory.m
4 | // KXiniuCloud
5 | //
6 | // Created by RPK on 2018/6/30.
7 | // Copyright © 2018年 EIMS. All rights reserved.
8 | //
9 |
10 | #import "UIViewController+KCategory.h"
11 |
12 |
13 |
14 | @implementation UIViewController (KCategory)
15 |
16 |
17 | //获取当前屏幕显示的viewcontroller
18 | - (UIViewController *)getCurrentVC
19 | {
20 | return [UIApplication sharedApplication].keyWindow.rootViewController;
21 | }
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/RChat/Messages/Common/BaseViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // BaseViewController.h
3 | // ShoveCrowdfunding
4 | //
5 | // Created by RPK on 16/4/28.
6 | // Copyright © 2015年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface BaseViewController : UIViewController
12 |
13 | /**
14 | 权限设置
15 |
16 | @param title 提示标题
17 | @param message 提示内容
18 | @param block 回调
19 | */
20 | - (void)settingAuthorizationWithTitle:(NSString *)title message:(NSString *)message cancel:(void (^)(BOOL))block;
21 |
22 | @end
23 |
--------------------------------------------------------------------------------
/RChat/Messages/Common/KFileCache.h:
--------------------------------------------------------------------------------
1 | //
2 | // KFileCache.h
3 | // KXiniuCloud
4 | //
5 | // Created by RPK on 2018/8/14.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | typedef void(^SaveComplete)(NSString *filePath, NSURL *url, NSError *error);
12 | typedef void(^WhetherFileExists)(NSString *filePath, BOOL exist);
13 |
14 | @interface KFileCache : NSObject
15 |
16 | + (instancetype)shareInstance;
17 |
18 | /**
19 | 文件缓存
20 |
21 | @param strURL 文件url
22 | @param type 类型
23 | @param saveComplete 保存完成
24 | */
25 | -(void)fileUrl:(NSString *)strURL type:(NSString *)type saveComplete:(SaveComplete)saveComplete;
26 |
27 | /**
28 | 根据文件url获取是否存在缓存
29 |
30 | @param url 文件url
31 | @param fileExists 回调
32 | */
33 | -(void)filePath:(NSString *)url fileExists:(WhetherFileExists)fileExists;
34 |
35 |
36 | /**
37 | 文件下载
38 |
39 | @param url 文件url
40 | @param success 成功回调
41 | @param failure 失败回调
42 | */
43 | - (void)downloadFileWithURL:(NSString *)url
44 | success:(void (^)(NSString *requestUrl, NSString *filePath))success
45 | failure:(void (^)(NSString *requestUrl, NSError *error))failure;
46 |
47 |
48 | @end
49 |
--------------------------------------------------------------------------------
/RChat/Messages/Common/KFileManagement.h:
--------------------------------------------------------------------------------
1 | //
2 | // KFileManagement.h
3 | // KXiniuCloud
4 | //
5 | // Created by RPK on 2017/10/16.
6 | // Copyright © 2017年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface KFileManagement : NSObject
12 |
13 | /**
14 | 在 Cache 沙盒中创建文件夹
15 |
16 | @param folderPath 文件夹名称
17 | */
18 | + (void)createDirectoryAtPath:(NSString *)folderPath;
19 |
20 | /**
21 | 将图片存储到本地
22 | */
23 | + (void)saveImageFile:(NSArray *)imagesData;
24 |
25 | /**
26 | 储存本地图片附件,并获取存储后的相对路径(,分割)
27 |
28 | @param imagesData 图片数组
29 | @param emailId 邮件ID
30 | @return 储存后的相对路径
31 | */
32 | + (NSString *)saveImageFileAndGetImages:(NSArray *)imagesData
33 | emailId:(NSString *)emailId;
34 |
35 | /**
36 | 图片的存到本地之后的读取
37 | */
38 | + (UIImage *)getImageFile:(NSString *)imageString;
39 |
40 | /**
41 | 删除缓存图片
42 | */
43 | + (void)deleteCacheAttachments;
44 |
45 | /**
46 | 拷贝文件
47 |
48 | @param fileName 沙盒路径
49 | @param sourcesPath 资源路径
50 | */
51 | + (BOOL)copyFilePath:(NSString *)fileName sourcesPath:(NSString *)sourcesPath;
52 |
53 | @end
54 |
--------------------------------------------------------------------------------
/RChat/Messages/Common/KSystemAuthorization.h:
--------------------------------------------------------------------------------
1 | //
2 | // KSystemAuthorization.h
3 | // KXiniuCloud
4 | //
5 | // Created by RPK on 2018/7/4.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #import
12 | #import
13 |
14 | @interface KSystemAuthorization : NSObject
15 | // 单例实例
16 | + (instancetype)shareInstance;
17 |
18 | /**
19 | 获取相机权限
20 |
21 | @return 是否授权
22 | */
23 | - (BOOL)checkCameraAuthorization;
24 |
25 | /**
26 | 获取语音权限
27 |
28 | @return 是否授权
29 | */
30 | - (BOOL)checkAudioAuthrization;
31 |
32 | /**
33 | 获取访问相册权限
34 |
35 | @return 是否授权
36 | */
37 | - (BOOL)checkPhotoAlbumAuthorization;
38 |
39 | /**
40 | 跳转到设置页面
41 | */
42 | - (void)requetSettingForAuth;
43 |
44 | @end
45 |
--------------------------------------------------------------------------------
/RChat/Messages/Controller/KChatViewController+Image.h:
--------------------------------------------------------------------------------
1 | //
2 | // KChatViewController+Image.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/11.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import "KChatViewController.h"
10 |
11 | @interface KChatViewController (Image)
12 |
13 | /**
14 | 从相册选择照片
15 | */
16 | - (void)selectPhoto;
17 |
18 | /**
19 | 拍照或者录短视频
20 | */
21 | - (void)takePhoto;
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/RChat/Messages/Controller/KChatViewController+Voice.h:
--------------------------------------------------------------------------------
1 | //
2 | // KChatViewController+Voice.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/16.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import "KChatViewController.h"
10 |
11 | @interface KChatViewController (Voice)
12 |
13 | @property (nonatomic, strong) NSTimer *timer; /**定时器*/
14 | @property (nonatomic, assign) CGFloat recordTime; /**录音时长*/
15 | @property (nonatomic, strong) NSString *audioUrl; /**录音地址*/
16 | @property (nonatomic, strong) NSDictionary *recordSetting; /**录音设置*/
17 | @property (nonatomic, strong) AVAudioSession *audioSession;
18 | @property (nonatomic, strong) AVAudioRecorder *audioRecorder; /**录音机*/
19 | @property (nonatomic, assign) NSInteger recordStatus; /**录音状态*/
20 | @property (nonatomic, assign) NSInteger recordIndexPathRow; /**当前正在录音的索引*/
21 | @property (nonatomic, strong) KMessageModel *prevMessage; /**前一条消息*/
22 | @property (nonatomic, strong) UIImageView *voiceImageView; /**语音图片*/
23 | @property (nonatomic, strong) AVAudioPlayer *audioPlayer; /**音频播放器*/
24 | @property (nonatomic, strong) KInputBoxRecorderView *recordView; /**录音提示框*/
25 |
26 | /**
27 | 录音部分初始化
28 | */
29 | - (void)initVoiceData;
30 |
31 | /**
32 | 开始录音
33 | */
34 | - (void)startRecording;
35 |
36 | /**
37 | 停止录音
38 | */
39 | - (void)stopRecord;
40 |
41 | /**
42 | 绘制页面
43 | */
44 | - (void)recordStartDrawView;
45 |
46 |
47 | - (void)replaceVoiceMessage;
48 |
49 | - (void)removeVoiceMessage;
50 |
51 | /**
52 | 点击消息播放语音
53 |
54 | @param tableViewCell cell
55 | @param messageModel 语音数据
56 | */
57 | - (void)playAudioWithTableViewCell:(id)tableViewCell messageModel:(KMessageModel *)messageModel;
58 |
59 | @end
60 |
--------------------------------------------------------------------------------
/RChat/Messages/Controller/KMessagesViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // KMessagesViewController.h
3 | // KXiniuCloud
4 | //
5 | // Created by RPK on 2018/4/17.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 |
10 | @interface KMessagesViewController : UIViewController
11 |
12 | @end
13 |
--------------------------------------------------------------------------------
/RChat/Messages/Controller/KSearchMessageViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // KSearchMessageViewController.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/4/21.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 |
10 |
11 | @interface KSearchMessageViewController : UIViewController
12 |
13 | @property (nonatomic, strong) UISearchBar *searchBar;
14 | @property (nonatomic, strong) UITableView *listView;
15 | @property (nonatomic, strong) UINavigationController *navigationBarCtrl;
16 |
17 | @end
18 |
19 |
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Controller/KVideoViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // KVideoViewController.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/15.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | typedef void(^TakeOperationSureBlock)(id item, NSString *filePath);
12 |
13 | @interface KVideoViewController : UIViewController
14 |
15 | @property (copy, nonatomic) TakeOperationSureBlock takeBlock;
16 | // 视频最大时长
17 | @property (assign, nonatomic) CGFloat maxDuration;
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Model/KEmojiGroup.h:
--------------------------------------------------------------------------------
1 | //
2 | // KEmojiGroup.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/4/28.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 |
12 |
13 | @interface KEmojiGroup : NSObject
14 | // 表情类型
15 | @property (nonatomic, assign) KEmojiType emojiType;
16 | // 表情组id
17 | @property (nonatomic, copy) NSString *groupID;
18 | // 表情组名
19 | @property (nonatomic, copy) NSString *groupName;
20 |
21 | @end
22 |
23 | @class KEmojiModel;
24 | @interface KEmojiGroupManager : NSObject
25 |
26 | @property (nonatomic, strong) NSArray *emojiGroup;
27 |
28 | @property (nonatomic, strong) NSMutableArray *currentEmojiList;
29 |
30 | @property (nonatomic, strong) KEmojiGroup *currentGroup;
31 |
32 | + (instancetype)shareManager;
33 |
34 |
35 | @end
36 |
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Model/KEmojiModel.h:
--------------------------------------------------------------------------------
1 | //
2 | // KEmojiModel.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/4/28.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface KEmojiModel : NSObject
12 | // 表情id
13 | @property (nonatomic, strong) NSString *emojiID;
14 | // 表情名
15 | @property (nonatomic, strong) NSString *emojiName;
16 |
17 | @property (nonatomic, strong) NSString *name;
18 |
19 | //@property (nonatomic, strong, readonly) UIImage *image;
20 |
21 | @end
22 |
23 |
24 |
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Model/KEmojiModel.m:
--------------------------------------------------------------------------------
1 | //
2 | // EmojiModel.m
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/4/28.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import "KEmojiModel.h"
10 |
11 |
12 | @implementation KEmojiModel
13 |
14 | //- (void)setName:(NSString *)name {
15 | // _name = name;
16 | // CGSize size = CGSizeMake(ITEM_WIDTH -10, ITEM_HEIGHT - 10);
17 | // UIImage * resultImage = [UIImage imageNamed:name];
18 | // UIGraphicsBeginImageContext(size);
19 | // [resultImage drawInRect:CGRectMake(0, 0, size.width, size.height)];
20 | // UIGraphicsEndImageContext();
21 | //// _image = resultImage;
22 | //}
23 |
24 |
25 |
26 | @end
27 |
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Model/KInputBoxMoreModel.h:
--------------------------------------------------------------------------------
1 | //
2 | // KInputBoxMoreModel.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/9.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface KInputBoxMoreModel : NSObject
12 |
13 | @property (nonatomic, strong) NSString *extendId;
14 |
15 | @property (nonatomic, strong) NSString *name;
16 |
17 | @property (nonatomic, strong) NSString *imageName;
18 |
19 | @end
20 |
21 | @interface KInputBoxMoreManager : NSObject
22 |
23 | @property (nonatomic, strong) NSMutableArray *moreItemModels;
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Model/KInputBoxMoreModel.m:
--------------------------------------------------------------------------------
1 | //
2 | // KInputBoxMoreModel.m
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/9.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import "KInputBoxMoreModel.h"
10 |
11 | @implementation KInputBoxMoreModel
12 |
13 | @end
14 |
15 | @implementation KInputBoxMoreManager
16 |
17 | - (NSMutableArray *)moreItemModels
18 | {
19 | if (!_moreItemModels)
20 | {
21 | _moreItemModels = [NSMutableArray array];
22 | NSString *path = [[NSBundle mainBundle] pathForResource:@"InputBoxMore" ofType:@"plist"];
23 | NSArray *array = [NSArray arrayWithContentsOfFile:path];
24 | for (NSDictionary *dic in array)
25 | {
26 | KInputBoxMoreModel *model = [KInputBoxMoreModel new];
27 | model.extendId = dic[@"extendId"];
28 | model.name = dic[@"name"];
29 | model.imageName = dic[@"imageName"];
30 | [_moreItemModels addObject:model];
31 | }
32 | }
33 |
34 | return _moreItemModels;
35 | }
36 |
37 | @end
38 |
39 |
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Model/KTextBackedString.h:
--------------------------------------------------------------------------------
1 | //
2 | // KTextBackedString.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/29.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | extern NSString * _Nonnull const KTextBackedStringAttributeName;
12 |
13 | @interface KTextBackedString : NSObject
14 | @property (nullable, nonatomic, copy) NSString *string;
15 |
16 | + (nullable instancetype)stringWithString:(nullable NSString *)string;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Model/KTextBackedString.m:
--------------------------------------------------------------------------------
1 | //
2 | // KTextBackedString.m
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/29.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import "KTextBackedString.h"
10 |
11 |
12 | NSString *const KTextBackedStringAttributeName = @"PPTextBackedString";
13 |
14 | @implementation KTextBackedString
15 |
16 | + (instancetype)stringWithString:(NSString *)string
17 | {
18 | KTextBackedString *one = [[self alloc] init];
19 | one.string = string;
20 | return one;
21 | }
22 |
23 | - (void)encodeWithCoder:(NSCoder *)aCoder
24 | {
25 | [aCoder encodeObject:self.string forKey:@"string"];
26 | }
27 |
28 | - (id)initWithCoder:(NSCoder *)aDecoder
29 | {
30 | if (self = [super init]) {
31 | _string = [aDecoder decodeObjectForKey:@"string"];
32 | }
33 | return self;
34 | }
35 |
36 | - (id)copyWithZone:(NSZone *)zone
37 | {
38 | typeof(self) one = [[self.class alloc] init];
39 | one.string = self.string;
40 | return one;
41 | }
42 |
43 |
44 |
45 | @end
46 |
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emoji_delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emoji_delete.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emoji_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emoji_normal.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_aini.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_aini.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_aini_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_aini_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_aiqing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_aiqing.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_aiqing_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_aiqing_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_aixin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_aixin.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_aixin_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_aixin_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_aoman.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_aoman.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_aoman_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_aoman_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_baiyan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_baiyan.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_baiyan_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_baiyan_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_bangbangtang.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_bangbangtang.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_bangbangtang_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_bangbangtang_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_baobao.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_baobao.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_baobao_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_baobao_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_baojing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_baojing.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_baojing_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_baojing_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_baoquan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_baoquan.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_baoquan_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_baoquan_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_bianbian.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_bianbian.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_bianbian_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_bianbian_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_bianpao.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_bianpao.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_bianpao_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_bianpao_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_biezui.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_biezui.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_biezui_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_biezui_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_bishi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_bishi.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_bishi_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_bishi_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_bizui.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_bizui.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_bizui_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_bizui_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_cahan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_cahan.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_cahan_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_cahan_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_caidao.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_caidao.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_caidao_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_caidao_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_caiqiu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_caiqiu.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_caiqiu_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_caiqiu_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_chajing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_chajing.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_chajing_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_chajing_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_chaopiao.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_chaopiao.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_chaopiao_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_chaopiao_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_chexiang.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_chexiang.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_chexiang_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_chexiang_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_ciya.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_ciya.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_ciya_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_ciya_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_dabing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_dabing.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_dabing_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_dabing_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_daku.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_daku.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_daku_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_daku_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_dangao.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_dangao.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_dangao_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_dangao_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_dao.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_dao.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_dao_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_dao_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_dashan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_dashan.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_dashan_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_dashan_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_dashuai.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_dashuai.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_dashuai_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_dashuai_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_denglong.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_denglong.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_denglong_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_denglong_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_dengpao.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_dengpao.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_dengpao_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_dengpao_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_deyi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_deyi.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_deyi_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_deyi_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_diaoxie.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_diaoxie.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_diaoxie_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_diaoxie_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_duoyun.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_duoyun.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_duoyun_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_duoyun_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_facai.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_facai.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_facai_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_facai_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_fadai.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_fadai.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_fadai_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_fadai_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_fadou.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_fadou.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_fadou_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_fadou_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_fakuang.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_fakuang.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_fakuang_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_fakuang_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_fan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_fan.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_fan_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_fan_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_fanu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_fanu.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_fanu_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_fanu_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_feiji.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_feiji.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_feiji_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_feiji_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_feiwen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_feiwen.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_feiwen_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_feiwen_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_fendou.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_fendou.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_fendou_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_fendou_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_fengche.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_fengche.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_fengche_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_fengche_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_ganga.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_ganga.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_ganga_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_ganga_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_gouwu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_gouwu.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_gouwu_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_gouwu_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_gouying.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_gouying.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_gouying_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_gouying_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_guzhang.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_guzhang.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_guzhang_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_guzhang_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_haixiu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_haixiu.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_haixiu_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_haixiu_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_hanxiao.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_hanxiao.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_hanxiao_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_hanxiao_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_haqian.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_haqian.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_haqian_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_haqian_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_hecai.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_hecai.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_hecai_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_hecai_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_henai.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_henai.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_henai_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_henai_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_huaixiao.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_huaixiao.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_huaixiao_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_huaixiao_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_huishou.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_huishou.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_huishou_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_huishou_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_huitou.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_huitou.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_huitou_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_huitou_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_jidong.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_jidong.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_jidong_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_jidong_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_jie.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_jie.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_jie_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_jie_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_jiewu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_jiewu.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_jiewu_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_jiewu_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_jingkong.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_jingkong.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_jingkong_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_jingkong_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_jingya.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_jingya.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_jingya_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_jingya_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_kafei.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_kafei.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_kafei_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_kafei_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_kaiche.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_kaiche.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_kaiche_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_kaiche_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_keai.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_keai.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_keai_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_keai_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_kelian.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_kelian.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_kelian_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_kelian_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_ketou.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_ketou.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_ketou_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_ketou_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_kge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_kge.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_kge_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_kge_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_koubi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_koubi.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_koubi_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_koubi_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_ku.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_ku.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_ku_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_ku_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_kuaikule.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_kuaikule.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_kuaikule_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_kuaikule_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_kulou.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_kulou.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_kulou_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_kulou_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_kun.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_kun.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_kun_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_kun_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_lanqiu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_lanqiu.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_lanqiu_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_lanqiu_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_lenghan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_lenghan.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_lenghan_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_lenghan_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_liuhan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_liuhan.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_liuhan_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_liuhan_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_liulei.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_liulei.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_liulei_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_liulei_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_liwu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_liwu.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_liwu_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_liwu_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_meigui.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_meigui.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_meigui_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_meigui_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_nanguo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_nanguo.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_nanguo_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_nanguo_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_naozhong.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_naozhong.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_naozhong_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_naozhong_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_no.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_no.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_no_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_no_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_ok.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_ok.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_ok_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_ok_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_ouhuo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_ouhuo.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_ouhuo_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_ouhuo_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_pachong.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_pachong.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_pachong_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_pachong_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_pijiu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_pijiu.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_pijiu_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_pijiu_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_pingpang.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_pingpang.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_pingpang_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_pingpang_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_qiang.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_qiang.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_qiang_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_qiang_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_qiaoda.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_qiaoda.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_qiaoda_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_qiaoda_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_qidao.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_qidao.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_qidao_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_qidao_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_qingwa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_qingwa.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_qingwa_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_qingwa_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_qinqin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_qinqin.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_qinqin_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_qinqin_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_qiudale.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_qiudale.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_qiudale_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_qiudale_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_quantou.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_quantou.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_quantou_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_quantou_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_ruo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_ruo.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_ruo_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_ruo_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_se.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_se.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_se_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_se_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_shafa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_shafa.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_shafa_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_shafa_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_shandian.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_shandian.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_shandian_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_shandian_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_shengli.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_shengli.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_shengli_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_shengli_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_shiai.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_shiai.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_shiai_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_shiai_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_shouqiang.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_shouqiang.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_shouqiang_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_shouqiang_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_shuai.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_shuai.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_shuai_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_shuai_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_shuangxi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_shuangxi.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_shuangxi_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_shuangxi_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_shui.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_shui.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_shui_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_shui_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_taiyang.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_taiyang.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_taiyang_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_taiyang_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_tiaopi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_tiaopi.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_tiaopi_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_tiaopi_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_tiaosheng.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_tiaosheng.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_tiaosheng_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_tiaosheng_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_tiaotiao.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_tiaotiao.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_tiaotiao_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_tiaotiao_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_touxiao.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_touxiao.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_touxiao_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_touxiao_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_tu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_tu.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_tu_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_tu_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_weiqu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_weiqu.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_weiqu_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_weiqu_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_weixiao.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_weixiao.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_weixiao_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_weixiao_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_woshou.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_woshou.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_woshou_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_woshou_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_xia.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_xia.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_xia_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_xia_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_xiamian.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_xiamian.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_xiamian_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_xiamian_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_xiangjiao.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_xiangjiao.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_xiangjiao_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_xiangjiao_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_xianwen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_xianwen.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_xianwen_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_xianwen_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_xiayu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_xiayu.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_xiayu_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_xiayu_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_xigua.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_xigua.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_xigua_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_xigua_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_xinsui.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_xinsui.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_xinsui_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_xinsui_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_xiongmao.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_xiongmao.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_xiongmao_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_xiongmao_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_xu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_xu.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_xu_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_xu_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_yao.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_yao.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_yao_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_yao_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_yingxian.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_yingxian.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_yingxian_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_yingxian_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_yiwen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_yiwen.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_yiwen_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_yiwen_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_youchexiang.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_youchexiang.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_youchexiang_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_youchexiang_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_youhengheng.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_youhengheng.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_youhengheng_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_youhengheng_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_youjian.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_youjian.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_youjian_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_youjian_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_youtaiji.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_youtaiji.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_youtaiji_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_youtaiji_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_yueliang.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_yueliang.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_yueliang_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_yueliang_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_yun.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_yun.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_yun_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_yun_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_zaijian.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_zaijian.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_zaijian_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_zaijian_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_zhadan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_zhadan.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_zhadan_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_zhadan_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_zhijing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_zhijing.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_zhijing_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_zhijing_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_zhuakuang.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_zhuakuang.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_zhuakuang_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_zhuakuang_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_zhuanjie.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_zhuanjie.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_zhuanjie_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_zhuanjie_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_zhuanquan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_zhuanquan.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_zhuanquan_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_zhuanquan_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_zhuqiu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_zhuqiu.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_zhuqiu_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_zhuqiu_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_zhutou.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_zhutou.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_zhutou_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_zhutou_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_zouma.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_zouma.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_zouma_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_zouma_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_zuochetou.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_zuochetou.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_zuochetou_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_zuochetou_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_zuohengheng.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_zuohengheng.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_zuohengheng_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_zuohengheng_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_zuotaiji.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_zuotaiji.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/emotion_zuotaiji_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/emotion_zuotaiji_gif.gif
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/Face/msg_state_fail_resend.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/Face/msg_state_fail_resend.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/InputBoxMore.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | extendId
7 | 1
8 | name
9 | 照片
10 | imageName
11 | icon_inputBox_more_photo
12 |
13 |
14 | extendId
15 | 2
16 | name
17 | 拍摄
18 | imageName
19 | icon_inputBox_more_take_photo
20 |
21 |
22 | extendId
23 | 3
24 | name
25 | 云邮
26 | imageName
27 | icon_inputBox_more_mail
28 |
29 |
30 | extendId
31 | 4
32 | name
33 | 电话
34 | imageName
35 | icon_inputBox_more_mobile
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/icon_inputBox_menu_add@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/icon_inputBox_menu_add@3x.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/icon_inputBox_more_mail@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/icon_inputBox_more_mail@3x.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/icon_inputBox_more_mobile@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/icon_inputBox_more_mobile@3x.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/icon_inputBox_more_photo@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/icon_inputBox_more_photo@3x.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/icon_inputBox_more_takeVideo_back@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/icon_inputBox_more_takeVideo_back@3x.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/icon_inputBox_more_takeVideo_camera@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/icon_inputBox_more_takeVideo_camera@3x.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/icon_inputBox_more_takeVideo_cancel@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/icon_inputBox_more_takeVideo_cancel@3x.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/icon_inputBox_more_takeVideo_confirm@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/icon_inputBox_more_takeVideo_confirm@3x.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/icon_inputBox_more_takeVideo_focusing@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/icon_inputBox_more_takeVideo_focusing@3x.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/icon_inputBox_more_takeVideo_photograph@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/icon_inputBox_more_takeVideo_photograph@3x.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/icon_inputBox_more_take_photo@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/icon_inputBox_more_take_photo@3x.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/icon_inputBox_more_take_video@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/icon_inputBox_more_take_video@3x.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/icon_message_emoji_delete@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/icon_message_emoji_delete@2x.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/icon_message_expression@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/icon_message_expression@3x.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/icon_message_keyboard@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/icon_message_keyboard@3x.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/icon_message_more@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/icon_message_more@3x.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/Resource/icon_message_voiceBtn@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/InputBox/Resource/icon_message_voiceBtn@3x.png
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/View/KEmojiCollectionViewCell.h:
--------------------------------------------------------------------------------
1 | //
2 | // KEmojiCollectionViewCell.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/10.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface KEmojiCollectionViewCell : UICollectionViewCell
12 |
13 | @property (nonatomic, strong) UIImageView *imageView;
14 |
15 | @property (nonatomic, strong) NSString *imageName;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/View/KEmojiCollectionViewCell.m:
--------------------------------------------------------------------------------
1 | //
2 | // KEmojiCollectionViewCell.m
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/10.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import "KEmojiCollectionViewCell.h"
10 |
11 |
12 |
13 | @implementation KEmojiCollectionViewCell
14 |
15 | - (instancetype)initWithFrame:(CGRect)frame
16 | {
17 | self = [super initWithFrame:frame];
18 | if (self)
19 | {
20 | [self imageView];
21 | }
22 | return self;
23 | }
24 |
25 | - (void)prepareForReuse {
26 | [super prepareForReuse];
27 | [self imageView];
28 | }
29 |
30 | - (UIImageView *)imageView {
31 | if (!_imageView) {
32 | self.backgroundColor = [ColorTools colorWithHexString:@"0xeeeeee"];
33 | _imageView = [[UIImageView alloc] initWithFrame:CGRectMake((self.mj_w - ITEM_WIDTH + 10)/2., (self.mj_w - ITEM_HEIGHT + 10)/2., ITEM_WIDTH -10 , ITEM_HEIGHT - 10)];
34 | _imageView.backgroundColor = self.backgroundColor;
35 | [self addSubview:_imageView];
36 | }
37 | return _imageView;
38 | }
39 |
40 |
41 | @end
42 |
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/View/KHorizontalPageFlowlayout.h:
--------------------------------------------------------------------------------
1 | //
2 | // KHorizontalPageFlowlayout.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/10.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface KHorizontalPageFlowlayout : UICollectionViewFlowLayout
12 |
13 | // 列间距
14 | @property (nonatomic, assign) CGFloat columnSpacing;
15 | // 行间距
16 | @property (nonatomic, assign) CGFloat rowSpacing;
17 | // collectionView的内边距
18 | @property (nonatomic, assign) UIEdgeInsets edgeInsets;
19 |
20 | // 多少行
21 | @property (nonatomic, assign) NSInteger rowCount;
22 | // 每行展示多少个item
23 | @property (nonatomic, assign) NSInteger itemCountPerRow;
24 |
25 | // 所有item的属性数组
26 | @property (nonatomic, strong) NSMutableArray *attributesArrayM;
27 |
28 | @property (nonatomic, assign) NSInteger pageNumber;
29 |
30 | /**
31 | 设置行列间距及collectionView的内边距
32 | */
33 | - (void)setColumnSpacing:(CGFloat)columnSpacing
34 | rowSpacing:(CGFloat)rowSpacing
35 | edgeInsets:(UIEdgeInsets)edgeInsets;
36 | /**
37 | 设置多少行及每行展示的item个数
38 | */
39 | - (void)setRowCount:(NSInteger)rowCount
40 | itemCountPerRow:(NSInteger)itemCountPerRow;
41 |
42 | #pragma mark - 构造方法
43 | /**
44 | 设置多少行及每行展示的item个数
45 | */
46 | + (instancetype)KHorizontalPageFlowlayoutWithRowCount:(NSInteger)rowCount
47 | itemCountPerRow:(NSInteger)itemCountPerRow;
48 | /**
49 | 设置多少行及每行展示的item个数
50 | */
51 | - (instancetype)initWithRowCount:(NSInteger)rowCount
52 | itemCountPerRow:(NSInteger)itemCountPerRow;
53 |
54 | @end
55 |
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/View/KInputBoxEmojiMenuView.h:
--------------------------------------------------------------------------------
1 | //
2 | // KInputBoxEmojiMenuView.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/4/28.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #import "KInputBoxViewDelegate.h"
12 |
13 | @interface KInputBoxEmojiMenuView : UIView
14 | // 添加表情按钮
15 | @property (nonatomic, strong) UIButton *addButton;
16 | // 发送表情按钮
17 | @property (nonatomic, strong) UIButton *sendButton;
18 | // 输入框下面的菜单视图
19 | @property (nonatomic, strong) UIScrollView *scrollView;
20 |
21 | @property (nonatomic, strong) UIButton *lastSelectEemojiGroup;
22 |
23 | @property (nonatomic, assign) id delegate;
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/View/KInputBoxEmojiView.h:
--------------------------------------------------------------------------------
1 | //
2 | // KInputBoxEmojiView.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/10.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #import "KInputBoxViewDelegate.h"
12 | #import "KInputBoxEmojiMenuView.h"
13 |
14 | @interface KInputBoxEmojiView : UIView
15 |
16 | @property (nonatomic, assign) id delegate;
17 | // 表情菜单
18 | @property (nonatomic, strong) KInputBoxEmojiMenuView *menuView;
19 |
20 | @end
21 |
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/View/KInputBoxMoreItemView.h:
--------------------------------------------------------------------------------
1 | //
2 | // KInputBoxMoreItemView.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/7.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface KInputBoxMoreItemView : UIView
12 |
13 | /**
14 | 更多视图中的所有视图
15 | */
16 | @property (nonatomic, strong) NSMutableArray *moreUnitViews;
17 |
18 | /**
19 | 显示视图
20 |
21 | @param fromIndex 开始位置
22 | @param count 结束位置
23 | */
24 | - (void)showEmojiGroupDetailFromIndex:(NSInteger)fromIndex count:(NSInteger)count;
25 |
26 | @end
27 |
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/View/KInputBoxMoreUnitView.h:
--------------------------------------------------------------------------------
1 | //
2 | // KInputBoxMoreUnitView.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/10.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @class KInputBoxMoreModel;
12 |
13 | @interface KInputBoxMoreUnitView : UIControl
14 |
15 | // 框
16 | @property (nonatomic, strong) UIView *box;
17 | // 图标
18 | @property (nonatomic, strong) UIImageView *imageView;
19 | // 文字
20 | @property (nonatomic, strong) UILabel *titleLabel;
21 |
22 | @property (nonatomic, strong) KInputBoxMoreModel *moreModel;
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/View/KInputBoxMoreUnitView.m:
--------------------------------------------------------------------------------
1 | //
2 | // KInputBoxMoreUnitView.m
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/10.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import "KInputBoxMoreUnitView.h"
10 |
11 |
12 | #import "KInputBoxMoreModel.h"
13 |
14 | @implementation KInputBoxMoreUnitView
15 |
16 | - (instancetype)initWithFrame:(CGRect)frame
17 | {
18 | self = [super initWithFrame:frame];
19 | if (self) {
20 | [self initView];
21 | }
22 | return self;
23 | }
24 |
25 | - (void)initView
26 | {
27 | self.box = [[UIView alloc] initWithFrame:CGRectMake(5, 10, self.mj_w - 10, self.mj_w - 10)];
28 | self.box.layer.cornerRadius = 5;
29 | self.box.layer.masksToBounds = YES;
30 | self.box.layer.borderColor = [UIColor lightTextColor].CGColor;
31 | self.box.layer.borderWidth = 1;
32 | self.box.backgroundColor = [UIColor whiteColor];
33 | [self addSubview:self.box];
34 |
35 | CGFloat width = self.box.mj_w - 22;
36 | self.imageView = [[UIImageView alloc] initWithFrame:CGRectMake((self.box.mj_w - width) / 2, (self.box.mj_h - width) / 2, width, width)];
37 | [self.box addSubview:self.imageView];
38 | self.imageView.userInteractionEnabled = YES;
39 |
40 | self.titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, self.box.kMax_y + 5, INPUT_BOX_MORE_ITEM_WIDTH, 20)];
41 | self.titleLabel.textColor = [UIColor lightGrayColor];
42 | self.titleLabel.textAlignment = NSTextAlignmentCenter;
43 | self.titleLabel.font = [UIFont systemFontOfSize:14];
44 | [self addSubview:self.titleLabel];
45 |
46 | }
47 |
48 | - (void)setMoreModel:(KInputBoxMoreModel *)moreModel
49 | {
50 | _moreModel = moreModel;
51 | if (moreModel.imageName) {
52 | self.imageView.image = [UIImage imageNamed:moreModel.imageName];
53 | }
54 | self.titleLabel.text = moreModel.name;
55 | }
56 |
57 | - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
58 | [self sendActionsForControlEvents:UIControlEventTouchUpInside];
59 | }
60 |
61 | @end
62 |
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/View/KInputBoxMoreView.h:
--------------------------------------------------------------------------------
1 | //
2 | // KInputBoxMoreView.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/7.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 |
12 |
13 | @class KInputBoxMoreView;
14 |
15 | @interface KInputBoxMoreView : UIView
16 |
17 | @property (nonatomic, strong) UIView *topLine;
18 | @property (nonatomic, strong) UIScrollView *scrollView;
19 | @property (nonatomic, strong) UIPageControl *pageCtrl;
20 |
21 | @end
22 |
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/View/KInputBoxRecorderView.h:
--------------------------------------------------------------------------------
1 | //
2 | // KInputBoxRecorderView.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/7.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 |
12 |
13 | @interface KInputBoxRecorderView : UIView
14 |
15 | @property (nonatomic, strong) UIImageView *leftImageView;
16 |
17 | @property (nonatomic, strong) UIImageView *rightImageView;
18 |
19 | @property (nonatomic, strong) UIImageView *recallImageView;
20 |
21 | @property (nonatomic, strong) UILabel *secondLabel; /**显示10秒倒计时*/
22 | // 提示
23 | @property (nonatomic, strong) UILabel *prompt;
24 |
25 | @property (nonatomic, strong) NSTimer *timer; /**定时器*/
26 |
27 |
28 | /**
29 | 语音录音按钮提示框
30 | */
31 | + (instancetype)shareInstance;
32 |
33 | /**
34 | 通过录音时手势的状态更新提示消息
35 |
36 | @param state 手势状态
37 | */
38 | - (void)updateState:(KInputBoxRecordStatus)state;
39 |
40 | - (void)updateSecond:(NSInteger)second;
41 |
42 | @end
43 |
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/View/KInputBoxView.h:
--------------------------------------------------------------------------------
1 | //
2 | // KInputBoxView.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/4/24.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #import "KInputBoxViewDelegate.h"
12 |
13 | @class KRecordView;
14 |
15 | @interface KInputBoxView : UIView
16 | // 语音按钮
17 | @property (nonatomic, strong) UIButton *voiceBtn;
18 | // 输入框
19 | @property (nonatomic, strong) UITextView *inputView;
20 | // 表情按钮
21 | @property (nonatomic, strong) UIButton *emojiBtn;
22 | // 更多按钮
23 | @property (nonatomic, strong) UIButton *moreBtn;
24 | // 录音按钮
25 | @property (nonatomic, strong) UIButton *recordAudioBtn;
26 | // 聊天键盘按钮
27 | @property (nonatomic, strong) KRecordView *talkButton;
28 | // 顶部的横线
29 | @property (nonatomic, strong) UIView *topLine;
30 | // 输入框当前高度
31 | @property (nonatomic, assign) CGFloat curHeight;
32 | // 输入框输入时的代理
33 | @property (nonatomic, assign) id delegate;
34 | // 输入框输入状态
35 | @property (nonatomic, assign) KInputBoxStatus inputBoxStatus;
36 | // 录音状态
37 | @property (nonatomic, assign) KInputBoxRecordStatus recordState;
38 |
39 |
40 |
41 | /**
42 | 输入框输入文字改变结束
43 |
44 | @param textView 输入框视图
45 | */
46 | - (void)textViewDidChange:(UITextView *)textView;
47 |
48 | // 删除表情
49 | - (void)deleteEmoji;
50 | // 收取键盘
51 | - (BOOL)resignFirstResponder;
52 | // 出现键盘
53 | - (BOOL)becomeFirstResponder;
54 | // 发送当前消息
55 | - (void)sendCurrentMessage;
56 |
57 | @end
58 |
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/View/KPlayer.h:
--------------------------------------------------------------------------------
1 | //
2 | // KPlayer.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/15.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface KPlayer : UIView
12 |
13 | @property (copy, nonatomic) NSURL *videoUrl;
14 |
15 | /**
16 | 短视频预览视图
17 |
18 | @param frame 预览框大小
19 | @param bgView 需要把视图添加都bgView上
20 | @param url 视频的url
21 | @return 预览图层
22 | */
23 | - (instancetype)initWithFrame:(CGRect)frame withShowInView:(UIView *)bgView url:(NSURL *)url;
24 |
25 | /**
26 | 停止播放
27 | */
28 | - (void)stopPlayer;
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/View/KRecordView.h:
--------------------------------------------------------------------------------
1 | //
2 | // KRecordView.h
3 | // RecordTest
4 | //
5 | // Created by eims on 2018/5/29.
6 | // Copyright © 2018年 eims-1. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface KRecordView : UIView
12 |
13 | @property (nonatomic, strong) UILabel *titleLabel;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/View/KRecordView.m:
--------------------------------------------------------------------------------
1 | //
2 | // KRecordView.m
3 | // RecordTest
4 | //
5 | // Created by eims on 2018/5/29.
6 | // Copyright © 2018年 eims-1. All rights reserved.
7 | //
8 |
9 | #import "KRecordView.h"
10 |
11 | @implementation KRecordView
12 |
13 | - (instancetype)initWithFrame:(CGRect)frame
14 | {
15 | self = [super initWithFrame:frame];
16 | if (self) {
17 | self.titleLabel = [[UILabel alloc] init];
18 | self.titleLabel.font = [UIFont boldSystemFontOfSize:15];
19 | self.titleLabel.textColor = [UIColor darkGrayColor];
20 | self.titleLabel.userInteractionEnabled = YES;
21 | self.titleLabel.text = @"按住 说话";
22 | [self.titleLabel sizeToFit];
23 | [self addSubview:self.titleLabel];
24 | self.titleLabel.frame = CGRectMake((self.mj_w - self.titleLabel.size.width)/2, (self.mj_h - self.titleLabel.size.height)/2, self.titleLabel.size.width, self.titleLabel.size.height);
25 | }
26 | return self;
27 | }
28 |
29 |
30 |
31 | /*
32 | // Only override drawRect: if you perform custom drawing.
33 | // An empty implementation adversely affects performance during animation.
34 | - (void)drawRect:(CGRect)rect {
35 | // Drawing code
36 | }
37 | */
38 |
39 | @end
40 |
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/View/KTextView.h:
--------------------------------------------------------------------------------
1 | //
2 | // KTextView.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/28.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface KTextView : UITextView
12 |
13 | // 是输入框
14 | @property (nonatomic, assign) BOOL isInputBox;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/View/KVideoProgressView.h:
--------------------------------------------------------------------------------
1 | //
2 | // KProgressView.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/15.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface KVideoProgressView : UIView
12 |
13 | /**
14 | 视频总时长
15 | */
16 | @property (assign, nonatomic) NSInteger timeMax;
17 |
18 |
19 | /**
20 | 清除进度
21 | */
22 | - (void)clearProgress;
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/RChat/Messages/InputBox/View/KVideoProgressView.m:
--------------------------------------------------------------------------------
1 | //
2 | // KProgressView.m
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/15.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import "KVideoProgressView.h"
10 |
11 | @interface KVideoProgressView()
12 |
13 | /**
14 | * 进度值0-1.0之间
15 | */
16 | @property (nonatomic,assign)CGFloat progressValue;
17 |
18 | @property (nonatomic, assign) CGFloat currentTime;
19 |
20 | @end
21 |
22 | @implementation KVideoProgressView
23 |
24 |
25 | - (void)drawRect:(CGRect)rect {
26 | [super drawRect:rect];
27 | CGContextRef ctx = UIGraphicsGetCurrentContext();//获取上下文
28 | CGPoint center = CGPointMake(self.frame.size.width/2.0, self.frame.size.width/2.0); //设置圆心位置
29 |
30 | CGFloat radius = self.frame.size.width/2.0-0; //设置半径
31 | CGFloat startA = - M_PI_2; //圆起点位置
32 | CGFloat endA = -M_PI_2 + M_PI * 2 * _progressValue; //圆终点位置
33 |
34 | UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:center radius:radius startAngle:startA endAngle:endA clockwise:YES];
35 |
36 | CGContextSetLineWidth(ctx, 10); //设置线条宽度
37 | [[ColorTools colorWithHexString:@"0x89DD4B"] setStroke]; //设置描边颜色
38 |
39 | CGContextAddPath(ctx, path.CGPath); //把路径添加到上下文
40 |
41 | CGContextStrokePath(ctx); //渲染
42 | }
43 |
44 | - (void)setTimeMax:(NSInteger)timeMax {
45 | _timeMax = timeMax;
46 | self.currentTime = 0;
47 | self.progressValue = 0;
48 | [self setNeedsDisplay];
49 | self.hidden = NO;
50 | [self performSelector:@selector(startProgress) withObject:nil afterDelay:0.1];
51 | }
52 |
53 | - (void)clearProgress {
54 | _currentTime = _timeMax;
55 | self.hidden = YES;
56 | }
57 |
58 | - (void)startProgress {
59 | _currentTime += 0.1;
60 | if (_timeMax > _currentTime) {
61 | _progressValue = _currentTime/_timeMax;
62 | [self setNeedsDisplay];
63 | [self performSelector:@selector(startProgress) withObject:nil afterDelay:0.1];
64 | }
65 |
66 | if (_timeMax <= _currentTime) {
67 | [self clearProgress];
68 | }
69 | }
70 |
71 | @end
72 |
--------------------------------------------------------------------------------
/RChat/Messages/Model/KChatMessageHelper.h:
--------------------------------------------------------------------------------
1 | //
2 | // KChatMessageHelper.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/4.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface KChatMessageHelper : NSObject
12 |
13 | /**
14 | 输入框显示是不是表情,而是表情字符串
15 |
16 | @param text 字符串
17 | @return 富文本
18 | */
19 | + (NSAttributedString *)formatMessageString:(NSString *)text;
20 |
21 | /**
22 | 在消息页面显示的富文本
23 |
24 | @param att 输入框得到的富文本
25 | @return 处理好的可以显示在页面上的富文本
26 | */
27 | + (NSAttributedString *)formatMessageAtt:(NSAttributedString *)att;
28 |
29 | @end
30 |
--------------------------------------------------------------------------------
/RChat/Messages/Model/KConversationModel.h:
--------------------------------------------------------------------------------
1 | //
2 | // KConversationModel.h
3 | // KXiniuCloud
4 | //
5 | // Created by RPK on 2018/6/11.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @class KMessageModel;
12 | @interface KConversationModel : NSObject
13 | // 会话名
14 | @property (nonatomic, strong) NSString *conversationName;
15 | // 会话id
16 | @property (nonatomic, strong) NSString *conversationId;
17 | // 会话类型
18 | @property (nonatomic, assign) KMessageChatType chatType;
19 | // 会话头像
20 | @property (nonatomic, strong) NSString *headImage;
21 | // 最后一条消息
22 | @property (nonatomic, strong) KMessageModel *message;
23 | // 未读消息
24 | @property (nonatomic, assign) int badgeNumber;
25 | // 犀牛id
26 | @property (nonatomic, strong) NSString *toUserId;
27 | // 员工id
28 | @property (nonatomic, strong) NSString *toEmployeeId;
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/RChat/Messages/Model/KConversationModel.m:
--------------------------------------------------------------------------------
1 |
2 | //
3 | // KConversationModel.m
4 | // KXiniuCloud
5 | //
6 | // Created by RPK on 2018/6/11.
7 | // Copyright © 2018年 EIMS. All rights reserved.
8 | //
9 |
10 | #import "KConversationModel.h"
11 |
12 | #import "KMessageModel.h"
13 |
14 | @implementation KConversationModel
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/RChat/Messages/Model/KMailAccountInfoModel.h:
--------------------------------------------------------------------------------
1 | //
2 | // KMailAccountInfoModel.h
3 | // KXiniuCloud
4 | //
5 | // Created by RPK on 2017/8/14.
6 | // Copyright © 2017年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface KMailAccountInfoModel : NSObject
12 |
13 | @property (nonatomic, copy) NSString *mailId; /**< 邮箱ID */
14 | @property (nonatomic, copy) NSString *emailName; /**< 名称 */
15 | @property (nonatomic, copy) NSString *emailAccount; /**< 邮箱账号 */
16 | @property (nonatomic, copy) NSString *emailPassword; /**< 邮箱密码 */
17 |
18 | @property (nonatomic, copy) NSString *sendServer; /**< 发送服务器 */
19 | @property (nonatomic, copy) NSString *sendProtocol; /**< 发送协议 */
20 | @property (nonatomic, assign) int sendPort; /**< 发送端口 */
21 | @property (nonatomic, assign) int isSendSSL; /**< 发送SSL */
22 |
23 | @property (nonatomic, copy) NSString *recevieServer; /**< 收取服务器 */
24 | @property (nonatomic, copy) NSString *recevieProtocol; /**< 接收协议 */
25 | @property (nonatomic, assign) int receviePort; /**< 接收端口 */
26 | @property (nonatomic, assign) int isReceiveSSL; /**< 接收SSL */
27 |
28 | @property (nonatomic, copy) NSString *signature; /**< 签名 */
29 | @property (nonatomic, assign) int xiniuId; /**< 犀牛ID */
30 | @property (nonatomic, assign) int companyId; /**< 企业ID */
31 | @property (nonatomic, assign) int timestamp; /**< 时间戳 */
32 |
33 | @end
34 |
--------------------------------------------------------------------------------
/RChat/Messages/Model/KMailAccountInfoModel.m:
--------------------------------------------------------------------------------
1 | //
2 | // KMailAccountInfoModel.m
3 | // KXiniuCloud
4 | //
5 | // Created by RPK on 2017/8/14.
6 | // Copyright © 2017年 EIMS. All rights reserved.
7 | //
8 |
9 | #import "KMailAccountInfoModel.h"
10 |
11 | @implementation KMailAccountInfoModel
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/RChat/Messages/Model/KPhotoPreviewModel.h:
--------------------------------------------------------------------------------
1 | //
2 | // KPhotoPreviewModel.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/14.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface KPhotoPreviewModel : NSObject
12 |
13 | //@property (nonatomic, strong) NSData *imageData;
14 |
15 | @property (nonatomic, strong) id content;
16 |
17 | @property (nonatomic, strong) NSString *videoUrl;
18 |
19 | @property (nonatomic, strong) NSString *thumbUrl;
20 |
21 | @property (nonatomic, strong) NSString *imageUrl;
22 |
23 | @property (nonatomic, strong) NSString *messageId;
24 |
25 | @property (nonatomic, strong) UIImageView *tapImageView;
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/RChat/Messages/Model/KPhotoPreviewModel.m:
--------------------------------------------------------------------------------
1 | //
2 | // KPhotoPreviewModel.m
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/14.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import "KPhotoPreviewModel.h"
10 |
11 | @implementation KPhotoPreviewModel
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/RChat/Messages/Resource/conversationList:
--------------------------------------------------------------------------------
1 | [{"conversation_id":"101824_143701","conversation_name":"军锅锅","head_img":"http://cname-yunke.shovesoft.com/group1/M00/00/13/CgAHCFt7b0qAAW5vAAJTspgW2NE834.png","msg":{"content":"[语音]","msg_id":"2224","recv_time":"1536647378005","send_status":"0"},"to_user_id":"101824","unread_num":"0"}]
2 |
--------------------------------------------------------------------------------
/RChat/Messages/Resource/previewPicture.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/Resource/previewPicture.jpeg
--------------------------------------------------------------------------------
/RChat/Messages/Resource/reviewVideo.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fshmjl/RChat/a67b0a2dbaf1e3cb9b49eb7f850a00e498046cce/RChat/Messages/Resource/reviewVideo.mp4
--------------------------------------------------------------------------------
/RChat/Messages/Utils/ColorTools.m:
--------------------------------------------------------------------------------
1 | //
2 | // ColorTools.m
3 | // ShoveSAS
4 | //
5 | // Created by RPK on 16/5/16.
6 | // Copyright © 2016年 EIMS. All rights reserved.
7 | //
8 |
9 | #import "ColorTools.h"
10 |
11 | @implementation ColorTools
12 |
13 | #pragma mark - 颜色转换 IOS中十六进制的颜色转换为UIColor
14 | + (UIColor *) colorWithHexString: (NSString *)color
15 | {
16 | NSString *cString = [[color stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];
17 |
18 | // String should be 6 or 8 characters
19 | if ([cString length] < 6) {
20 | return [UIColor clearColor];
21 | }
22 |
23 | // strip 0X if it appears
24 | if ([cString hasPrefix:@"0x"] || [cString hasPrefix:@"0X"] )
25 | cString = [cString substringFromIndex:2];
26 | if ([cString hasPrefix:@"#"])
27 | cString = [cString substringFromIndex:1];
28 | if ([cString length] != 6)
29 | return [UIColor clearColor];
30 |
31 | // Separate into r, g, b substrings
32 | NSRange range;
33 | range.location = 0;
34 | range.length = 2;
35 |
36 | //r
37 | NSString *rString = [cString substringWithRange:range];
38 |
39 | //g
40 | range.location = 2;
41 | NSString *gString = [cString substringWithRange:range];
42 |
43 | //b
44 | range.location = 4;
45 | NSString *bString = [cString substringWithRange:range];
46 |
47 | // Scan values
48 | unsigned int r, g, b;
49 | [[NSScanner scannerWithString:rString] scanHexInt:&r];
50 | [[NSScanner scannerWithString:gString] scanHexInt:&g];
51 | [[NSScanner scannerWithString:bString] scanHexInt:&b];
52 |
53 | return [UIColor colorWithRed:((float) r / 255.0f) green:((float) g / 255.0f) blue:((float) b / 255.0f) alpha:1.0f];
54 | }
55 |
56 |
57 | @end
58 |
--------------------------------------------------------------------------------
/RChat/Messages/Utils/KProgressView.h:
--------------------------------------------------------------------------------
1 | //
2 | // KProgressView.h
3 | // KXiniuCloud
4 | //
5 | // Created by RPK on 2018/2/6.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface KProgressView : UIView
12 |
13 | + (instancetype)shareInstance;
14 |
15 | - (void)setupProgressUI;
16 |
17 | - (void)setPressSlider:(float)value;
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/RChat/Messages/Utils/KProgressView.m:
--------------------------------------------------------------------------------
1 | //
2 | // KProgressView.m
3 | // KXiniuCloud
4 | //
5 | // Created by RPK on 2018/2/6.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import "KProgressView.h"
10 |
11 | @interface KProgressView()
12 |
13 | @property (nonatomic, strong) UIProgressView *progressView;
14 |
15 | @end
16 |
17 | @implementation KProgressView
18 |
19 | static dispatch_once_t onceToken;
20 |
21 | + (instancetype)shareInstance {
22 |
23 | static KProgressView *progressView = nil;
24 |
25 | dispatch_once(&onceToken, ^{
26 | progressView = [[KProgressView alloc] init];
27 | });
28 |
29 | return progressView;
30 |
31 | }
32 |
33 | - (void)setupProgressUI {
34 |
35 | _progressView = [[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleDefault];
36 | _progressView.progress = 0; // 进度 默认为0.0∈[0.0,1.0]
37 | _progressView.backgroundColor = [UIColor clearColor];
38 | _progressView.progressTintColor = [UIColor redColor];
39 | _progressView.trackTintColor = KLineColor; // 为走过的颜色
40 | _progressView.transform = CGAffineTransformMakeScale(1.0f, 2.0f);
41 | [self addSubview:_progressView];
42 |
43 | _progressView.sd_layout.topSpaceToView(self, 0).leftSpaceToView(self, 0).rightSpaceToView(self, 0).heightIs(1);
44 |
45 | }
46 |
47 | - (void)setPressSlider:(float)value {
48 |
49 | [self.progressView setProgress:value animated:YES];
50 | if (value == 1) {
51 | [self hidePressSlider:YES];
52 | }
53 | }
54 |
55 | - (void)hidePressSlider:(BOOL)isHide {
56 | if (isHide) {
57 | _progressView.progress = 0;
58 | }
59 | }
60 |
61 | @end
62 |
--------------------------------------------------------------------------------
/RChat/Messages/View/KChatImageTableViewCell.h:
--------------------------------------------------------------------------------
1 | //
2 | // KChatImageTableViewCell.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/11.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #import "KChatTableViewCell.h"
12 |
13 |
14 | @interface KChatImageTableViewCell : KChatTableViewCell
15 |
16 | // 图片
17 | @property (nonatomic, strong) UIImageView *messageImageView;
18 |
19 | // 图片点击事件
20 | @property (nonatomic, strong) UITapGestureRecognizer *tapImageView;
21 |
22 | @end
23 |
--------------------------------------------------------------------------------
/RChat/Messages/View/KChatMailTableViewCell.h:
--------------------------------------------------------------------------------
1 | //
2 | // KChatMailTableViewCell.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/4/25.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #import "KChatTableViewCell.h"
12 |
13 | @interface KChatMailTableViewCell : KChatTableViewCell
14 | // 自己发的邮件是否显示“回复”、“回复全部”和“转发” 默认不显示
15 | @property (nonatomic, assign) BOOL selfSenderMailShowReply;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/RChat/Messages/View/KChatTableViewCell.h:
--------------------------------------------------------------------------------
1 | //
2 | // KChatTableViewCell.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/4/25.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #import "KChatTableViewCellDelegate.h"
12 |
13 | @class KMessageModel;
14 | @class KConversationModel;
15 |
16 | @interface KChatTableViewCell : UITableViewCell
17 | // 发送或收到消息的时间
18 | @property (nonatomic, strong) UILabel *messageTime;
19 | // 用户头像
20 | @property (nonatomic, strong) UIImageView *avatarImageView;
21 | // 用户名
22 | @property (nonatomic, strong) UILabel *username;
23 | // 消息背景
24 | @property (nonatomic, strong) UIImageView *messageBackgroundImageView;
25 | // 消息发送状态背景
26 | @property (nonatomic, strong) UIImageView *messageSendStatusImageView;
27 | // 消息数据
28 | @property (nonatomic, strong) KMessageModel *messageModel;
29 | // 所属会话
30 | @property (nonatomic, strong) KConversationModel *conversation;
31 |
32 | @property (nonatomic, strong) NSIndexPath *indexPath;
33 | // jsonStr消息未发送成功,需要读取此值
34 | @property (nonatomic, strong) NSString *jsonStr;
35 | // 消息重新发送成功需要读取此值,更新本地数据库的发送状态和消息id
36 | @property (nonatomic, strong) NSString *localMessageId;
37 |
38 | // cell代理事件
39 | @property (nonatomic, assign) id delegate;
40 |
41 | // 点击消息背景
42 | - (void)clickMessageBackgroundImageView:(UITapGestureRecognizer *)gesture;
43 |
44 | /**
45 | 更新消息发送状态
46 |
47 | @param sendState 发送状态
48 | @param jsonStr 发送的json数据
49 | @param messageId 本地消息id
50 | */
51 | - (void)updateMessageSendState:(KMessageSendStatus)sendState jsonStr:(NSString *)jsonStr localMessageId:(NSString *)messageId;
52 |
53 | @end
54 |
--------------------------------------------------------------------------------
/RChat/Messages/View/KChatTableViewCellDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // KChatTableViewCellDelegate.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/4/25.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #ifndef KChatTableViewCellDelegate_h
10 | #define KChatTableViewCellDelegate_h
11 |
12 | @class KMessageModel;
13 | @class KChatTableViewCell;
14 | @class KConversationModel;
15 | @class KChatMailTableViewCell;
16 | @class KChatVoiceTableViewCell;
17 |
18 | @protocol KChatTableViewCellDelegate
19 |
20 | /**
21 | 点击cell中的头像
22 |
23 | @param tableViewCell 当前cell
24 | @param messageModel 当前cell的数据
25 | */
26 | - (void)chatTableViewCell:(KChatTableViewCell *)tableViewCell clickAvatarImageViewMessageModel:(KMessageModel *)messageModel;
27 |
28 | /**
29 | 点击消息背景
30 |
31 | @param tableViewCell 当前cell
32 | @param messageModel 当前cell的数据
33 | */
34 | - (void)chatTableViewCell:(KChatTableViewCell *)tableViewCell clickBackgroudImageViewMessageModel:(KMessageModel *)messageModel;
35 |
36 | /**
37 | 当发送失败时点击,发送状态展示视图
38 |
39 | @param tableViewCell 当前cell
40 | @param conversationModel 会话信息
41 | @param messageModel 消息
42 | */
43 | - (void)chatTableViewCell:(KChatTableViewCell *)tableViewCell clickResendMessageWithConversationModel:(KConversationModel *)conversationModel messageModel:(KMessageModel *)messageModel;
44 |
45 | /**
46 | 点击回复邮件
47 |
48 | @param tableViewCell 当前cell
49 | @param messageModel 当前cell的数据
50 | */
51 | - (void)chatTableViewCell:(KChatMailTableViewCell *)tableViewCell replyMailMessageModel:(KMessageModel *)messageModel;
52 |
53 | /**
54 | 点击回复全部
55 |
56 | @param tableViewCell 当前cell
57 | @param messageModel 当前cell的数据
58 | */
59 | - (void)chatTableViewCell:(KChatMailTableViewCell *)tableViewCell
60 | replyAllMaillMessageModel:(KMessageModel *)messageModel;
61 |
62 | /**
63 | 点击转发邮件
64 |
65 | @param tableViewCell 当前cell
66 | @param messageModel 当前cell的数据
67 | */
68 | - (void)chatTableViewCell:(KChatMailTableViewCell *)tableViewCell
69 | transmitMailMessageModel:(KMessageModel *)messageModel;
70 |
71 | /**
72 | 点击语音消息
73 |
74 | @param tableViewCell 当前cell
75 | @param messageModel 当前数据
76 | */
77 | - (void)chatTableViewCell:(KChatVoiceTableViewCell *)tableViewCell clickVoiceMessageMessageModel:(KMessageModel *)messageModel;
78 |
79 | @end
80 |
81 | #endif /* KChatTableViewCellDelegate_h */
82 |
--------------------------------------------------------------------------------
/RChat/Messages/View/KChatTextTableViewCell.h:
--------------------------------------------------------------------------------
1 | //
2 | // KChatTextTableViewCell.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/4/25.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #import "KChatTableViewCell.h"
12 |
13 | @class KTextView;
14 |
15 | @interface KChatTextTableViewCell : KChatTableViewCell
16 |
17 | // 消息文本框
18 | @property (nonatomic, strong) KTextView *textView;
19 |
20 | @end
21 |
--------------------------------------------------------------------------------
/RChat/Messages/View/KChatVideoTableViewCell.h:
--------------------------------------------------------------------------------
1 | //
2 | // KChatVideoTableViewCell.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/16.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import "KChatTableViewCell.h"
10 |
11 | @interface KChatVideoTableViewCell : KChatTableViewCell
12 | // 录制时长
13 | @property (nonatomic, strong) UILabel *recordTime;
14 | // 视频缩略图
15 | @property (nonatomic, strong) UIImageView *videoImageView;
16 | // 播放图片
17 | @property (nonatomic, strong) UIImageView *playImageView;
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/RChat/Messages/View/KChatVoiceTableViewCell.h:
--------------------------------------------------------------------------------
1 | //
2 | // KChatVoiceTableViewCell.h
3 | // KXiniuCloud
4 | //
5 | // Created by eims on 2018/5/7.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #import "KChatTableViewCell.h"
12 |
13 | @interface KChatVoiceTableViewCell : KChatTableViewCell
14 | // 秒数
15 | @property (nonatomic, strong) UILabel *second;
16 | // 语音图标
17 | @property (nonatomic, strong) UIImageView *voiceImageView;
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/RChat/Messages/View/KMessagesListTableViewCell.h:
--------------------------------------------------------------------------------
1 | //
2 | // KMessagesListTableViewCell.h
3 | // KXiniuCloud
4 | //
5 | // Created by RPK on 2018/4/17.
6 | // Copyright © 2018年 EIMS. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @class KConversationModel;
12 |
13 | @interface KMessagesListTableViewCell : UITableViewCell
14 | @property (nonatomic, strong) UILabel *titleLabel; /**< 标题 */
15 | @property (nonatomic, strong) UILabel *messageLabel; /**< 部分信息内容 */
16 | @property (nonatomic, strong) UILabel *updateTime; /**< 消息更新时间 */
17 | @property (nonatomic, strong) UILabel *badgeNumber; /**< 未读消息数 */
18 | @property (nonatomic, strong) UIImageView *avaterImageView; /**< 用户头像 */
19 | // 消息数据
20 | @property (nonatomic, strong) KConversationModel *conversation;
21 |
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/RChat/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // RChat
4 | //
5 | // Created by eims on 2018/9/4.
6 | // Copyright © 2018年 RPK. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AppDelegate.h"
11 |
12 | int main(int argc, char * argv[]) {
13 | @autoreleasepool {
14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/RChatTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/RChatTests/RChatTests.m:
--------------------------------------------------------------------------------
1 | //
2 | // RChatTests.m
3 | // RChatTests
4 | //
5 | // Created by eims on 2018/9/4.
6 | // Copyright © 2018年 RPK. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface RChatTests : XCTestCase
12 |
13 | @end
14 |
15 | @implementation RChatTests
16 |
17 | - (void)setUp {
18 | [super setUp];
19 | // Put setup code here. This method is called before the invocation of each test method in the class.
20 | }
21 |
22 | - (void)tearDown {
23 | // Put teardown code here. This method is called after the invocation of each test method in the class.
24 | [super tearDown];
25 | }
26 |
27 | - (void)testExample {
28 | // This is an example of a functional test case.
29 | // Use XCTAssert and related functions to verify your tests produce the correct results.
30 | }
31 |
32 | - (void)testPerformanceExample {
33 | // This is an example of a performance test case.
34 | [self measureBlock:^{
35 | // Put the code you want to measure the time of here.
36 | }];
37 | }
38 |
39 | @end
40 |
--------------------------------------------------------------------------------
/RChatUITests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/RChatUITests/RChatUITests.m:
--------------------------------------------------------------------------------
1 | //
2 | // RChatUITests.m
3 | // RChatUITests
4 | //
5 | // Created by eims on 2018/9/4.
6 | // Copyright © 2018年 RPK. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface RChatUITests : XCTestCase
12 |
13 | @end
14 |
15 | @implementation RChatUITests
16 |
17 | - (void)setUp {
18 | [super setUp];
19 |
20 | // Put setup code here. This method is called before the invocation of each test method in the class.
21 |
22 | // In UI tests it is usually best to stop immediately when a failure occurs.
23 | self.continueAfterFailure = NO;
24 | // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method.
25 | [[[XCUIApplication alloc] init] launch];
26 |
27 | // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
28 | }
29 |
30 | - (void)tearDown {
31 | // Put teardown code here. This method is called after the invocation of each test method in the class.
32 | [super tearDown];
33 | }
34 |
35 | - (void)testExample {
36 | // Use recording to get started writing UI tests.
37 | // Use XCTAssert and related functions to verify your tests produce the correct results.
38 | }
39 |
40 | @end
41 |
--------------------------------------------------------------------------------