├── settings.gradle ├── letsChat ├── libs │ ├── dnsjava-2.1.6.jar │ └── asmack-android-8-4.0.6.jar ├── src │ ├── main │ │ ├── res │ │ │ ├── drawable-hdpi │ │ │ │ ├── ic_send.png │ │ │ │ ├── ic_account.png │ │ │ │ ├── ic_delete.png │ │ │ │ ├── ic_photo.png │ │ │ │ ├── msg_in.9.png │ │ │ │ ├── msg_out.9.png │ │ │ │ ├── ic_launcher.png │ │ │ │ ├── ic_location.png │ │ │ │ ├── ic_attach_photo.png │ │ │ │ ├── ic_notification.png │ │ │ │ ├── ic_action_attach.png │ │ │ │ ├── ic_action_search.png │ │ │ │ ├── ic_default_avatar.png │ │ │ │ ├── ic_network_usage.png │ │ │ │ ├── ic_action_add_person.png │ │ │ │ ├── ic_action_new_chat.png │ │ │ │ └── ic_action_settings.png │ │ │ ├── drawable-mdpi │ │ │ │ ├── ic_send.png │ │ │ │ ├── ic_account.png │ │ │ │ ├── ic_delete.png │ │ │ │ ├── ic_photo.png │ │ │ │ ├── msg_in.9.png │ │ │ │ ├── msg_out.9.png │ │ │ │ ├── ic_launcher.png │ │ │ │ ├── ic_location.png │ │ │ │ ├── ic_attach_photo.png │ │ │ │ ├── ic_notification.png │ │ │ │ ├── ic_action_attach.png │ │ │ │ ├── ic_action_search.png │ │ │ │ ├── ic_default_avatar.png │ │ │ │ ├── ic_network_usage.png │ │ │ │ ├── ic_action_add_person.png │ │ │ │ ├── ic_action_new_chat.png │ │ │ │ └── ic_action_settings.png │ │ │ ├── drawable-xhdpi │ │ │ │ ├── ic_delete.png │ │ │ │ ├── ic_photo.png │ │ │ │ ├── ic_send.png │ │ │ │ ├── msg_in.9.png │ │ │ │ ├── msg_out.9.png │ │ │ │ ├── ic_account.png │ │ │ │ ├── ic_launcher.png │ │ │ │ ├── ic_location.png │ │ │ │ ├── ic_action_attach.png │ │ │ │ ├── ic_action_search.png │ │ │ │ ├── ic_attach_photo.png │ │ │ │ ├── ic_network_usage.png │ │ │ │ ├── ic_notification.png │ │ │ │ ├── ic_action_new_chat.png │ │ │ │ ├── ic_action_settings.png │ │ │ │ ├── ic_default_avatar.png │ │ │ │ └── ic_action_add_person.png │ │ │ ├── drawable-xxhdpi │ │ │ │ ├── ic_photo.png │ │ │ │ ├── ic_send.png │ │ │ │ ├── msg_in.9.png │ │ │ │ ├── ic_account.png │ │ │ │ ├── ic_delete.png │ │ │ │ ├── msg_out.9.png │ │ │ │ ├── ic_launcher.png │ │ │ │ ├── ic_location.png │ │ │ │ ├── ic_attach_photo.png │ │ │ │ ├── ic_notification.png │ │ │ │ ├── ic_action_attach.png │ │ │ │ ├── ic_action_new_chat.png │ │ │ │ ├── ic_action_search.png │ │ │ │ ├── ic_action_settings.png │ │ │ │ ├── ic_default_avatar.png │ │ │ │ ├── ic_network_usage.png │ │ │ │ └── ic_action_add_person.png │ │ │ ├── values │ │ │ │ ├── attrs.xml │ │ │ │ ├── arrays.xml │ │ │ │ ├── colors.xml │ │ │ │ ├── dimens.xml │ │ │ │ └── styles.xml │ │ │ ├── drawable │ │ │ │ ├── date_separator_background.xml │ │ │ │ ├── conversation_unread_count_bg.xml │ │ │ │ ├── splash_background.xml │ │ │ │ ├── btn_light.xml │ │ │ │ ├── attach_photo_background.xml │ │ │ │ ├── attach_location_background.xml │ │ │ │ └── btn_green.xml │ │ │ ├── color │ │ │ │ └── btn_green_text.xml │ │ │ ├── layout │ │ │ │ ├── activity_contact_requests.xml │ │ │ │ ├── message_date_separator.xml │ │ │ │ ├── plain_text_view.xml │ │ │ │ ├── fragment_contacts.xml │ │ │ │ ├── fragment_conversation.xml │ │ │ │ ├── activity_add_contact.xml │ │ │ │ ├── contact_list_header.xml │ │ │ │ ├── location_text_view.xml │ │ │ │ ├── incoming_plain_text_view.xml │ │ │ │ ├── preference_user_avatar.xml │ │ │ │ ├── activity_login.xml │ │ │ │ ├── preference_username.xml │ │ │ │ ├── contact_list_item.xml │ │ │ │ ├── activity_main.xml │ │ │ │ ├── activity_startup.xml │ │ │ │ ├── contact_request_list_item.xml │ │ │ │ ├── outgoing_plain_text_view.xml │ │ │ │ ├── incoming_location_view.xml │ │ │ │ ├── incoming_image_view.xml │ │ │ │ ├── user_search_result_list_item.xml │ │ │ │ ├── activity_signup.xml │ │ │ │ ├── attach_options_view.xml │ │ │ │ ├── fragment_profile.xml │ │ │ │ ├── outgoing_location_view.xml │ │ │ │ ├── activity_chat.xml │ │ │ │ ├── outgoing_image_view.xml │ │ │ │ ├── activity_user_profile.xml │ │ │ │ ├── conversation_list_item.xml │ │ │ │ └── activity_set_status.xml │ │ │ ├── values-v21 │ │ │ │ └── styles.xml │ │ │ ├── menu │ │ │ │ ├── connectivity_menu.xml │ │ │ │ ├── contact_profile_menu.xml │ │ │ │ ├── chat_menu.xml │ │ │ │ ├── chat_select_context.xml │ │ │ │ ├── add_contact_menu.xml │ │ │ │ ├── contact_list_menu.xml │ │ │ │ ├── main_menu.xml │ │ │ │ └── conversation_menu.xml │ │ │ ├── values-v11 │ │ │ │ └── styles.xml │ │ │ ├── values-v14 │ │ │ │ └── styles.xml │ │ │ ├── xml │ │ │ │ ├── server_preference.xml │ │ │ │ ├── profile_preferences.xml │ │ │ │ ├── network_traffic_preferences.xml │ │ │ │ └── preference_headers.xml │ │ │ └── layout-v21 │ │ │ │ ├── preference_user_avatar.xml │ │ │ │ └── preference_username.xml │ │ └── java │ │ │ └── com │ │ │ └── mstr │ │ │ └── letschat │ │ │ ├── receivers │ │ │ ├── ShutDownReceiver.java │ │ │ ├── BootReceiver.java │ │ │ ├── NetworkReceiver.java │ │ │ └── IncomingContactRequestReceiver.java │ │ │ ├── utils │ │ │ ├── AppLog.java │ │ │ ├── NotificationUtils.java │ │ │ ├── ProviderUtils.java │ │ │ ├── Utils.java │ │ │ ├── PreferenceUtils.java │ │ │ └── NetworkUtils.java │ │ │ ├── SmackInvocationException.java │ │ │ ├── views │ │ │ ├── IncomingPlainTextView.java │ │ │ ├── IncomingImageMessageView.java │ │ │ ├── IncomingLocationView.java │ │ │ ├── ImageMessageView.java │ │ │ ├── PlainTextView.java │ │ │ ├── OutgoingPlainTextView.java │ │ │ ├── OutgoingLocationView.java │ │ │ ├── OutgoingImageMessageView.java │ │ │ └── MessageView.java │ │ │ ├── model │ │ │ ├── SubscribeInfo.java │ │ │ ├── LoginUserProfile.java │ │ │ └── Contact.java │ │ │ ├── tasks │ │ │ ├── Response.java │ │ │ ├── SendPlainTextTask.java │ │ │ ├── LoadStatusTask.java │ │ │ ├── DeleteContactTask.java │ │ │ ├── BaseAsyncTask.java │ │ │ ├── SendLocationTask.java │ │ │ ├── SendContactRequestTask.java │ │ │ ├── SearchUserTask.java │ │ │ ├── LoadProfileTask.java │ │ │ ├── LoginTask.java │ │ │ ├── SendImageTask.java │ │ │ ├── SignupTask.java │ │ │ ├── AcceptContactRequestTask.java │ │ │ └── SaveStatusTask.java │ │ │ ├── SettingsActivity.java │ │ │ ├── ServerSettingsActivity.java │ │ │ ├── fragments │ │ │ ├── ProfileFragment.java │ │ │ └── NetworkUsageFragment.java │ │ │ ├── xmpp │ │ │ ├── PresencePacketListener.java │ │ │ ├── MessagePacketListener.java │ │ │ ├── SmackVCardHelper.java │ │ │ ├── LocationMessageProvider.java │ │ │ └── SmackContactHelper.java │ │ │ ├── databases │ │ │ ├── ChatDbHelper.java │ │ │ ├── ContactTableHelper.java │ │ │ ├── ContactRequestTableHelper.java │ │ │ └── ConversationTableHelper.java │ │ │ ├── adapters │ │ │ ├── StatusListAdapter.java │ │ │ └── ContactCursorAdapter.java │ │ │ ├── StartupActivity.java │ │ │ └── LoginActivity.java │ └── androidTest │ │ └── java │ │ └── com │ │ └── mstr │ │ └── letschat │ │ ├── ConversationActivityTest.java │ │ └── ChatActivityTest.java ├── proguard-rules.txt ├── .gitignore └── build.gradle ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── library ├── cropImage │ ├── src │ │ └── main │ │ │ ├── res │ │ │ ├── drawable-hdpi │ │ │ │ ├── ic_menu_3d_globe.png │ │ │ │ ├── camera_crop_height.png │ │ │ │ ├── camera_crop_width.png │ │ │ │ ├── indicator_autocrop.png │ │ │ │ ├── detail_photo_border.9.png │ │ │ │ ├── ic_menu_view_details.png │ │ │ │ └── ic_menu_camera_video_view.png │ │ │ ├── drawable-mdpi │ │ │ │ ├── ic_menu_3d_globe.png │ │ │ │ ├── camera_crop_height.png │ │ │ │ ├── camera_crop_width.png │ │ │ │ ├── indicator_autocrop.png │ │ │ │ ├── detail_photo_border.9.png │ │ │ │ ├── ic_menu_view_details.png │ │ │ │ └── ic_menu_camera_video_view.png │ │ │ └── layout │ │ │ │ └── cropimage.xml │ │ │ ├── AndroidManifest.xml │ │ │ └── java │ │ │ └── com │ │ │ └── android │ │ │ └── camera │ │ │ ├── NoSearchActivity.java │ │ │ └── gallery │ │ │ ├── SingleImageList.java │ │ │ ├── IImageList.java │ │ │ └── LruCache.java │ ├── .gitignore │ └── build.gradle ├── memorizingTrustManager │ ├── src │ │ └── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── res │ │ │ ├── values-zh-rCN │ │ │ │ └── strings.xml │ │ │ ├── values-iw │ │ │ │ └── strings.xml │ │ │ ├── values-no │ │ │ │ └── strings.xml │ │ │ ├── values │ │ │ │ └── strings.xml │ │ │ ├── values-de │ │ │ │ └── strings.xml │ │ │ ├── values-tr │ │ │ │ └── strings.xml │ │ │ ├── values-es │ │ │ │ └── strings.xml │ │ │ ├── values-eu │ │ │ │ └── strings.xml │ │ │ ├── values-fi │ │ │ │ └── strings.xml │ │ │ └── values-fr │ │ │ │ └── strings.xml │ │ │ └── java │ │ │ └── de │ │ │ └── duenndns │ │ │ └── ssl │ │ │ └── MTMDecision.java │ ├── build.gradle │ └── .gitignore └── library.iml ├── .gitignore ├── README.md ├── LetsChat.iml └── gradlew.bat /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':library:cropImage', ':letsChat' 2 | include ':library:memorizingTrustManager' -------------------------------------------------------------------------------- /letsChat/libs/dnsjava-2.1.6.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/libs/dnsjava-2.1.6.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /letsChat/libs/asmack-android-8-4.0.6.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/libs/asmack-android-8-4.0.6.jar -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-hdpi/ic_send.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-hdpi/ic_send.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-mdpi/ic_send.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-mdpi/ic_send.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-hdpi/ic_account.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-hdpi/ic_account.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-hdpi/ic_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-hdpi/ic_delete.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-hdpi/ic_photo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-hdpi/ic_photo.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-hdpi/msg_in.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-hdpi/msg_in.9.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-hdpi/msg_out.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-hdpi/msg_out.9.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-mdpi/ic_account.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-mdpi/ic_account.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-mdpi/ic_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-mdpi/ic_delete.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-mdpi/ic_photo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-mdpi/ic_photo.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-mdpi/msg_in.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-mdpi/msg_in.9.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-mdpi/msg_out.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-mdpi/msg_out.9.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-xhdpi/ic_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-xhdpi/ic_delete.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-xhdpi/ic_photo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-xhdpi/ic_photo.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-xhdpi/ic_send.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-xhdpi/ic_send.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-xhdpi/msg_in.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-xhdpi/msg_in.9.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-xhdpi/msg_out.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-xhdpi/msg_out.9.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-xxhdpi/ic_photo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-xxhdpi/ic_photo.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-xxhdpi/ic_send.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-xxhdpi/ic_send.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-xxhdpi/msg_in.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-xxhdpi/msg_in.9.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-hdpi/ic_location.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-hdpi/ic_location.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-mdpi/ic_location.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-mdpi/ic_location.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-xhdpi/ic_account.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-xhdpi/ic_account.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-xhdpi/ic_location.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-xhdpi/ic_location.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-xxhdpi/ic_account.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-xxhdpi/ic_account.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-xxhdpi/ic_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-xxhdpi/ic_delete.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-xxhdpi/msg_out.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-xxhdpi/msg_out.9.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-hdpi/ic_attach_photo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-hdpi/ic_attach_photo.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-hdpi/ic_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-hdpi/ic_notification.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-mdpi/ic_attach_photo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-mdpi/ic_attach_photo.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-mdpi/ic_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-mdpi/ic_notification.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-xxhdpi/ic_location.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-xxhdpi/ic_location.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-hdpi/ic_action_attach.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-hdpi/ic_action_attach.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-hdpi/ic_action_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-hdpi/ic_action_search.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-hdpi/ic_default_avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-hdpi/ic_default_avatar.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-hdpi/ic_network_usage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-hdpi/ic_network_usage.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-mdpi/ic_action_attach.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-mdpi/ic_action_attach.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-mdpi/ic_action_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-mdpi/ic_action_search.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-mdpi/ic_default_avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-mdpi/ic_default_avatar.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-mdpi/ic_network_usage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-mdpi/ic_network_usage.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-xhdpi/ic_action_attach.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-xhdpi/ic_action_attach.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-xhdpi/ic_action_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-xhdpi/ic_action_search.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-xhdpi/ic_attach_photo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-xhdpi/ic_attach_photo.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-xhdpi/ic_network_usage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-xhdpi/ic_network_usage.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-xhdpi/ic_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-xhdpi/ic_notification.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-xxhdpi/ic_attach_photo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-xxhdpi/ic_attach_photo.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-xxhdpi/ic_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-xxhdpi/ic_notification.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-hdpi/ic_action_add_person.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-hdpi/ic_action_add_person.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-hdpi/ic_action_new_chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-hdpi/ic_action_new_chat.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-hdpi/ic_action_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-hdpi/ic_action_settings.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-mdpi/ic_action_add_person.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-mdpi/ic_action_add_person.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-mdpi/ic_action_new_chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-mdpi/ic_action_new_chat.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-mdpi/ic_action_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-mdpi/ic_action_settings.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-xhdpi/ic_action_new_chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-xhdpi/ic_action_new_chat.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-xhdpi/ic_action_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-xhdpi/ic_action_settings.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-xhdpi/ic_default_avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-xhdpi/ic_default_avatar.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-xxhdpi/ic_action_attach.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-xxhdpi/ic_action_attach.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-xxhdpi/ic_action_new_chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-xxhdpi/ic_action_new_chat.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-xxhdpi/ic_action_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-xxhdpi/ic_action_search.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-xxhdpi/ic_action_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-xxhdpi/ic_action_settings.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-xxhdpi/ic_default_avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-xxhdpi/ic_default_avatar.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-xxhdpi/ic_network_usage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-xxhdpi/ic_network_usage.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-xhdpi/ic_action_add_person.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-xhdpi/ic_action_add_person.png -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable-xxhdpi/ic_action_add_person.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/letsChat/src/main/res/drawable-xxhdpi/ic_action_add_person.png -------------------------------------------------------------------------------- /library/cropImage/src/main/res/drawable-hdpi/ic_menu_3d_globe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/library/cropImage/src/main/res/drawable-hdpi/ic_menu_3d_globe.png -------------------------------------------------------------------------------- /library/cropImage/src/main/res/drawable-mdpi/ic_menu_3d_globe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/library/cropImage/src/main/res/drawable-mdpi/ic_menu_3d_globe.png -------------------------------------------------------------------------------- /library/cropImage/src/main/res/drawable-hdpi/camera_crop_height.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/library/cropImage/src/main/res/drawable-hdpi/camera_crop_height.png -------------------------------------------------------------------------------- /library/cropImage/src/main/res/drawable-hdpi/camera_crop_width.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/library/cropImage/src/main/res/drawable-hdpi/camera_crop_width.png -------------------------------------------------------------------------------- /library/cropImage/src/main/res/drawable-hdpi/indicator_autocrop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/library/cropImage/src/main/res/drawable-hdpi/indicator_autocrop.png -------------------------------------------------------------------------------- /library/cropImage/src/main/res/drawable-mdpi/camera_crop_height.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/library/cropImage/src/main/res/drawable-mdpi/camera_crop_height.png -------------------------------------------------------------------------------- /library/cropImage/src/main/res/drawable-mdpi/camera_crop_width.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/library/cropImage/src/main/res/drawable-mdpi/camera_crop_width.png -------------------------------------------------------------------------------- /library/cropImage/src/main/res/drawable-mdpi/indicator_autocrop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/library/cropImage/src/main/res/drawable-mdpi/indicator_autocrop.png -------------------------------------------------------------------------------- /library/cropImage/src/main/res/drawable-hdpi/detail_photo_border.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/library/cropImage/src/main/res/drawable-hdpi/detail_photo_border.9.png -------------------------------------------------------------------------------- /library/cropImage/src/main/res/drawable-hdpi/ic_menu_view_details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/library/cropImage/src/main/res/drawable-hdpi/ic_menu_view_details.png -------------------------------------------------------------------------------- /library/cropImage/src/main/res/drawable-mdpi/detail_photo_border.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/library/cropImage/src/main/res/drawable-mdpi/detail_photo_border.9.png -------------------------------------------------------------------------------- /library/cropImage/src/main/res/drawable-mdpi/ic_menu_view_details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/library/cropImage/src/main/res/drawable-mdpi/ic_menu_view_details.png -------------------------------------------------------------------------------- /library/cropImage/src/main/res/drawable-hdpi/ic_menu_camera_video_view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/library/cropImage/src/main/res/drawable-hdpi/ic_menu_camera_video_view.png -------------------------------------------------------------------------------- /library/cropImage/src/main/res/drawable-mdpi/ic_menu_camera_video_view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dilicode/LetsChat/HEAD/library/cropImage/src/main/res/drawable-mdpi/ic_menu_camera_video_view.png -------------------------------------------------------------------------------- /letsChat/proguard-rules.txt: -------------------------------------------------------------------------------- 1 | -keep class org.jivesoftware.** { *; } 2 | -keep class android.support.v7.widget.SearchView { *; } 3 | 4 | -dontwarn sun.net.spi.nameservice.** 5 | -dontwarn de.duenndns.ssl.MemorizingTrustManager -------------------------------------------------------------------------------- /letsChat/src/main/res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable/date_separator_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Wed Apr 10 15:27:10 PDT 2013 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip 7 | -------------------------------------------------------------------------------- /library/memorizingTrustManager/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /letsChat/src/main/res/color/btn_green_text.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable/conversation_unread_count_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /letsChat/src/main/res/layout/activity_contact_requests.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | -------------------------------------------------------------------------------- /letsChat/src/main/res/values-v21/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | -------------------------------------------------------------------------------- /library/cropImage/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /letsChat/src/main/res/menu/connectivity_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | -------------------------------------------------------------------------------- /letsChat/src/main/res/menu/contact_profile_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | -------------------------------------------------------------------------------- /letsChat/src/main/res/menu/chat_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | -------------------------------------------------------------------------------- /letsChat/src/main/res/menu/chat_select_context.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable/splash_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | -------------------------------------------------------------------------------- /letsChat/src/main/res/values-v11/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /letsChat/src/main/res/values/arrays.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | @string/status_available 5 | @string/status_busy 6 | @string/status_At_school 7 | @string/status_At_work 8 | @string/status_meeting 9 | 10 | -------------------------------------------------------------------------------- /library/memorizingTrustManager/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | android { 4 | compileSdkVersion 19 5 | buildToolsVersion "21.1.2" 6 | 7 | defaultConfig { 8 | } 9 | 10 | buildTypes { 11 | release { 12 | minifyEnabled false 13 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /letsChat/.gitignore: -------------------------------------------------------------------------------- 1 | #Android generated 2 | bin 3 | gen 4 | 5 | #Eclipse 6 | .project 7 | .classpath 8 | .settings 9 | 10 | #Maven 11 | target 12 | release.properties 13 | pom.xml.* 14 | 15 | #Ant 16 | build.xml 17 | local.properties 18 | proguard.cfg 19 | 20 | #OSX 21 | .DS_Store 22 | 23 | #Android Studio 24 | .gradle 25 | /local.properties 26 | /.idea/workspace.xml 27 | /.idea/libraries 28 | .DS_Store 29 | /build -------------------------------------------------------------------------------- /library/cropImage/.gitignore: -------------------------------------------------------------------------------- 1 | #Android generated 2 | bin 3 | gen 4 | 5 | #Eclipse 6 | .project 7 | .classpath 8 | .settings 9 | 10 | #Maven 11 | target 12 | release.properties 13 | pom.xml.* 14 | 15 | #Ant 16 | build.xml 17 | local.properties 18 | proguard.cfg 19 | 20 | #OSX 21 | .DS_Store 22 | 23 | #Android Studio 24 | .gradle 25 | /local.properties 26 | /.idea/workspace.xml 27 | /.idea/libraries 28 | .DS_Store 29 | /build -------------------------------------------------------------------------------- /library/memorizingTrustManager/.gitignore: -------------------------------------------------------------------------------- 1 | #Android generated 2 | bin 3 | gen 4 | 5 | #Eclipse 6 | .project 7 | .classpath 8 | .settings 9 | 10 | #Maven 11 | target 12 | release.properties 13 | pom.xml.* 14 | 15 | #Ant 16 | build.xml 17 | local.properties 18 | proguard.cfg 19 | 20 | #OSX 21 | .DS_Store 22 | 23 | #Android Studio 24 | .gradle 25 | /local.properties 26 | /.idea/workspace.xml 27 | /.idea/libraries 28 | .DS_Store 29 | /build -------------------------------------------------------------------------------- /letsChat/src/main/res/values-v14/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /letsChat/src/main/res/xml/server_preference.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | -------------------------------------------------------------------------------- /library/cropImage/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | android { 4 | compileSdkVersion 19 5 | buildToolsVersion "21.1.2" 6 | 7 | defaultConfig { 8 | minSdkVersion 14 9 | targetSdkVersion 19 10 | } 11 | 12 | buildTypes { 13 | release { 14 | minifyEnabled false 15 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | #Android generated 2 | bin 3 | gen 4 | 5 | #Eclipse 6 | .project 7 | .classpath 8 | .settings 9 | 10 | #Maven 11 | target 12 | release.properties 13 | pom.xml.* 14 | 15 | #Ant 16 | build.xml 17 | local.properties 18 | proguard.cfg 19 | 20 | #OSX 21 | .DS_Store 22 | 23 | #Android Studio 24 | .gradle 25 | local.properties 26 | /.idea/workspace.xml 27 | /.idea/libraries 28 | .DS_Store 29 | /build 30 | /import-summary.txt 31 | /.idea 32 | *.iml 33 | /captures -------------------------------------------------------------------------------- /letsChat/src/main/res/menu/add_contact_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 9 | -------------------------------------------------------------------------------- /letsChat/src/main/res/layout/message_date_separator.xml: -------------------------------------------------------------------------------- 1 | 2 | 12 | -------------------------------------------------------------------------------- /letsChat/src/main/res/xml/profile_preferences.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 12 | -------------------------------------------------------------------------------- /letsChat/src/main/res/xml/network_traffic_preferences.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 12 | -------------------------------------------------------------------------------- /letsChat/src/main/res/layout/plain_text_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 15 | -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable/btn_light.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /letsChat/src/main/java/com/mstr/letschat/receivers/ShutDownReceiver.java: -------------------------------------------------------------------------------- 1 | package com.mstr.letschat.receivers; 2 | 3 | import android.content.BroadcastReceiver; 4 | import android.content.Context; 5 | import android.content.Intent; 6 | 7 | import com.mstr.letschat.utils.NetworkUtils; 8 | 9 | /** 10 | * Created by dilli on 1/21/2016. 11 | */ 12 | public class ShutDownReceiver extends BroadcastReceiver { 13 | public void onReceive(Context context, Intent intent) { 14 | if (Intent.ACTION_SHUTDOWN.equals(intent.getAction())) { 15 | NetworkUtils.saveNetworkUsageOnShutDown(context); 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /letsChat/src/main/res/xml/preference_headers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
8 | 9 |
13 | -------------------------------------------------------------------------------- /letsChat/src/main/java/com/mstr/letschat/receivers/BootReceiver.java: -------------------------------------------------------------------------------- 1 | package com.mstr.letschat.receivers; 2 | 3 | import android.content.BroadcastReceiver; 4 | import android.content.Context; 5 | import android.content.Intent; 6 | 7 | import com.mstr.letschat.service.MessageService; 8 | 9 | public class BootReceiver extends BroadcastReceiver { 10 | 11 | @Override 12 | public void onReceive(Context context, Intent intent) { 13 | if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) { 14 | context.startService(new Intent(MessageService.ACTION_CONNECT, null, context, MessageService.class)); 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /letsChat/src/main/java/com/mstr/letschat/utils/AppLog.java: -------------------------------------------------------------------------------- 1 | package com.mstr.letschat.utils; 2 | 3 | import android.util.Log; 4 | 5 | public class AppLog { 6 | public static String TAG = "com.mstr.Letschat"; 7 | 8 | public static void i(String msg) { 9 | Log.i(TAG, msg); 10 | } 11 | 12 | public static void d(String msg) { 13 | Log.d(TAG, msg); 14 | } 15 | 16 | public static void d(String msg, Throwable tr) { 17 | Log.d(TAG, msg, tr); 18 | } 19 | 20 | public static void e(String msg) { 21 | Log.e(TAG, msg); 22 | } 23 | 24 | public static void e(String msg, Throwable tr) { 25 | Log.e(TAG, msg, tr); 26 | } 27 | } -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable/attach_photo_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable/attach_location_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /letsChat/src/main/res/menu/contact_list_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 9 | 13 | -------------------------------------------------------------------------------- /letsChat/src/main/java/com/mstr/letschat/SmackInvocationException.java: -------------------------------------------------------------------------------- 1 | package com.mstr.letschat; 2 | 3 | import org.jivesoftware.smack.sasl.SASLErrorException; 4 | 5 | @SuppressWarnings("serial") 6 | public class SmackInvocationException extends Exception { 7 | public SmackInvocationException(String detailMessage) { 8 | super(detailMessage); 9 | } 10 | 11 | public SmackInvocationException(Throwable throwable) { 12 | super(throwable); 13 | } 14 | 15 | public SmackInvocationException(String detailMessage, Throwable throwable) { 16 | super(detailMessage, throwable); 17 | } 18 | 19 | public boolean isCausedBySASLError() { 20 | return getCause() != null && (getCause() instanceof SASLErrorException); 21 | } 22 | } -------------------------------------------------------------------------------- /letsChat/src/main/java/com/mstr/letschat/views/IncomingPlainTextView.java: -------------------------------------------------------------------------------- 1 | package com.mstr.letschat.views; 2 | 3 | import android.content.Context; 4 | import android.util.AttributeSet; 5 | 6 | import com.mstr.letschat.R; 7 | 8 | public class IncomingPlainTextView extends PlainTextView { 9 | public IncomingPlainTextView(Context context) { 10 | this(context, null); 11 | } 12 | 13 | public IncomingPlainTextView(Context context, AttributeSet attrs) { 14 | super(context, attrs); 15 | } 16 | 17 | protected int getLayoutResource() { 18 | return R.layout.incoming_plain_text_view; 19 | } 20 | 21 | public void showProgress(boolean sent) { 22 | throw new UnsupportedOperationException("progress is not displayed for incoming messages"); 23 | } 24 | } -------------------------------------------------------------------------------- /letsChat/src/main/res/layout/fragment_contacts.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 10 | 11 | 20 | 21 | -------------------------------------------------------------------------------- /letsChat/src/main/res/layout/fragment_conversation.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 10 | 11 | 20 | -------------------------------------------------------------------------------- /letsChat/src/main/java/com/mstr/letschat/views/IncomingImageMessageView.java: -------------------------------------------------------------------------------- 1 | package com.mstr.letschat.views; 2 | 3 | import android.content.Context; 4 | import android.util.AttributeSet; 5 | 6 | import com.mstr.letschat.R; 7 | 8 | /** 9 | * Created by dilli on 1/29/2016. 10 | */ 11 | public class IncomingImageMessageView extends ImageMessageView { 12 | public IncomingImageMessageView(Context context) { 13 | super(context); 14 | } 15 | 16 | public IncomingImageMessageView(Context context, AttributeSet attrs) { 17 | super(context, attrs); 18 | } 19 | 20 | @Override 21 | protected int getLayoutResource() { 22 | return R.layout.incoming_image_view; 23 | } 24 | 25 | @Override 26 | public void showProgress(boolean sent) {} 27 | } -------------------------------------------------------------------------------- /letsChat/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #d4d4d4 4 | #ffb2b2b2 5 | #45c01a 6 | #4e7777 7 | #336699 8 | #39b44a 9 | #0fad68 10 | #3F51B5 11 | #303F9F 12 | #2bacfe 13 | #00897b 14 | #b6dbe0 15 | #02a8f3 16 | -------------------------------------------------------------------------------- /letsChat/src/main/res/layout/activity_add_contact.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /letsChat/src/androidTest/java/com/mstr/letschat/ConversationActivityTest.java: -------------------------------------------------------------------------------- 1 | package com.mstr.letschat; 2 | 3 | import android.test.ActivityInstrumentationTestCase2; 4 | import android.test.suitebuilder.annotation.MediumTest; 5 | 6 | /** 7 | * Created by dilli on 7/26/2015. 8 | */ 9 | public class ConversationActivityTest extends ActivityInstrumentationTestCase2 { 10 | private ConversationFragment activity; 11 | 12 | public ConversationActivityTest() { 13 | super(ConversationFragment.class); 14 | } 15 | 16 | @Override 17 | protected void setUp() throws Exception { 18 | super.setUp(); 19 | 20 | activity = getActivity(); 21 | } 22 | 23 | @MediumTest 24 | public void testPreconditions() { 25 | assertNotNull("activity is null", activity); 26 | } 27 | } -------------------------------------------------------------------------------- /letsChat/src/main/java/com/mstr/letschat/views/IncomingLocationView.java: -------------------------------------------------------------------------------- 1 | package com.mstr.letschat.views; 2 | 3 | import android.content.Context; 4 | import android.util.AttributeSet; 5 | 6 | import com.mstr.letschat.R; 7 | 8 | /** 9 | * Created by dilli on 12/2/2015. 10 | */ 11 | public class IncomingLocationView extends LocationView { 12 | public IncomingLocationView(Context context) { 13 | this(context, null); 14 | } 15 | 16 | public IncomingLocationView(Context context, AttributeSet attrs) { 17 | super(context, attrs); 18 | } 19 | 20 | public void showProgress(boolean sent) { 21 | throw new UnsupportedOperationException("progress is not displayed for incoming messages"); 22 | } 23 | 24 | protected int getLayoutResource() { 25 | return R.layout.incoming_location_view; 26 | } 27 | } -------------------------------------------------------------------------------- /library/memorizingTrustManager/src/main/res/values-zh-rCN/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 是否接受未知的证书? 4 | 服务器证书没有被签名 5 | The server certificate is expired. 6 | 是否接受不匹配的服务器名 7 | 服务器不能给\"%s\"授权. 证书只对:有效 8 | 9 | Do you want to connect anyway? 10 | 证书详情 11 | 12 | 总是 13 | 一次 14 | 放弃 15 | 16 | 证书验证 17 | 18 | -------------------------------------------------------------------------------- /letsChat/src/main/java/com/mstr/letschat/model/SubscribeInfo.java: -------------------------------------------------------------------------------- 1 | package com.mstr.letschat.model; 2 | 3 | public class SubscribeInfo { 4 | public static final int TYPE_UNKNOWN = -1; 5 | public static final int TYPE_WAIT_FOR_APPROVAL = 0; 6 | public static final int TYPE_APPROVED = 1; 7 | 8 | private String from; 9 | private String nickname; 10 | private int type = TYPE_UNKNOWN; 11 | 12 | public String getFrom() { 13 | return from; 14 | } 15 | 16 | public void setFrom(String from) { 17 | this.from = from; 18 | } 19 | 20 | public String getNickname() { 21 | return nickname; 22 | } 23 | 24 | public void setNickname(String nickname) { 25 | this.nickname = nickname; 26 | } 27 | 28 | public int getType() { 29 | return type; 30 | } 31 | 32 | public void setType(int type) { 33 | this.type = type; 34 | } 35 | } -------------------------------------------------------------------------------- /letsChat/src/main/res/layout/contact_list_header.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 18 | 19 | 24 | -------------------------------------------------------------------------------- /letsChat/src/main/res/menu/main_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 9 | 13 | 16 | 19 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # LetsChat 2 | This app does not work any more due to the server deployed on AWS is closed. 3 | 4 | LetsChat is a Android chat application based on Openfire XMPP and Smack. 5 | 6 | ## Features 7 | 8 | - register/login 9 | - send location/image/plain text 10 | - TLS support 11 | - chat history 12 | - avatars 13 | - view contact's information (vCard) 14 | - contact search 15 | - update status 16 | - delete messages 17 | - material design 18 | 19 | ## Sample Application 20 | The sample application (the source is in the repository) has been published onto Google Play for easy access: 21 | 22 | [![Get it on Google Play](http://www.android.com/images/brand/get_it_on_play_logo_small.png)](https://play.google.com/store/apps/details?id=com.mstr.letschat) 23 | 24 | ## Libraries 25 | Libraries used in this project include: 26 | - [MemorizingTrustManager](https://github.com/ge0rg/MemorizingTrustManager) 27 | - [android-cropimage](https://github.com/lvillani/android-cropimage) 28 | -------------------------------------------------------------------------------- /letsChat/src/main/res/drawable/btn_green.xml: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /letsChat/src/main/java/com/mstr/letschat/model/LoginUserProfile.java: -------------------------------------------------------------------------------- 1 | package com.mstr.letschat.model; 2 | 3 | import android.graphics.Bitmap; 4 | 5 | public class LoginUserProfile { 6 | private String user; 7 | private String password; 8 | private String nickname; 9 | 10 | private Bitmap avatar; 11 | 12 | public String getUser() { 13 | return user; 14 | } 15 | 16 | public void setUser(String user) { 17 | this.user = user; 18 | } 19 | 20 | public String getPassword() { 21 | return password; 22 | } 23 | 24 | public void setPassword(String password) { 25 | this.password = password; 26 | } 27 | 28 | public String getNickname() { 29 | return nickname; 30 | } 31 | 32 | public void setNickname(String nickname) { 33 | this.nickname = nickname; 34 | } 35 | 36 | public Bitmap getAvatar() { 37 | return avatar; 38 | } 39 | 40 | public void setAvatar(Bitmap avatar) { 41 | this.avatar = avatar; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /library/cropImage/src/main/java/com/android/camera/NoSearchActivity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2009 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.android.camera; 18 | 19 | import android.app.Activity; 20 | 21 | public class NoSearchActivity extends Activity { 22 | @Override 23 | public boolean onSearchRequested() { 24 | return false; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /library/memorizingTrustManager/src/main/res/values-iw/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | לקבל תעודה לא מוכרת? 4 | תעודת השרת אינה חתומה על ידי Certificate Authority מוכר. 5 | The server certificate is expired. 6 | לקבל שם שרת לא תואם? 7 | שרת לא היה מסוגל לאמת בתור \"%s\". התעודה הינה ברת תוקף רק עבור: 8 | 9 | האם ברצונך להתחבר בכל אופן? 10 | פרטי תעודה: 11 | 12 | תמיד 13 | פעם אחת 14 | נטוש 15 | 16 | אימות תעודה 17 | 18 | -------------------------------------------------------------------------------- /letsChat/src/main/java/com/mstr/letschat/tasks/Response.java: -------------------------------------------------------------------------------- 1 | package com.mstr.letschat.tasks; 2 | 3 | public class Response { 4 | public interface Listener { 5 | public void onResponse(T result); 6 | 7 | public void onErrorResponse(Exception exception); 8 | } 9 | 10 | public static Response success(T result) { 11 | return new Response(result); 12 | } 13 | 14 | public static Response error(Exception e) { 15 | return new Response(e); 16 | } 17 | 18 | private T result; 19 | 20 | private Exception exception; 21 | 22 | private Response(T result) { 23 | this.result = result; 24 | } 25 | 26 | private Response(Exception exception) { 27 | this.exception = exception; 28 | } 29 | 30 | public boolean isSuccess() { 31 | return exception == null; 32 | } 33 | 34 | public T getResult() { 35 | return result; 36 | } 37 | 38 | public Exception getException() { 39 | return exception; 40 | } 41 | } -------------------------------------------------------------------------------- /letsChat/src/main/java/com/mstr/letschat/views/ImageMessageView.java: -------------------------------------------------------------------------------- 1 | package com.mstr.letschat.views; 2 | 3 | import android.content.Context; 4 | import android.util.AttributeSet; 5 | import android.widget.ImageView; 6 | import android.widget.LinearLayout; 7 | 8 | import com.mstr.letschat.R; 9 | 10 | /** 11 | * Created by dilli on 1/29/2016. 12 | */ 13 | public abstract class ImageMessageView extends MessageView { 14 | private ImageView image; 15 | 16 | public ImageMessageView(Context context) { 17 | this(context, null); 18 | } 19 | 20 | public ImageMessageView(Context context, AttributeSet attrs) { 21 | super(context, attrs); 22 | } 23 | 24 | @Override 25 | protected void init(Context context) { 26 | super.init(context); 27 | image = (ImageView)findViewById(R.id.image); 28 | 29 | setOrientation(LinearLayout.VERTICAL); 30 | } 31 | 32 | public ImageView getImageView() { 33 | return image; 34 | } 35 | } -------------------------------------------------------------------------------- /letsChat/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 50dp 4 | 50dp 5 | 50dp 6 | 20dp 7 | 72dp 8 | 2dp 9 | 120dp 10 | 15dp 11 | 5dp 12 | 300dp 13 | 48dp 14 | 100dp 15 | 200dp 16 | 200 17 | -------------------------------------------------------------------------------- /letsChat/src/main/java/com/mstr/letschat/tasks/SendPlainTextTask.java: -------------------------------------------------------------------------------- 1 | package com.mstr.letschat.tasks; 2 | 3 | import android.content.ContentValues; 4 | import android.content.Context; 5 | 6 | import com.mstr.letschat.SmackInvocationException; 7 | import com.mstr.letschat.databases.ChatMessageTableHelper; 8 | import com.mstr.letschat.tasks.Response.Listener; 9 | import com.mstr.letschat.xmpp.SmackHelper; 10 | 11 | public class SendPlainTextTask extends SendMessageTask { 12 | public SendPlainTextTask(Listener listener, Context context, String to, String nickname, String body) { 13 | super(listener, context, to, nickname, body); 14 | } 15 | 16 | @Override 17 | protected ContentValues newMessage(long timeMillis) { 18 | return ChatMessageTableHelper.newPlainTextMessage(to, body, timeMillis, true); 19 | } 20 | 21 | @Override 22 | protected void doSend(Context context) throws SmackInvocationException { 23 | SmackHelper.getInstance(context).sendChatMessage(to, body, null); 24 | } 25 | } -------------------------------------------------------------------------------- /library/memorizingTrustManager/src/main/res/values-no/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Godta ukjent sertifikat? 4 | Sertifikatet er ikke utstilt av en kjent utstiller (CA). 5 | The server certificate is expired. 6 | Godta feil servernavn? 7 | Serveren heter ikke \"%s\". Sertifikatet gjelder bare for: 8 | 9 | Vil du bruke serveren likevel? 10 | Sertifikatdetaljer: 11 | 12 | Alltid 13 | En gang 14 | Avbryt 15 | 16 | Sertifikat-sjekk 17 | 18 | -------------------------------------------------------------------------------- /LetsChat.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /letsChat/src/main/java/com/mstr/letschat/views/PlainTextView.java: -------------------------------------------------------------------------------- 1 | package com.mstr.letschat.views; 2 | 3 | import android.content.Context; 4 | import android.util.AttributeSet; 5 | import android.widget.LinearLayout; 6 | import android.widget.TextView; 7 | 8 | import com.mstr.letschat.R; 9 | 10 | /** 11 | * Created by dilli on 12/1/2015. 12 | */ 13 | public abstract class PlainTextView extends MessageView { 14 | protected TextView messageText; 15 | 16 | public PlainTextView(Context context) { 17 | this(context, null); 18 | } 19 | 20 | public PlainTextView(Context context, AttributeSet attrs) { 21 | super(context, attrs); 22 | } 23 | 24 | public void setMessageText(String text) { 25 | messageText.setText(text); 26 | } 27 | 28 | @Override 29 | protected void init(Context context) { 30 | super.init(context); 31 | messageText = (TextView)findViewById(R.id.tv_message); 32 | 33 | setOrientation(LinearLayout.VERTICAL); 34 | } 35 | } -------------------------------------------------------------------------------- /letsChat/src/main/java/com/mstr/letschat/SettingsActivity.java: -------------------------------------------------------------------------------- 1 | package com.mstr.letschat; 2 | 3 | import android.os.Bundle; 4 | import android.view.MenuItem; 5 | 6 | import java.util.List; 7 | 8 | public class SettingsActivity extends AppCompatPreferenceActivity { 9 | @Override 10 | protected void onCreate(Bundle savedInstanceState) { 11 | super.onCreate(savedInstanceState); 12 | 13 | getSupportActionBar().setDisplayHomeAsUpEnabled(true); 14 | } 15 | 16 | @Override 17 | public void onBuildHeaders(List
target) { 18 | loadHeadersFromResource(R.xml.preference_headers, target); 19 | } 20 | 21 | @Override 22 | protected boolean isValidFragment(String fragmentName) { 23 | return true; 24 | } 25 | 26 | 27 | @Override 28 | public boolean onOptionsItemSelected(MenuItem item) { 29 | switch (item.getItemId()) { 30 | case android.R.id.home: 31 | onBackPressed(); 32 | return true; 33 | } 34 | 35 | return super.onOptionsItemSelected(item); 36 | } 37 | } -------------------------------------------------------------------------------- /letsChat/src/main/java/com/mstr/letschat/receivers/NetworkReceiver.java: -------------------------------------------------------------------------------- 1 | package com.mstr.letschat.receivers; 2 | 3 | import android.content.BroadcastReceiver; 4 | import android.content.Context; 5 | import android.content.Intent; 6 | import android.net.ConnectivityManager; 7 | 8 | import com.mstr.letschat.service.MessageService; 9 | import com.mstr.letschat.utils.NetworkUtils; 10 | 11 | public class NetworkReceiver extends BroadcastReceiver { 12 | public static final String EXTRA_DATA_NAME_NETWORK_CONNECTED = "com.mstr.letschat.NetworkConnected"; 13 | 14 | @Override 15 | public void onReceive(Context context, Intent intent) { 16 | String action = intent.getAction(); 17 | if (ConnectivityManager.CONNECTIVITY_ACTION.equals(action)) { 18 | Intent serviceIntent = new Intent(MessageService.ACTION_NETWORK_STATUS, null, context, MessageService.class); 19 | serviceIntent.putExtra(EXTRA_DATA_NAME_NETWORK_CONNECTED, NetworkUtils.isNetworkConnected(context)); 20 | context.startService(serviceIntent); 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /letsChat/src/main/java/com/mstr/letschat/tasks/LoadStatusTask.java: -------------------------------------------------------------------------------- 1 | package com.mstr.letschat.tasks; 2 | 3 | import android.content.Context; 4 | 5 | import com.mstr.letschat.SmackInvocationException; 6 | import com.mstr.letschat.tasks.Response.Listener; 7 | import com.mstr.letschat.utils.AppLog; 8 | import com.mstr.letschat.xmpp.SmackHelper; 9 | 10 | public class LoadStatusTask extends BaseAsyncTask { 11 | public LoadStatusTask(Listener listener, Context context) { 12 | super(listener, context); 13 | } 14 | 15 | @Override 16 | protected Response doInBackground(Void... params) { 17 | Context context = getContext(); 18 | if (context != null) { 19 | try { 20 | return Response.success(SmackHelper.getInstance(context).loadStatus()); 21 | } catch (SmackInvocationException e) { 22 | AppLog.e(String.format("get login user status error %s", e.toString()), e); 23 | 24 | return Response.error(e); 25 | } 26 | } else { 27 | return null; 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /library/memorizingTrustManager/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Accept Unknown Certificate? 4 | The server certificate is not signed by a known Certificate Authority. 5 | The server certificate is expired. 6 | Accept Mismatching Server Name? 7 | Server could not authenticate as \"%s\". The certificate is only valid for: 8 | 9 | Do you want to connect anyway? 10 | Certificate details: 11 | 12 | Always 13 | Once 14 | Abort 15 | 16 | Certificate Verification 17 | 18 | -------------------------------------------------------------------------------- /letsChat/src/main/res/layout/location_text_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | 11 | 18 | 19 | 25 | -------------------------------------------------------------------------------- /library/memorizingTrustManager/src/main/res/values-de/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Unbekanntes Zertifikat akzeptieren? 4 | Das Serverzertifikat stammt nicht von einer bekannten Ausstellungsstelle (CA). 5 | Das Serverzertifikat ist abgelaufen. 6 | Abweichenden Servernamen akzeptieren? 7 | Der Server konnte sich nicht als »%s« ausweisen. Das Zertifikat gilt nur für: 8 | 9 | Verbindung trotzdem aufbauen? 10 | Zertifikatdetails: 11 | 12 | Immer 13 | Einmal 14 | Abbrechen 15 | 16 | Zertifikatsüberprüfung 17 | 18 | -------------------------------------------------------------------------------- /letsChat/src/main/res/menu/conversation_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 9 | 13 | 17 | 20 | 23 | -------------------------------------------------------------------------------- /letsChat/src/main/java/com/mstr/letschat/utils/NotificationUtils.java: -------------------------------------------------------------------------------- 1 | package com.mstr.letschat.utils; 2 | 3 | import android.app.Notification; 4 | import android.app.NotificationManager; 5 | import android.app.PendingIntent; 6 | import android.content.Context; 7 | import android.support.v4.app.NotificationCompat; 8 | 9 | import com.mstr.letschat.R; 10 | 11 | public class NotificationUtils { 12 | public static void notify(Context context, String title, String text, int id, PendingIntent pendingIntent) { 13 | NotificationCompat.Builder builder = new NotificationCompat.Builder(context) 14 | .setSmallIcon(R.drawable.ic_notification) 15 | .setContentTitle(title) 16 | .setContentText(text) 17 | .setContentIntent(pendingIntent) 18 | .setAutoCancel(true); 19 | 20 | Notification notification = builder.build(); 21 | notification.defaults = Notification.DEFAULT_ALL; 22 | NotificationManager notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE); 23 | notificationManager.notify(id, notification); 24 | } 25 | } -------------------------------------------------------------------------------- /library/memorizingTrustManager/src/main/res/values-tr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Bilinmeyen Sertifikayı Kabul Ediyor musunuz? 4 | Sunucu Sertifikası bilinen bir Sertifika Otoritesi tarafından imzalanmamıştır. 5 | The server certificate is expired. 6 | Eşleşmeyen Sunucu İsmi Kabul Edilsin mi? 7 | Sunucu \"%s\" olarak kimliğini teyit edemedi. Sertifika sadece şunun için geçerlidir: 8 | 9 | Gene de bağlanmak istiyor musunuz? 10 | Sertifika detayları: 11 | 12 | Daima 13 | Bir defa 14 | İptal 15 | 16 | Sertifika Teyidi 17 | 18 | -------------------------------------------------------------------------------- /letsChat/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 23 5 | buildToolsVersion '23.0.0' 6 | 7 | defaultConfig { 8 | applicationId "com.mstr.letschat" 9 | minSdkVersion 14 10 | targetSdkVersion 21 11 | } 12 | 13 | buildTypes { 14 | release { 15 | minifyEnabled true 16 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 17 | } 18 | } 19 | } 20 | 21 | dependencies { 22 | compile project(':library:memorizingTrustManager') 23 | compile project(':library:cropImage') 24 | compile files('libs/asmack-android-8-4.0.6.jar') 25 | compile files('libs/dnsjava-2.1.6.jar') 26 | compile 'com.google.android.gms:play-services-maps:8.3.0' 27 | compile 'com.google.android.gms:play-services-location:8.3.0' 28 | compile 'com.android.support:cardview-v7:23.1.0' 29 | compile 'com.android.support:design:23.1.0' 30 | compile 'com.android.support:appcompat-v7:23.1.0' 31 | compile 'com.android.support:support-v13:23.1.0' 32 | } -------------------------------------------------------------------------------- /library/memorizingTrustManager/src/main/res/values-es/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | ¿Aceptar certicado desconocido? 4 | El certificado del servidor no está firmado por una Autoridad Conocida (CA). 5 | The server certificate is expired. 6 | ¿Aceptar discordancia en nombre del servidor? 7 | El servidor no ha podido autenticarte como \"%s\". El certificado es solo válido para: 8 | 9 | ¿Quieres conectar de todas formas? 10 | Detalle del certificado: 11 | 12 | Siempre 13 | Una vez 14 | Abortar 15 | 16 | Verificación de Certificado 17 | 18 | -------------------------------------------------------------------------------- /library/memorizingTrustManager/src/main/res/values-eu/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Ziurtagiri ezezaguna onartu? 4 | Zerbitzariaren ziurtagiria ez dago Ziurtagiri-emaile Autoritate ezagun batez sinatuta. 5 | Zerbitzariaren ziurtagiria iraungi da. 6 | Zerbitzariaren izeneko desadostasuna onartu? 7 | Zerbitzaria ezin izan da \"%s\" bezala autentifikatu. Ziurtagiria soilik honetarako baliagarria da: 8 | 9 | Konektatu hala ere? 10 | Ziurtagiriaren xehetasunak: 11 | 12 | Beti 13 | Behin 14 | Utzi 15 | 16 | Ziurtagiriaren egiaztapena 17 | 18 | -------------------------------------------------------------------------------- /letsChat/src/main/java/com/mstr/letschat/tasks/DeleteContactTask.java: -------------------------------------------------------------------------------- 1 | package com.mstr.letschat.tasks; 2 | 3 | import android.content.Context; 4 | 5 | import com.mstr.letschat.SmackInvocationException; 6 | import com.mstr.letschat.tasks.Response.Listener; 7 | import com.mstr.letschat.xmpp.SmackHelper; 8 | 9 | public class DeleteContactTask extends BaseAsyncTask { 10 | private String jid; 11 | 12 | public DeleteContactTask(Listener listener, Context context, String jid) { 13 | super(listener, context); 14 | 15 | this.jid = jid; 16 | } 17 | 18 | @Override 19 | protected Response doInBackground(Void... params) { 20 | Context context = getContext(); 21 | 22 | if (context != null) { 23 | try { 24 | SmackHelper.getInstance(context).delete(jid); 25 | 26 | //ContactTableHelper.getInstance(context).delete(jid); 27 | 28 | return Response.success(true); 29 | } catch(SmackInvocationException e) { 30 | return Response.error(e); 31 | } 32 | } else { 33 | return null; 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /letsChat/src/main/java/com/mstr/letschat/views/OutgoingPlainTextView.java: -------------------------------------------------------------------------------- 1 | package com.mstr.letschat.views; 2 | 3 | import android.content.Context; 4 | import android.util.AttributeSet; 5 | import android.view.View; 6 | import android.widget.ProgressBar; 7 | 8 | import com.mstr.letschat.R; 9 | 10 | public class OutgoingPlainTextView extends PlainTextView { 11 | private ProgressBar progressBar; 12 | 13 | public OutgoingPlainTextView(Context context) { 14 | this(context, null); 15 | } 16 | 17 | public OutgoingPlainTextView(Context context, AttributeSet attrs) { 18 | super(context, attrs); 19 | } 20 | 21 | @Override 22 | public void init(Context context) { 23 | super.init(context); 24 | 25 | progressBar = (ProgressBar)findViewById(R.id.sending_progress); 26 | } 27 | 28 | 29 | protected int getLayoutResource() { 30 | return R.layout.outgoing_plain_text_view; 31 | } 32 | 33 | @Override 34 | public void showProgress(boolean sent) { 35 | if (sent) { 36 | progressBar.setVisibility(View.INVISIBLE); 37 | } else { 38 | progressBar.setVisibility(View.VISIBLE); 39 | } 40 | } 41 | } -------------------------------------------------------------------------------- /letsChat/src/main/res/layout/incoming_plain_text_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /library/memorizingTrustManager/src/main/res/values-fi/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Hyväksytäänkö palvelimen antama tuntematon varmenne? 4 | Palvelimen varmenne ei ole tunnetun varmentajan (CA) allekirjoittama. 5 | The server certificate is expired. 6 | Sallitaanko palvelimen nimi, joka ei vastaa varmeenteessa olevaa nimeä? 7 | Palvelimella ei ole varmennetta nimelle \"%s\". Varmenteen sisältämät nimet: 8 | 9 | Haluatko jatkaa yhteyden muodostamista? 10 | Sertifikaatin tiedot: 11 | 12 | Aina 13 | Kerran 14 | Keskeytä 15 | 16 | Varmenteen tarkistus 17 | 18 | -------------------------------------------------------------------------------- /library/memorizingTrustManager/src/main/res/values-fr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Accepter les certificats inconnus ? 4 | Le certificat du serveur n’est pas signé par une Autorité de Certification reconnue. 5 | Le certificat a expiré. 6 | Accepter le nom de serveur qui ne concorde pas ? 7 | Le serveur n\'a pas pu s\'authentifier comme « %s ». Le certificat est valide uniquement pour : 8 | 9 | Voulez-vous vous connecter quand même ? 10 | Détails du certificat : 11 | 12 | Toujours 13 | Une seule fois 14 | Annuler 15 | 16 | Vérification du certificat 17 | 18 | -------------------------------------------------------------------------------- /letsChat/src/main/java/com/mstr/letschat/ServerSettingsActivity.java: -------------------------------------------------------------------------------- 1 | package com.mstr.letschat; 2 | 3 | import android.os.Bundle; 4 | import android.preference.PreferenceFragment; 5 | 6 | /** 7 | * Created by dilli on 7/10/2015. 8 | */ 9 | public class ServerSettingsActivity extends AppCompatPreferenceActivity { 10 | @Override 11 | protected void onCreate(Bundle savedInstanceState) { 12 | super.onCreate(savedInstanceState); 13 | 14 | if (savedInstanceState == null) { 15 | // Display the fragment as the main content. 16 | getFragmentManager().beginTransaction().replace(android.R.id.content, 17 | new ServerPreferenceFragment()).commit(); 18 | } 19 | } 20 | 21 | public static class ServerPreferenceFragment extends PreferenceFragment { 22 | 23 | @Override 24 | public void onCreate(Bundle savedInstanceState) { 25 | super.onCreate(savedInstanceState); 26 | 27 | // Load the preferences from an XML resource 28 | addPreferencesFromResource(R.xml.server_preference); 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /letsChat/src/main/res/layout-v21/preference_user_avatar.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 19 | 20 | 26 | -------------------------------------------------------------------------------- /letsChat/src/main/res/layout/preference_user_avatar.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 19 | 20 | 26 | -------------------------------------------------------------------------------- /letsChat/src/main/res/layout/activity_login.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | 15 | 21 | 22 |