├── .gitignore ├── .travis.yml ├── LICENSE ├── README.md ├── app ├── .gitignore ├── build.gradle ├── libs │ ├── arm64-v8a │ │ └── libjpush182.so │ ├── armeabi-v7a │ │ └── libjpush182.so │ ├── armeabi │ │ └── libjpush182.so │ ├── jpush-sdk-release1.8.2.jar │ ├── umeng-update-v2.6.0.1.jar │ ├── x86 │ │ └── libjpush182.so │ └── x86_64 │ │ └── libjpush182.so ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── org │ │ └── estgroup │ │ └── phphub │ │ └── ApplicationTest.java │ └── main │ ├── AndroidManifest.xml │ ├── assets │ └── js │ │ └── ImageClickEvent.js │ ├── java │ └── org │ │ └── estgroup │ │ └── phphub │ │ ├── api │ │ ├── RequestInterceptorImpl.java │ │ ├── TokenApi.java │ │ ├── TopicApi.java │ │ ├── UserApi.java │ │ └── entity │ │ │ ├── NodeEntity.java │ │ │ ├── NotificationEntity.java │ │ │ ├── ReplyEntity.java │ │ │ ├── TopicEntity.java │ │ │ ├── UserEntity.java │ │ │ └── element │ │ │ ├── Link.java │ │ │ ├── Node.java │ │ │ ├── Notification.java │ │ │ ├── Reply.java │ │ │ ├── Response.java │ │ │ ├── SupportDate.java │ │ │ ├── Token.java │ │ │ ├── Topic.java │ │ │ └── User.java │ │ ├── common │ │ ├── App.java │ │ ├── Constant.java │ │ ├── Navigator.java │ │ ├── adapter │ │ │ ├── NotificationItemView.java │ │ │ └── TopicItemView.java │ │ ├── base │ │ │ ├── BaseActivity.java │ │ │ ├── BaseAdapterItemView.java │ │ │ ├── BaseModel.java │ │ │ ├── BaseRxPresenter.java │ │ │ ├── BaseSupportFragment.java │ │ │ ├── BaseWebViewActivity.java │ │ │ └── LazyFragment.java │ │ ├── broadcast │ │ │ └── JPushReReceiver.java │ │ ├── event │ │ │ └── NotificationChangeEvent.java │ │ ├── internal │ │ │ └── di │ │ │ │ ├── component │ │ │ │ ├── ActivityComponent.java │ │ │ │ ├── ApiComponent.java │ │ │ │ └── AppComponent.java │ │ │ │ ├── module │ │ │ │ ├── ActivityModule.java │ │ │ │ ├── ApiModule.java │ │ │ │ └── AppModule.java │ │ │ │ ├── qualifier │ │ │ │ └── ForApplication.java │ │ │ │ └── scope │ │ │ │ └── PerActivity.java │ │ ├── provider │ │ │ ├── BusProvider.java │ │ │ ├── GuestTokenProvider.java │ │ │ ├── TokenProvider.java │ │ │ └── UserTokenProvider.java │ │ ├── qualifier │ │ │ ├── AuthType.java │ │ │ ├── ClickType.java │ │ │ ├── MainTabType.java │ │ │ ├── TopicDetailType.java │ │ │ ├── TopicType.java │ │ │ └── UserTopicType.java │ │ ├── service │ │ │ ├── AuthService.java │ │ │ └── NotificationService.java │ │ ├── transformer │ │ │ ├── RefreshTokenTransformer.java │ │ │ ├── RetryTransformer.java │ │ │ ├── SchedulerTransformer.java │ │ │ └── TokenGeneratorTransformer.java │ │ └── util │ │ │ └── Utils.java │ │ ├── model │ │ ├── TokenModel.java │ │ ├── TopicModel.java │ │ └── UserModel.java │ │ ├── ui │ │ ├── presenter │ │ │ ├── EditUserProfilePresenter.java │ │ │ ├── RecommendedPresenter.java │ │ │ ├── TopicDetailPresenter.java │ │ │ ├── TopicPresenter.java │ │ │ ├── TopicPublishPresenter.java │ │ │ ├── TopicReplyPresenter.java │ │ │ ├── UserNotificationsPresenter.java │ │ │ ├── UserSpacePresenter.java │ │ │ ├── UserTopicsPresenter.java │ │ │ └── WikiPresenter.java │ │ └── view │ │ │ ├── GalleryActivity.java │ │ │ ├── LoginActivity.java │ │ │ ├── MainActivity.java │ │ │ ├── MeFragment.java │ │ │ ├── RecommendedFragment.java │ │ │ ├── ReplyListActivity.java │ │ │ ├── ScannerActivity.java │ │ │ ├── WebViewPageActivity.java │ │ │ ├── WikiFragment.java │ │ │ ├── settings │ │ │ ├── SettingsActivity.java │ │ │ └── SettingsFragment.java │ │ │ ├── topic │ │ │ ├── TopicDetailsActivity.java │ │ │ ├── TopicFragment.java │ │ │ ├── TopicPublishActivity.java │ │ │ ├── TopicReplyActivity.java │ │ │ └── TopicsFragment.java │ │ │ └── user │ │ │ ├── EditUserProfileActivity.java │ │ │ ├── UserNotificationsActivity.java │ │ │ ├── UserSpaceActivity.java │ │ │ └── UserTopicActivity.java │ │ ├── widget │ │ ├── AnimateDialog.java │ │ └── LoopView │ │ │ ├── LoopListener.java │ │ │ ├── LoopRunnable.java │ │ │ ├── LoopTimerTask.java │ │ │ ├── LoopView.java │ │ │ ├── LoopViewGestureListener.java │ │ │ ├── MTimer.java │ │ │ ├── MessageHandler.java │ │ │ └── MyTimerTask.java │ │ └── wxapi │ │ └── WXEntryActivity.java │ └── res │ ├── anim │ ├── dialog_enter_anim.xml │ ├── dialog_exit_anim.xml │ ├── slide_left_in.xml │ ├── slide_left_out.xml │ ├── slide_right_in.xml │ └── slide_right_out.xml │ ├── color │ ├── custom_tab_icon.xml │ └── tab_text_switch.xml │ ├── drawable │ ├── bg_circular_with_robot.xml │ ├── bg_dialog.xml │ ├── bg_radius_blue.xml │ ├── bg_radius_yellow.xml │ ├── common_publish_bg.xml │ ├── detail_count.xml │ ├── detail_favorite.xml │ ├── detail_following.xml │ ├── detail_reply.xml │ ├── ic_me.xml │ ├── ic_recommended.xml │ ├── ic_topics.xml │ ├── ic_wiki.xml │ ├── shap_line_only_bottom.xml │ ├── shap_line_only_left.xml │ ├── shap_line_only_top.xml │ ├── shap_line_top_and_bottom.xml │ ├── shap_profile_space_divider.xml │ ├── shap_settings_only_bottom.xml │ ├── tb_munion_icon.xml │ ├── tb_munion_item_selector.xml │ ├── topic_item_bg.xml │ ├── umeng_common_gradient_green.xml │ ├── umeng_common_gradient_orange.xml │ ├── umeng_common_gradient_red.xml │ ├── umeng_update_button_cancel_bg_focused.xml │ ├── umeng_update_button_cancel_bg_normal.xml │ ├── umeng_update_button_cancel_bg_selector.xml │ ├── umeng_update_button_cancel_bg_tap.xml │ ├── umeng_update_button_check_selector.xml │ ├── umeng_update_button_close_bg_selector.xml │ ├── umeng_update_button_ok_bg_focused.xml │ ├── umeng_update_button_ok_bg_normal.xml │ ├── umeng_update_button_ok_bg_selector.xml │ ├── umeng_update_button_ok_bg_tap.xml │ ├── umeng_update_dialog_bg.xml │ ├── umeng_update_title_bg.xml │ └── umeng_update_wifi_disable.png │ ├── layout-v9 │ └── umeng_common_download_notification.xml │ ├── layout │ ├── .DS_Store │ ├── common_avatar.xml │ ├── common_empty.xml │ ├── common_error.xml │ ├── common_loading.xml │ ├── common_logout.xml │ ├── common_loopview.xml │ ├── common_options.xml │ ├── common_toolbar.xml │ ├── common_toolbar_with_tab.xml │ ├── common_viewpager_tab_text.xml │ ├── custom_tab_icon.xml │ ├── dialog_vote.xml │ ├── edit_user_profile.xml │ ├── gallery.xml │ ├── login.xml │ ├── main.xml │ ├── me.xml │ ├── message_item.xml │ ├── message_list.xml │ ├── publish_topic.xml │ ├── reply_list.xml │ ├── settings.xml │ ├── settings_group.xml │ ├── settings_item.xml │ ├── tb_munion_aditem.xml │ ├── topic_details.xml │ ├── topic_item.xml │ ├── topic_list.xml │ ├── topic_normal_list.xml │ ├── topic_viewpager_list.xml │ ├── umeng_common_download_notification.xml │ ├── umeng_update_dialog.xml │ ├── user_space.xml │ └── webview_page.xml │ ├── menu │ ├── menu_posting.xml │ ├── menu_publish.xml │ ├── menu_save_edit.xml │ ├── menu_topic.xml │ └── menu_user_space.xml │ ├── mipmap-hdpi │ ├── ic_back.png │ ├── ic_blog_icon.png │ ├── ic_detail_count.png │ ├── ic_detail_favorite.png │ ├── ic_detail_following.png │ ├── ic_detail_reply.png │ ├── ic_down.png │ ├── ic_edit.png │ ├── ic_github_icon.png │ ├── ic_launcher.png │ ├── ic_location_icon.png │ ├── ic_me_normal.png │ ├── ic_me_selected.png │ ├── ic_profile_favorite.png │ ├── ic_profile_following.png │ ├── ic_profile_messages.png │ ├── ic_profile_reply.png │ ├── ic_profile_setting.png │ ├── ic_profile_topic.png │ ├── ic_recommended_normal.png │ ├── ic_recommended_selected.png │ ├── ic_right_arrow.png │ ├── ic_save_menu.png │ ├── ic_send.png │ ├── ic_topics_normal.png │ ├── ic_topics_selected.png │ ├── ic_twitter_icon.png │ ├── ic_up.png │ ├── ic_vote_down_big.png │ ├── ic_vote_up_big.png │ ├── ic_wiki_normal.png │ ├── ic_wiki_selected.png │ ├── robot.png │ ├── umeng_update_btn_check_off_focused_holo_light.png │ ├── umeng_update_btn_check_off_holo_light.png │ ├── umeng_update_btn_check_off_pressed_holo_light.png │ ├── umeng_update_btn_check_on_focused_holo_light.png │ ├── umeng_update_btn_check_on_holo_light.png │ ├── umeng_update_btn_check_on_pressed_holo_light.png │ ├── umeng_update_close_bg_normal.png │ └── umeng_update_close_bg_tap.png │ ├── mipmap-mdpi │ ├── ic_back.png │ ├── ic_blog_icon.png │ ├── ic_detail_count.png │ ├── ic_detail_favorite.png │ ├── ic_detail_following.png │ ├── ic_detail_reply.png │ ├── ic_down.png │ ├── ic_edit.png │ ├── ic_github_icon.png │ ├── ic_launcher.png │ ├── ic_location_icon.png │ ├── ic_me_normal.png │ ├── ic_me_selected.png │ ├── ic_profile_favorite.png │ ├── ic_profile_following.png │ ├── ic_profile_messages.png │ ├── ic_profile_reply.png │ ├── ic_profile_setting.png │ ├── ic_profile_topic.png │ ├── ic_recommended_normal.png │ ├── ic_recommended_selected.png │ ├── ic_right_arrow.png │ ├── ic_save_menu.png │ ├── ic_send.png │ ├── ic_topics_normal.png │ ├── ic_topics_selected.png │ ├── ic_twitter_icon.png │ ├── ic_up.png │ ├── ic_vote_down_big.png │ ├── ic_vote_up_big.png │ ├── ic_wiki_normal.png │ └── ic_wiki_selected.png │ ├── mipmap-xhdpi │ ├── ic_back.png │ ├── ic_blog_icon.png │ ├── ic_detail_count.png │ ├── ic_detail_favorite.png │ ├── ic_detail_following.png │ ├── ic_detail_reply.png │ ├── ic_down.png │ ├── ic_edit.png │ ├── ic_github_icon.png │ ├── ic_launcher.png │ ├── ic_location_icon.png │ ├── ic_me_normal.png │ ├── ic_me_selected.png │ ├── ic_profile_favorite.png │ ├── ic_profile_following.png │ ├── ic_profile_messages.png │ ├── ic_profile_reply.png │ ├── ic_profile_setting.png │ ├── ic_profile_topic.png │ ├── ic_recommended_normal.png │ ├── ic_recommended_selected.png │ ├── ic_right_arrow.png │ ├── ic_save_menu.png │ ├── ic_send.png │ ├── ic_topics_normal.png │ ├── ic_topics_selected.png │ ├── ic_twitter_icon.png │ ├── ic_up.png │ ├── ic_vote_down_big.png │ ├── ic_vote_up_big.png │ ├── ic_wiki_normal.png │ └── ic_wiki_selected.png │ ├── mipmap-xxhdpi │ ├── ic_back.png │ ├── ic_blog_icon.png │ ├── ic_detail_count.png │ ├── ic_detail_favorite.png │ ├── ic_detail_following.png │ ├── ic_detail_reply.png │ ├── ic_down.png │ ├── ic_edit.png │ ├── ic_github_icon.png │ ├── ic_launcher.png │ ├── ic_location_icon.png │ ├── ic_me_normal.png │ ├── ic_me_selected.png │ ├── ic_profile_favorite.png │ ├── ic_profile_following.png │ ├── ic_profile_messages.png │ ├── ic_profile_reply.png │ ├── ic_profile_setting.png │ ├── ic_profile_topic.png │ ├── ic_recommended_normal.png │ ├── ic_recommended_selected.png │ ├── ic_right_arrow.png │ ├── ic_save_menu.png │ ├── ic_send.png │ ├── ic_topics_normal.png │ ├── ic_topics_selected.png │ ├── ic_twitter_icon.png │ ├── ic_up.png │ ├── ic_vote_down_big.png │ ├── ic_vote_up_big.png │ ├── ic_wiki_normal.png │ └── ic_wiki_selected.png │ ├── values-v21 │ └── themes.xml │ ├── values-w820dp │ └── dimens.xml │ ├── values-zh │ ├── strings.xml │ ├── umeng_common_strings.xml │ └── umeng_update_string.xml │ ├── values │ ├── authentication.xml │ ├── colors.xml │ ├── dimens.xml │ ├── strings.xml │ ├── styles.xml │ ├── tb_munion_strings.xml │ ├── themes.xml │ ├── umeng_common_strings.xml │ └── umeng_update_string.xml │ └── xml │ ├── authenticator.xml │ └── settings.xml ├── build.gradle ├── buildsystem ├── debug.keystore └── dependencies.gradle ├── gradle.properties.example ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── settings.gradle ├── signing.properties.example └── umeng_social_sdk_res_lib ├── .gitignore ├── build.gradle ├── libs ├── SocialSDK_QQZone_1.jar ├── SocialSDK_QQZone_2.jar ├── SocialSDK_QQZone_3.jar ├── SocialSDK_Sina.jar ├── SocialSDK_WeiXin_1.jar ├── SocialSDK_WeiXin_2.jar └── umeng_social_sdk.jar ├── proguard-rules.pro └── src ├── androidTest └── java │ └── com │ └── umeng_social_sdk_res_lib │ └── ApplicationTest.java ├── main ├── AndroidManifest.xml └── res │ ├── anim │ ├── shake_umeng_socialize_cycle_5.xml │ ├── shake_umeng_socialize_dlg_alpha.xml │ ├── shake_umeng_socialize_dlg_scale.xml │ ├── shake_umeng_socialize_edit_anim.xml │ ├── shake_umeng_socialize_imageview_rotate.xml │ ├── shake_umeng_socialize_scrshot_dlg.xml │ ├── umeng_socialize_fade_in.xml │ ├── umeng_socialize_fade_out.xml │ ├── umeng_socialize_shareboard_animation_in.xml │ ├── umeng_socialize_shareboard_animation_out.xml │ ├── umeng_socialize_slide_in_from_bottom.xml │ └── umeng_socialize_slide_out_from_bottom.xml │ ├── drawable-hdpi │ ├── com_facebook_button_icon.png │ ├── com_facebook_button_like_icon_selected.png │ ├── com_facebook_button_send_icon.png │ ├── com_facebook_close.png │ ├── com_facebook_tooltip_black_background.9.png │ ├── com_facebook_tooltip_black_bottomnub.png │ ├── com_facebook_tooltip_black_topnub.png │ ├── com_facebook_tooltip_black_xout.png │ ├── com_facebook_tooltip_blue_background.9.png │ ├── com_facebook_tooltip_blue_bottomnub.png │ ├── com_facebook_tooltip_blue_topnub.png │ ├── com_facebook_tooltip_blue_xout.png │ ├── messenger_bubble_large_blue.png │ ├── messenger_bubble_large_white.png │ ├── messenger_bubble_small_blue.png │ ├── messenger_bubble_small_white.png │ ├── messenger_button_send_round_shadow.png │ ├── umeng_socialize_light_bar_bg_pad.9.png │ ├── umeng_socialize_nav_bar_bg_pad.9.png │ ├── umeng_socialize_oauth_check_off.png │ ├── umeng_socialize_oauth_check_on.png │ ├── umeng_socialize_share_music.png │ ├── umeng_socialize_share_pic.png │ └── umeng_socialize_share_video.png │ ├── drawable-mdpi │ ├── com_facebook_button_icon.png │ ├── com_facebook_button_like_icon_selected.png │ ├── com_facebook_button_send_icon.png │ ├── com_facebook_close.png │ ├── com_facebook_profile_picture_blank_portrait.png │ ├── com_facebook_profile_picture_blank_square.png │ ├── com_facebook_tooltip_black_background.9.png │ ├── com_facebook_tooltip_black_bottomnub.png │ ├── com_facebook_tooltip_black_topnub.png │ ├── com_facebook_tooltip_black_xout.png │ ├── com_facebook_tooltip_blue_background.9.png │ ├── com_facebook_tooltip_blue_bottomnub.png │ ├── com_facebook_tooltip_blue_topnub.png │ ├── com_facebook_tooltip_blue_xout.png │ ├── messenger_bubble_large_blue.png │ ├── messenger_bubble_large_white.png │ ├── messenger_bubble_small_blue.png │ ├── messenger_bubble_small_white.png │ └── messenger_button_send_round_shadow.png │ ├── drawable-xhdpi │ ├── com_facebook_button_icon.png │ ├── com_facebook_button_like_icon_selected.png │ ├── com_facebook_button_send_icon.png │ ├── com_facebook_close.png │ ├── com_facebook_tooltip_black_background.9.png │ ├── com_facebook_tooltip_black_bottomnub.png │ ├── com_facebook_tooltip_black_topnub.png │ ├── com_facebook_tooltip_black_xout.png │ ├── com_facebook_tooltip_blue_background.9.png │ ├── com_facebook_tooltip_blue_bottomnub.png │ ├── com_facebook_tooltip_blue_topnub.png │ ├── com_facebook_tooltip_blue_xout.png │ ├── messenger_bubble_large_blue.png │ ├── messenger_bubble_large_white.png │ ├── messenger_bubble_small_blue.png │ ├── messenger_bubble_small_white.png │ ├── messenger_button_send_round_shadow.png │ ├── umeng_socialize_switchimage_choose.png │ └── umeng_socialize_switchimage_unchoose.png │ ├── drawable-xxhdpi │ ├── com_facebook_button_icon.png │ ├── com_facebook_button_like_icon_selected.png │ ├── com_facebook_button_send_icon.png │ ├── messenger_bubble_large_blue.png │ ├── messenger_bubble_large_white.png │ ├── messenger_bubble_small_blue.png │ ├── messenger_bubble_small_white.png │ └── messenger_button_send_round_shadow.png │ ├── drawable │ ├── com_facebook_button_background.xml │ ├── com_facebook_button_like_background.xml │ ├── com_facebook_button_login_silver_background.xml │ ├── com_facebook_button_send_background.xml │ ├── messenger_button_blue_bg_round.xml │ ├── messenger_button_blue_bg_selector.xml │ ├── messenger_button_white_bg_round.xml │ ├── messenger_button_white_bg_selector.xml │ ├── shake_umeng_socialize_close.png │ ├── shake_umeng_socialize_close_button_style.xml │ ├── shake_umeng_socialize_close_pressed.png │ ├── shake_umeng_socialize_edittext_corner.xml │ ├── shake_umeng_socialize_imgview_border.xml │ ├── shake_umeng_socialize_preview_edit_corners_style.xml │ ├── shake_umeng_socialize_shake_layout_corner.xml │ ├── shake_umeng_socialize_share_btn_style.xml │ ├── umeng_socialize_action_back.xml │ ├── umeng_socialize_action_back_normal.png │ ├── umeng_socialize_action_back_selected.png │ ├── umeng_socialize_action_like.png │ ├── umeng_socialize_action_personal_icon.xml │ ├── umeng_socialize_action_personal_normal.png │ ├── umeng_socialize_action_personal_selected.png │ ├── umeng_socialize_action_share_icon.xml │ ├── umeng_socialize_action_share_normal.png │ ├── umeng_socialize_action_share_selected.png │ ├── umeng_socialize_action_unlike.png │ ├── umeng_socialize_actionbar_bg.9.png │ ├── umeng_socialize_at_button.xml │ ├── umeng_socialize_at_normal.png │ ├── umeng_socialize_at_selected.png │ ├── umeng_socialize_bind_bg.9.png │ ├── umeng_socialize_button_blue.9.png │ ├── umeng_socialize_button_grey.9.png │ ├── umeng_socialize_button_grey_blue.xml │ ├── umeng_socialize_button_login.xml │ ├── umeng_socialize_button_login_normal.png │ ├── umeng_socialize_button_login_pressed.png │ ├── umeng_socialize_button_red.9.png │ ├── umeng_socialize_button_red_blue.xml │ ├── umeng_socialize_button_white.9.png │ ├── umeng_socialize_button_white_blue.xml │ ├── umeng_socialize_checked.png │ ├── umeng_socialize_comment_bg.png │ ├── umeng_socialize_comment_icon.xml │ ├── umeng_socialize_comment_item_bg_shape.xml │ ├── umeng_socialize_comment_normal.png │ ├── umeng_socialize_comment_selected.png │ ├── umeng_socialize_commnet_header_bg.xml │ ├── umeng_socialize_default_avatar.png │ ├── umeng_socialize_divider_line.png │ ├── umeng_socialize_douban_off.png │ ├── umeng_socialize_douban_on.png │ ├── umeng_socialize_evernote.png │ ├── umeng_socialize_evernote_gray.png │ ├── umeng_socialize_facebook.png │ ├── umeng_socialize_facebook_close.png │ ├── umeng_socialize_facebook_off.png │ ├── umeng_socialize_fetch_image.png │ ├── umeng_socialize_fetch_location_disabled.png │ ├── umeng_socialize_flickr.png │ ├── umeng_socialize_flickr_gray.png │ ├── umeng_socialize_follow_check.xml │ ├── umeng_socialize_follow_off.png │ ├── umeng_socialize_follow_on.png │ ├── umeng_socialize_foursquare.png │ ├── umeng_socialize_foursquare_gray.png │ ├── umeng_socialize_gmail_off.png │ ├── umeng_socialize_gmail_on.png │ ├── umeng_socialize_google.png │ ├── umeng_socialize_instagram_off.png │ ├── umeng_socialize_instagram_on.png │ ├── umeng_socialize_kakao.png │ ├── umeng_socialize_kakao_gray.png │ ├── umeng_socialize_laiwang.png │ ├── umeng_socialize_laiwang_dynamic.png │ ├── umeng_socialize_laiwang_dynamic_gray.png │ ├── umeng_socialize_laiwang_gray.png │ ├── umeng_socialize_light_bar_bg.9.png │ ├── umeng_socialize_line.png │ ├── umeng_socialize_line_gray.png │ ├── umeng_socialize_linkedin.png │ ├── umeng_socialize_linkedin_gray.png │ ├── umeng_socialize_location_grey.png │ ├── umeng_socialize_location_ic.png │ ├── umeng_socialize_location_mark.png │ ├── umeng_socialize_location_off.png │ ├── umeng_socialize_location_on.png │ ├── umeng_socialize_nav_bar_bg.png │ ├── umeng_socialize_oauth_check.xml │ ├── umeng_socialize_oauth_check_off.png │ ├── umeng_socialize_oauth_check_on.png │ ├── umeng_socialize_pinterest.png │ ├── umeng_socialize_pinterest_gray.png │ ├── umeng_socialize_pocket.png │ ├── umeng_socialize_pocket_gray.png │ ├── umeng_socialize_pulltorefresh_arrow.png │ ├── umeng_socialize_pv.png │ ├── umeng_socialize_qq_off.png │ ├── umeng_socialize_qq_on.png │ ├── umeng_socialize_qzone_off.png │ ├── umeng_socialize_qzone_on.png │ ├── umeng_socialize_refersh.png │ ├── umeng_socialize_renren_off.png │ ├── umeng_socialize_renren_on.png │ ├── umeng_socialize_search_icon.png │ ├── umeng_socialize_shape_solid_black.xml │ ├── umeng_socialize_shape_solid_grey.xml │ ├── umeng_socialize_share_to_button.xml │ ├── umeng_socialize_share_transparent_corner.xml │ ├── umeng_socialize_shareboard_item_background.xml │ ├── umeng_socialize_sidebar_normal.xml │ ├── umeng_socialize_sidebar_selected.xml │ ├── umeng_socialize_sidebar_selector.xml │ ├── umeng_socialize_sina_off.png │ ├── umeng_socialize_sina_on.png │ ├── umeng_socialize_sms_off.png │ ├── umeng_socialize_sms_on.png │ ├── umeng_socialize_title_back_bt.xml │ ├── umeng_socialize_title_back_bt_normal.png │ ├── umeng_socialize_title_back_bt_selected.png │ ├── umeng_socialize_title_right_bt.xml │ ├── umeng_socialize_title_right_bt_normal.png │ ├── umeng_socialize_title_right_bt_selected.png │ ├── umeng_socialize_title_tab_button_left.xml │ ├── umeng_socialize_title_tab_button_right.xml │ ├── umeng_socialize_title_tab_left_normal.png │ ├── umeng_socialize_title_tab_left_pressed.png │ ├── umeng_socialize_title_tab_right_normal.png │ ├── umeng_socialize_title_tab_right_pressed.png │ ├── umeng_socialize_tumblr.png │ ├── umeng_socialize_tumblr_gray.png │ ├── umeng_socialize_twitter.png │ ├── umeng_socialize_tx_off.png │ ├── umeng_socialize_tx_on.png │ ├── umeng_socialize_wechat.png │ ├── umeng_socialize_wechat_gray.png │ ├── umeng_socialize_whatsapp.png │ ├── umeng_socialize_whatsapp_gray.png │ ├── umeng_socialize_window_shadow_pad.xml │ ├── umeng_socialize_wxcircle.png │ ├── umeng_socialize_wxcircle_gray.png │ ├── umeng_socialize_x_button.png │ ├── umeng_socialize_yixin.png │ ├── umeng_socialize_yixin_circle.png │ ├── umeng_socialize_yixin_circle_gray.png │ ├── umeng_socialize_yixin_gray.png │ ├── umeng_socialize_ynote.png │ └── umeng_socialize_ynote_gray.png │ ├── layout-h500dp-normal │ └── umeng_socialize_ucenter.xml │ ├── layout-sw550dp-large │ ├── umeng_socialize_full_alert_dialog.xml │ ├── umeng_socialize_oauth_dialog.xml │ ├── umeng_socialize_post_comment.xml │ ├── umeng_socialize_post_share.xml │ ├── umeng_socialize_titile_bar.xml │ └── umeng_socialize_ucenter.xml │ ├── layout │ ├── com_facebook_activity_layout.xml │ ├── com_facebook_login_fragment.xml │ ├── com_facebook_tooltip_bubble.xml │ ├── messenger_button_send_blue_large.xml │ ├── messenger_button_send_blue_round.xml │ ├── messenger_button_send_blue_small.xml │ ├── messenger_button_send_white_large.xml │ ├── messenger_button_send_white_round.xml │ ├── messenger_button_send_white_small.xml │ ├── shake_umeng_socialize_scrshot_snapshot.xml │ ├── shake_umeng_socialize_share_dlg.xml │ ├── umeng_bak_at_list.xml │ ├── umeng_bak_at_list_item.xml │ ├── umeng_bak_platform_item_simple.xml │ ├── umeng_bak_platform_selector_dialog.xml │ ├── umeng_socialize_actionbar.xml │ ├── umeng_socialize_at_item.xml │ ├── umeng_socialize_at_overlay.xml │ ├── umeng_socialize_at_view.xml │ ├── umeng_socialize_base_alert_dialog.xml │ ├── umeng_socialize_base_alert_dialog_button.xml │ ├── umeng_socialize_bind_select_dialog.xml │ ├── umeng_socialize_comment_content.xml │ ├── umeng_socialize_comment_detail.xml │ ├── umeng_socialize_comment_detail_nomap.xml │ ├── umeng_socialize_comment_item.xml │ ├── umeng_socialize_comment_more.xml │ ├── umeng_socialize_comment_view.xml │ ├── umeng_socialize_composer_header.xml │ ├── umeng_socialize_facebook_login_activity_layout.xml │ ├── umeng_socialize_failed_load_page.xml │ ├── umeng_socialize_full_alert_dialog.xml │ ├── umeng_socialize_full_alert_dialog_item.xml │ ├── umeng_socialize_full_curtain.xml │ ├── umeng_socialize_oauth_dialog.xml │ ├── umeng_socialize_post_comment.xml │ ├── umeng_socialize_post_comment_platform.xml │ ├── umeng_socialize_post_share.xml │ ├── umeng_socialize_pull_to_refresh_header.xml │ ├── umeng_socialize_shareboard_item.xml │ ├── umeng_socialize_simple_spinner_item.xml │ ├── umeng_socialize_titile_bar.xml │ ├── umeng_socialize_titile_bar_comment.xml │ ├── umeng_socialize_ucenter.xml │ └── umeng_socialize_ucenter_platform_item.xml │ ├── raw │ └── shake_sound.mp3 │ └── values │ ├── facebook_attrs.xml │ ├── facebook_strings.xml │ ├── facebook_styles.xml │ ├── messenger_button_strings.xml │ ├── messenger_button_styles.xml │ ├── shake_umeng_socialize_style.xml │ ├── umeng_socialize_colors.xml │ ├── umeng_socialize_facebook_strings.xml │ ├── umeng_socialize_flickr_strings.xml │ ├── umeng_socialize_foursquare_strings.xml │ ├── umeng_socialize_kakao_strings.xml │ ├── umeng_socialize_laiwang_strings.xml │ ├── umeng_socialize_line_strings.xml │ ├── umeng_socialize_linkedin_strings.xml │ ├── umeng_socialize_pocket_strings.xml │ ├── umeng_socialize_strings.xml │ ├── umeng_socialize_style.xml │ ├── umeng_socialize_tumblr_strings.xml │ ├── umeng_socialize_whatsapp_strings.xml │ └── umeng_socialize_ynote_strings.xml └── test └── java └── com └── umeng_social_sdk_res_lib └── ExampleUnitTest.java /.gitignore: -------------------------------------------------------------------------------- 1 | # Built application files 2 | *.apk 3 | *.ap_ 4 | 5 | # Files for the Dalvik VM 6 | *.dex 7 | 8 | # Java class files 9 | *.class 10 | 11 | # Generated files 12 | bin/ 13 | gen/ 14 | 15 | # Gradle files 16 | .gradle/ 17 | build/ 18 | /*/build/ 19 | 20 | # Local configuration file (sdk path, etc) 21 | local.properties 22 | 23 | # Proguard folder generated by Eclipse 24 | proguard/ 25 | 26 | # Log Files 27 | *.log 28 | *.txt 29 | 30 | # Eclipse project files 31 | .classpath 32 | .project 33 | .settings/ 34 | 35 | # Intellij project files 36 | *.iml 37 | *.ipr 38 | *.iws 39 | .idea/ 40 | 41 | *.keystore 42 | !debug.keystore 43 | 44 | # System files 45 | .DS_Store 46 | 47 | gradle.properties 48 | signing.properties 49 | release.properties -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: android 2 | 3 | android: 4 | components: 5 | - tools 6 | - platform-tools 7 | - build-tools-23.0.2 8 | - android-23 9 | - extra-android-m2repository 10 | - extra-android-support 11 | 12 | jdk: 13 | - oraclejdk7 14 | 15 | env: 16 | global: 17 | - MALLOC_ARENA_MAX=2 18 | - ADB_INSTALL_TIMEOUT=10 19 | 20 | notifications: 21 | email: false 22 | 23 | sudo: required 24 | 25 | cache: 26 | directories: 27 | - $HOME/.gradle 28 | 29 | before_install: 30 | - rm -f gradle.properties 31 | - cp gradle.properties.example gradle.properties 32 | - chmod +x ./gradlew 33 | 34 | script: 35 | - ./gradlew assembleDebug --stacktrace 36 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/libs/arm64-v8a/libjpush182.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CycloneAxe/phphub-android/ccd4ae74bb44b3995abab02fb8fbb65265a86c7f/app/libs/arm64-v8a/libjpush182.so -------------------------------------------------------------------------------- /app/libs/armeabi-v7a/libjpush182.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CycloneAxe/phphub-android/ccd4ae74bb44b3995abab02fb8fbb65265a86c7f/app/libs/armeabi-v7a/libjpush182.so -------------------------------------------------------------------------------- /app/libs/armeabi/libjpush182.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CycloneAxe/phphub-android/ccd4ae74bb44b3995abab02fb8fbb65265a86c7f/app/libs/armeabi/libjpush182.so -------------------------------------------------------------------------------- /app/libs/jpush-sdk-release1.8.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CycloneAxe/phphub-android/ccd4ae74bb44b3995abab02fb8fbb65265a86c7f/app/libs/jpush-sdk-release1.8.2.jar -------------------------------------------------------------------------------- /app/libs/umeng-update-v2.6.0.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CycloneAxe/phphub-android/ccd4ae74bb44b3995abab02fb8fbb65265a86c7f/app/libs/umeng-update-v2.6.0.1.jar -------------------------------------------------------------------------------- /app/libs/x86/libjpush182.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CycloneAxe/phphub-android/ccd4ae74bb44b3995abab02fb8fbb65265a86c7f/app/libs/x86/libjpush182.so -------------------------------------------------------------------------------- /app/libs/x86_64/libjpush182.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CycloneAxe/phphub-android/ccd4ae74bb44b3995abab02fb8fbb65265a86c7f/app/libs/x86_64/libjpush182.so -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /usr/local/opt/android-sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /app/src/androidTest/java/org/estgroup/phphub/ApplicationTest.java: -------------------------------------------------------------------------------- 1 | package org.estgroup.phphub; 2 | 3 | import android.app.Application; 4 | import android.test.ApplicationTestCase; 5 | 6 | /** 7 | * Testing Fundamentals 8 | */ 9 | public class ApplicationTest extends ApplicationTestCase { 10 | public ApplicationTest() { 11 | super(Application.class); 12 | } 13 | } -------------------------------------------------------------------------------- /app/src/main/assets/js/ImageClickEvent.js: -------------------------------------------------------------------------------- 1 | javascript:(function() { 2 | var images = document.getElementsByTagName('img'); 3 | for(var i = 0; i < images.length; i++) { 4 | images[i].onclick = function() { 5 | {platform}.openImage(this.src) 6 | } 7 | } 8 | })(); -------------------------------------------------------------------------------- /app/src/main/java/org/estgroup/phphub/api/entity/NodeEntity.java: -------------------------------------------------------------------------------- 1 | package org.estgroup.phphub.api.entity; 2 | 3 | import org.estgroup.phphub.api.entity.element.Node; 4 | 5 | import java.util.List; 6 | 7 | public class NodeEntity { 8 | 9 | public class Nodes { 10 | public List data; 11 | 12 | public List getData() { 13 | return data; 14 | } 15 | 16 | public void setData(List data) { 17 | this.data = data; 18 | } 19 | } 20 | 21 | public class ANode { 22 | public Node data; 23 | 24 | public Node getData() { 25 | return data; 26 | } 27 | 28 | public void setData(Node data) { 29 | this.data = data; 30 | } 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/java/org/estgroup/phphub/api/entity/NotificationEntity.java: -------------------------------------------------------------------------------- 1 | package org.estgroup.phphub.api.entity; 2 | 3 | import org.estgroup.phphub.api.entity.element.Notification; 4 | 5 | import java.util.List; 6 | 7 | public class NotificationEntity { 8 | private List data; 9 | 10 | public List getData() { 11 | return data; 12 | } 13 | 14 | public void setData(List data) { 15 | this.data = data; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/java/org/estgroup/phphub/api/entity/ReplyEntity.java: -------------------------------------------------------------------------------- 1 | package org.estgroup.phphub.api.entity; 2 | 3 | import org.estgroup.phphub.api.entity.element.Reply; 4 | 5 | import java.util.List; 6 | 7 | public class ReplyEntity { 8 | 9 | public class Replys { 10 | public List data; 11 | 12 | public List getData() { 13 | return data; 14 | } 15 | 16 | public void setData(List data) { 17 | this.data = data; 18 | } 19 | } 20 | 21 | public class AReply { 22 | Reply data; 23 | 24 | public Reply getData() { 25 | return data; 26 | } 27 | 28 | public void setData(Reply data) { 29 | this.data = data; 30 | } 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/java/org/estgroup/phphub/api/entity/TopicEntity.java: -------------------------------------------------------------------------------- 1 | package org.estgroup.phphub.api.entity; 2 | 3 | import org.estgroup.phphub.api.entity.element.Topic; 4 | 5 | import java.util.List; 6 | 7 | public class TopicEntity { 8 | protected List data; 9 | 10 | public List getData() { 11 | return data; 12 | } 13 | 14 | public void setData(List data) { 15 | this.data = data; 16 | } 17 | 18 | public class ATopic { 19 | protected Topic data; 20 | 21 | public Topic getData() { 22 | return data; 23 | } 24 | 25 | public void setData(Topic data) { 26 | this.data = data; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/org/estgroup/phphub/api/entity/UserEntity.java: -------------------------------------------------------------------------------- 1 | package org.estgroup.phphub.api.entity; 2 | 3 | import org.estgroup.phphub.api.entity.element.User; 4 | 5 | import java.util.List; 6 | 7 | public class UserEntity { 8 | 9 | public class Users { 10 | public List data; 11 | 12 | public List getData() { 13 | return data; 14 | } 15 | 16 | public void setData(List data) { 17 | this.data = data; 18 | } 19 | } 20 | 21 | public class AUser { 22 | public User data; 23 | 24 | public User getData() { 25 | return data; 26 | } 27 | 28 | public void setData(User data) { 29 | this.data = data; 30 | } 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/java/org/estgroup/phphub/api/entity/element/Node.java: -------------------------------------------------------------------------------- 1 | package org.estgroup.phphub.api.entity.element; 2 | 3 | import com.google.gson.annotations.SerializedName; 4 | 5 | public class Node { 6 | 7 | int id; 8 | 9 | String name; 10 | 11 | @SerializedName("parent_node") 12 | int parentNode; 13 | 14 | public int getId() { 15 | return id; 16 | } 17 | 18 | public void setId(int id) { 19 | this.id = id; 20 | } 21 | 22 | public String getName() { 23 | return name; 24 | } 25 | 26 | public void setName(String name) { 27 | this.name = name; 28 | } 29 | 30 | public int getParentNode() { 31 | return parentNode; 32 | } 33 | 34 | public void setParentNode(int parentNode) { 35 | this.parentNode = parentNode; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /app/src/main/java/org/estgroup/phphub/api/entity/element/Response.java: -------------------------------------------------------------------------------- 1 | package org.estgroup.phphub.api.entity.element; 2 | 3 | import com.google.gson.annotations.SerializedName; 4 | 5 | public class Response { 6 | 7 | String message; 8 | 9 | @SerializedName("status_code") 10 | int statusCode; 11 | 12 | public String getMessage() { 13 | return message; 14 | } 15 | 16 | public void setMessage(String message) { 17 | this.message = message; 18 | } 19 | 20 | public int getStatusCode() { 21 | return statusCode; 22 | } 23 | 24 | public void setStatusCode(int statusCode) { 25 | this.statusCode = statusCode; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /app/src/main/java/org/estgroup/phphub/common/base/BaseRxPresenter.java: -------------------------------------------------------------------------------- 1 | package org.estgroup.phphub.common.base; 2 | 3 | import android.os.Bundle; 4 | import icepick.Icepick; 5 | import nucleus.presenter.RxPresenter; 6 | 7 | public class BaseRxPresenter extends RxPresenter { 8 | 9 | @Override 10 | protected void onCreate(Bundle savedState) { 11 | super.onCreate(savedState); 12 | Icepick.restoreInstanceState(this, savedState); 13 | } 14 | 15 | @Override 16 | protected void onSave(Bundle state) { 17 | super.onSave(state); 18 | Icepick.saveInstanceState(this, state); 19 | } 20 | } -------------------------------------------------------------------------------- /app/src/main/java/org/estgroup/phphub/common/event/NotificationChangeEvent.java: -------------------------------------------------------------------------------- 1 | package org.estgroup.phphub.common.event; 2 | 3 | public class NotificationChangeEvent { 4 | 5 | public final int notificationLength; 6 | 7 | public NotificationChangeEvent(int notificationLength) { 8 | this.notificationLength = notificationLength; 9 | } 10 | 11 | public int getNotificationLength() { 12 | return notificationLength; 13 | } 14 | } -------------------------------------------------------------------------------- /app/src/main/java/org/estgroup/phphub/common/internal/di/component/ActivityComponent.java: -------------------------------------------------------------------------------- 1 | package org.estgroup.phphub.common.internal.di.component; 2 | 3 | import android.app.Activity; 4 | 5 | import org.estgroup.phphub.common.internal.di.module.ActivityModule; 6 | import org.estgroup.phphub.common.internal.di.scope.PerActivity; 7 | 8 | import dagger.Component; 9 | 10 | @PerActivity 11 | @Component( 12 | dependencies = AppComponent.class, 13 | modules = ActivityModule.class 14 | ) 15 | public interface ActivityComponent { 16 | Activity activity(); 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/java/org/estgroup/phphub/common/internal/di/component/AppComponent.java: -------------------------------------------------------------------------------- 1 | package org.estgroup.phphub.common.internal.di.component; 2 | 3 | import org.estgroup.phphub.common.Navigator; 4 | import org.estgroup.phphub.common.internal.di.module.AppModule; 5 | import org.estgroup.phphub.ui.view.RecommendedFragment; 6 | import org.estgroup.phphub.ui.view.settings.SettingsFragment; 7 | import org.estgroup.phphub.ui.view.user.UserSpaceActivity; 8 | 9 | import javax.inject.Singleton; 10 | 11 | import dagger.Component; 12 | 13 | @Singleton 14 | @Component(modules = AppModule.class) 15 | public interface AppComponent { 16 | void inject(SettingsFragment settingsFragment); 17 | 18 | void inject(RecommendedFragment recommendedFragment); 19 | 20 | void inject(UserSpaceActivity userSpaceActivity); 21 | 22 | Navigator navigator(); 23 | } 24 | -------------------------------------------------------------------------------- /app/src/main/java/org/estgroup/phphub/common/internal/di/module/ActivityModule.java: -------------------------------------------------------------------------------- 1 | package org.estgroup.phphub.common.internal.di.module; 2 | 3 | import android.app.Activity; 4 | 5 | import org.estgroup.phphub.common.internal.di.scope.PerActivity; 6 | 7 | import dagger.Module; 8 | import dagger.Provides; 9 | 10 | @Module 11 | public class ActivityModule { 12 | private final Activity activity; 13 | 14 | public ActivityModule(Activity activity) { 15 | this.activity = activity; 16 | } 17 | 18 | @Provides 19 | @PerActivity 20 | Activity provideActivity() { 21 | return activity; 22 | } 23 | } -------------------------------------------------------------------------------- /app/src/main/java/org/estgroup/phphub/common/internal/di/qualifier/ForApplication.java: -------------------------------------------------------------------------------- 1 | package org.estgroup.phphub.common.internal.di.qualifier; 2 | 3 | import java.lang.annotation.Retention; 4 | 5 | import javax.inject.Qualifier; 6 | 7 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 8 | 9 | @Qualifier 10 | @Retention(RUNTIME) 11 | public @interface ForApplication { 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/org/estgroup/phphub/common/internal/di/scope/PerActivity.java: -------------------------------------------------------------------------------- 1 | package org.estgroup.phphub.common.internal.di.scope; 2 | 3 | 4 | import java.lang.annotation.Retention; 5 | 6 | import javax.inject.Scope; 7 | 8 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 9 | 10 | @Scope 11 | @Retention(RUNTIME) 12 | public @interface PerActivity {} -------------------------------------------------------------------------------- /app/src/main/java/org/estgroup/phphub/common/provider/BusProvider.java: -------------------------------------------------------------------------------- 1 | package org.estgroup.phphub.common.provider; 2 | 3 | import com.squareup.otto.Bus; 4 | import com.squareup.otto.ThreadEnforcer; 5 | 6 | public final class BusProvider { 7 | 8 | private static final Bus BUS = new Bus(ThreadEnforcer.MAIN); 9 | 10 | public static Bus getInstance() { 11 | return BUS; 12 | } 13 | 14 | private BusProvider() { 15 | 16 | } 17 | } -------------------------------------------------------------------------------- /app/src/main/java/org/estgroup/phphub/common/provider/GuestTokenProvider.java: -------------------------------------------------------------------------------- 1 | package org.estgroup.phphub.common.provider; 2 | 3 | import com.github.pwittchen.prefser.library.Prefser; 4 | import static org.estgroup.phphub.common.Constant.*; 5 | 6 | public class GuestTokenProvider implements TokenProvider { 7 | private Prefser prefser; 8 | 9 | public GuestTokenProvider(Prefser prefser) { 10 | this.prefser = prefser; 11 | } 12 | 13 | @Override 14 | public String getToken() { 15 | if (prefser != null) { 16 | return prefser.get(GUEST_TOKEN_KEY, String.class, ""); 17 | } 18 | return null; 19 | } 20 | } -------------------------------------------------------------------------------- /app/src/main/java/org/estgroup/phphub/common/provider/TokenProvider.java: -------------------------------------------------------------------------------- 1 | package org.estgroup.phphub.common.provider; 2 | 3 | public interface TokenProvider { 4 | String getToken(); 5 | } 6 | -------------------------------------------------------------------------------- /app/src/main/java/org/estgroup/phphub/common/qualifier/AuthType.java: -------------------------------------------------------------------------------- 1 | package org.estgroup.phphub.common.qualifier; 2 | 3 | import android.support.annotation.StringDef; 4 | 5 | import java.lang.annotation.Retention; 6 | 7 | import static java.lang.annotation.RetentionPolicy.SOURCE; 8 | import static org.estgroup.phphub.common.qualifier.AuthType.*; 9 | 10 | @Retention(SOURCE) 11 | @StringDef({ 12 | AUTH_TYPE_GUEST, 13 | AUTH_TYPE_USER, 14 | AUTH_TYPE_REFRESH 15 | }) 16 | public @interface AuthType { 17 | String AUTH_TYPE_GUEST = "client_credentials"; 18 | 19 | String AUTH_TYPE_USER = "login_token"; 20 | 21 | String AUTH_TYPE_REFRESH = "refresh_token"; 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/org/estgroup/phphub/common/qualifier/ClickType.java: -------------------------------------------------------------------------------- 1 | package org.estgroup.phphub.common.qualifier; 2 | 3 | import android.support.annotation.IntDef; 4 | 5 | import java.lang.annotation.Retention; 6 | 7 | import static java.lang.annotation.RetentionPolicy.SOURCE; 8 | import static org.estgroup.phphub.common.qualifier.ClickType.*; 9 | 10 | @Retention(SOURCE) 11 | @IntDef({ 12 | CLICK_TYPE_USER_CLICKED, 13 | CLICK_TYPE_TOPIC_CLICKED 14 | }) 15 | public @interface ClickType { 16 | int CLICK_TYPE_USER_CLICKED = 1000; 17 | 18 | int CLICK_TYPE_TOPIC_CLICKED = 1001; 19 | } -------------------------------------------------------------------------------- /app/src/main/java/org/estgroup/phphub/common/qualifier/MainTabType.java: -------------------------------------------------------------------------------- 1 | package org.estgroup.phphub.common.qualifier; 2 | 3 | 4 | import android.support.annotation.StringDef; 5 | 6 | import java.lang.annotation.Retention; 7 | 8 | import static java.lang.annotation.RetentionPolicy.SOURCE; 9 | import static org.estgroup.phphub.common.qualifier.MainTabType.*; 10 | 11 | @Retention(SOURCE) 12 | @StringDef({ 13 | MAIN_TAB_TYPE_RECOMMENDED, 14 | MAIN_TAB_TYPE_TOPICS, 15 | MAIN_TAB_TYPE_WIKI, 16 | MAIN_TAB_TYPE_ME 17 | }) 18 | public @interface MainTabType { 19 | String MAIN_TAB_TYPE_RECOMMENDED = "recommended"; 20 | 21 | String MAIN_TAB_TYPE_TOPICS = "topics"; 22 | 23 | String MAIN_TAB_TYPE_WIKI = "wiki"; 24 | 25 | String MAIN_TAB_TYPE_ME = "me"; 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/java/org/estgroup/phphub/common/qualifier/TopicType.java: -------------------------------------------------------------------------------- 1 | package org.estgroup.phphub.common.qualifier; 2 | 3 | import android.support.annotation.StringDef; 4 | 5 | import java.lang.annotation.Retention; 6 | 7 | import static java.lang.annotation.RetentionPolicy.SOURCE; 8 | import static org.estgroup.phphub.common.qualifier.TopicType.*; 9 | 10 | @Retention(SOURCE) 11 | @StringDef({ 12 | TOPIC_TYPE_RECENT, 13 | TOPIC_TYPE_VOTE, 14 | TOPIC_TYPE_NOBODY, 15 | TOPIC_TYPE_JOBS 16 | }) 17 | public @interface TopicType { 18 | String TOPIC_TYPE_RECENT = "recent"; 19 | 20 | String TOPIC_TYPE_VOTE = "vote"; 21 | 22 | String TOPIC_TYPE_NOBODY = "bobody"; 23 | 24 | String TOPIC_TYPE_JOBS = "jobs"; 25 | } 26 | -------------------------------------------------------------------------------- /app/src/main/java/org/estgroup/phphub/common/qualifier/UserTopicType.java: -------------------------------------------------------------------------------- 1 | package org.estgroup.phphub.common.qualifier; 2 | 3 | import android.support.annotation.StringDef; 4 | 5 | import java.lang.annotation.Retention; 6 | import static java.lang.annotation.RetentionPolicy.SOURCE; 7 | import static org.estgroup.phphub.common.qualifier.UserTopicType.*; 8 | 9 | @Retention(SOURCE) 10 | @StringDef({ 11 | USER_TOPIC_TYPE, 12 | USER_TOPIC_FOLLOW_TYPE, 13 | USER_TOPIC_FAVORITE_TYPE 14 | }) 15 | public @interface UserTopicType { 16 | String USER_TOPIC_TYPE = "user_topic_type"; 17 | 18 | String USER_TOPIC_FOLLOW_TYPE = "user_topic_follow_type"; 19 | 20 | String USER_TOPIC_FAVORITE_TYPE = "user_topic_favorite_type"; 21 | 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/org/estgroup/phphub/common/service/AuthService.java: -------------------------------------------------------------------------------- 1 | package org.estgroup.phphub.common.service; 2 | 3 | import android.content.Context; 4 | 5 | import org.estgroup.phphub.R; 6 | 7 | import eu.unicate.retroauth.AuthenticationService; 8 | 9 | public class AuthService extends AuthenticationService { 10 | @Override 11 | public String getLoginAction(Context context) { 12 | return getString(R.string.authentication_action); 13 | } 14 | } -------------------------------------------------------------------------------- /app/src/main/java/org/estgroup/phphub/common/transformer/RetryTransformer.java: -------------------------------------------------------------------------------- 1 | package org.estgroup.phphub.common.transformer; 2 | 3 | public abstract class RetryTransformer { 4 | protected final static int RETRY_COUNT = 1; 5 | } -------------------------------------------------------------------------------- /app/src/main/java/org/estgroup/phphub/common/transformer/SchedulerTransformer.java: -------------------------------------------------------------------------------- 1 | package org.estgroup.phphub.common.transformer; 2 | 3 | import rx.Observable; 4 | import rx.android.schedulers.AndroidSchedulers; 5 | import rx.schedulers.Schedulers; 6 | 7 | public class SchedulerTransformer implements Observable.Transformer { 8 | @Override 9 | public Observable call(Observable observable) { 10 | return observable.subscribeOn(Schedulers.io()) 11 | .observeOn(AndroidSchedulers.mainThread()); 12 | } 13 | } -------------------------------------------------------------------------------- /app/src/main/java/org/estgroup/phphub/widget/LoopView/LoopListener.java: -------------------------------------------------------------------------------- 1 | // Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. 2 | // Jad home page: http://www.geocities.com/kpdus/jad.html 3 | // Decompiler options: braces fieldsfirst space lnc 4 | 5 | package org.estgroup.phphub.widget.LoopView; 6 | 7 | 8 | public interface LoopListener 9 | { 10 | 11 | public abstract void onItemSelect(int item); 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/org/estgroup/phphub/wxapi/WXEntryActivity.java: -------------------------------------------------------------------------------- 1 | package org.estgroup.phphub.wxapi; 2 | 3 | import com.umeng.socialize.weixin.view.WXCallbackActivity; 4 | 5 | public class WXEntryActivity extends WXCallbackActivity { 6 | 7 | } -------------------------------------------------------------------------------- /app/src/main/res/anim/dialog_enter_anim.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/anim/dialog_exit_anim.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/anim/slide_left_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/anim/slide_left_out.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/anim/slide_right_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/anim/slide_right_out.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/color/custom_tab_icon.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/color/tab_text_switch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_circular_with_robot.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_dialog.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_radius_blue.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_radius_yellow.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/common_publish_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/detail_count.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/detail_favorite.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/detail_following.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/detail_reply.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_me.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_recommended.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_topics.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_wiki.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shap_line_only_bottom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shap_line_only_left.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shap_line_only_top.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shap_line_top_and_bottom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shap_profile_space_divider.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shap_settings_only_bottom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/tb_munion_icon.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/tb_munion_item_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/topic_item_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/umeng_common_gradient_green.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/umeng_common_gradient_orange.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/umeng_common_gradient_red.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/umeng_update_button_cancel_bg_focused.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/umeng_update_button_cancel_bg_normal.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/umeng_update_button_cancel_bg_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 8 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/umeng_update_button_cancel_bg_tap.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/umeng_update_button_close_bg_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 8 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/umeng_update_button_ok_bg_focused.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/umeng_update_button_ok_bg_normal.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/umeng_update_button_ok_bg_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 8 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/umeng_update_button_ok_bg_tap.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/umeng_update_dialog_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/umeng_update_title_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/umeng_update_wifi_disable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CycloneAxe/phphub-android/ccd4ae74bb44b3995abab02fb8fbb65265a86c7f/app/src/main/res/drawable/umeng_update_wifi_disable.png -------------------------------------------------------------------------------- /app/src/main/res/layout/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CycloneAxe/phphub-android/ccd4ae74bb44b3995abab02fb8fbb65265a86c7f/app/src/main/res/layout/.DS_Store -------------------------------------------------------------------------------- /app/src/main/res/layout/common_avatar.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/layout/common_empty.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/common_error.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 13 | 14 |