├── .gitignore ├── .idea ├── .name ├── codeInsightSettings.xml ├── codeStyleSettings.xml ├── compiler.xml ├── copyright │ ├── Default.xml │ └── profiles_settings.xml ├── dictionaries │ └── TheKeeperOfPie.xml ├── encodings.xml ├── gradle.xml ├── inspectionProfiles │ ├── Project_Default.xml │ └── profiles_settings.xml ├── libraries │ ├── YouTubeAndroidPlayerApi.xml │ ├── adapter_rxjava_2_0_0.xml │ ├── commons_cli_1_2.xml │ ├── glide_3_7_0.xml │ ├── jackson_annotations_2_7_4.xml │ ├── jackson_core_2_7_4.xml │ ├── jackson_databind_2_7_4.xml │ ├── javax_inject_1.xml │ ├── jsr250_api_1_0.xml │ ├── jsr305_2_0_1.xml │ ├── leakcanary_android_no_op_1_4_beta2.xml │ ├── logging_interceptor_3_2_0.xml │ ├── okhttp3_integration_1_4_0.xml │ ├── okhttp_3_2_0.xml │ ├── okio_1_6_0.xml │ ├── picasso2_okhttp3_downloader_1_0_2.xml │ ├── picasso_2_5_2.xml │ ├── retrofit_2_0_0.xml │ ├── rxrelay_1_1_1_SNAPSHOT.xml │ ├── stetho_1_3_0.xml │ ├── stetho_okhttp3_1_3_0.xml │ ├── takt_1_0_2.xml │ └── txtmark_0_13.xml ├── misc.xml ├── modules.xml ├── runConfigurations.xml └── vcs.xml ├── Assets ├── AppIcon │ └── app_icon.png ├── Comment Thread.psd ├── Expanded Item.psd ├── Nav Drawer.psd ├── Screenshots │ ├── Comment Thread.png │ ├── Expanded Item.png │ ├── Nav Drawer.png │ ├── Thread List.png │ ├── comments.png │ ├── grid_view_aww.png │ ├── grid_view_world_news.png │ ├── inbox.png │ ├── overview.png │ ├── subreddit_search.png │ └── thread_list.png └── Thread List.psd ├── README.md ├── Reader.iml ├── app ├── .gitignore ├── app-release.apk ├── app.iml ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── winsonchiu │ │ └── reader │ │ ├── ActivityMain.java │ │ ├── ActivityMainRoot.java │ │ ├── AppSettings.java │ │ ├── ControllerUser.java │ │ ├── CustomApplication.java │ │ ├── DefaultingEnum.java │ │ ├── FragmentBase.java │ │ ├── FragmentListenerBase.java │ │ ├── FragmentNewMessage.java │ │ ├── FragmentNewPost.java │ │ ├── FragmentWeb.java │ │ ├── Match.java │ │ ├── ReplyModel.java │ │ ├── accounts │ │ └── AccountsAdapter.java │ │ ├── adapter │ │ ├── AdapterBase.java │ │ ├── AdapterCallback.java │ │ ├── AdapterDataListener.java │ │ ├── AdapterListener.java │ │ ├── AdapterLoadMoreListener.java │ │ └── RxAdapterEvent.java │ │ ├── auth │ │ ├── ActivityLogin.java │ │ ├── AuthReceiver.java │ │ ├── Authenticator.java │ │ └── ServiceAuthenticator.java │ │ ├── comments │ │ ├── AdapterCommentList.java │ │ ├── AdapterLinkHeader.java │ │ ├── CommentsError.java │ │ ├── CommentsModel.java │ │ ├── CommentsTopModel.java │ │ ├── ControllerComments.java │ │ ├── ControllerCommentsTop.java │ │ ├── FragmentComments.java │ │ ├── FragmentCommentsInner.java │ │ ├── FragmentReply.java │ │ └── Source.java │ │ ├── dagger │ │ ├── ScopeActivity.java │ │ ├── components │ │ │ ├── ComponentActivity.java │ │ │ ├── ComponentData.java │ │ │ ├── ComponentMain.java │ │ │ └── ComponentStatic.java │ │ └── modules │ │ │ ├── ModuleApi.java │ │ │ ├── ModuleContext.java │ │ │ ├── ModuleData.java │ │ │ ├── ModuleHistory.java │ │ │ └── ModuleReddit.java │ │ ├── data │ │ ├── Api.java │ │ ├── Page.java │ │ ├── api │ │ │ ├── ApiRedditAuthorized.java │ │ │ ├── ApiRedditDefault.java │ │ │ └── ApiUtility.java │ │ ├── database │ │ │ ├── Table.java │ │ │ ├── TransactionInsertOrReplace.java │ │ │ └── reddit │ │ │ │ ├── RedditDatabase.java │ │ │ │ ├── RedditOpenHelper.java │ │ │ │ ├── TableLink.java │ │ │ │ ├── TableSubreddit.java │ │ │ │ └── TableSubredditPage.java │ │ ├── imgur │ │ │ ├── Album.java │ │ │ └── Image.java │ │ ├── reddit │ │ │ ├── Comment.java │ │ │ ├── JsonPayload.java │ │ │ ├── Likes.java │ │ │ ├── Link.java │ │ │ ├── Listing.java │ │ │ ├── Message.java │ │ │ ├── Reddit.java │ │ │ ├── RedditLegacyEditedDeserializer.java │ │ │ ├── RedditLegacyEditedSerializer.java │ │ │ ├── RedditTimestampDeserializer.java │ │ │ ├── RedditTimestampSerializer.java │ │ │ ├── Replyable.java │ │ │ ├── Report.java │ │ │ ├── Saveable.java │ │ │ ├── Sort.java │ │ │ ├── Submission.java │ │ │ ├── Subreddit.java │ │ │ ├── TagHandlerReddit.java │ │ │ ├── Thing.java │ │ │ ├── ThingError.java │ │ │ ├── Time.java │ │ │ ├── User.java │ │ │ └── Votable.java │ │ └── retrofit │ │ │ └── ConverterFactory.java │ │ ├── glide │ │ ├── GlideConfiguration.java │ │ └── RequestListenerCompletion.java │ │ ├── history │ │ ├── AdapterHistoryLinkGrid.java │ │ ├── AdapterHistoryLinkList.java │ │ ├── ControllerHistory.java │ │ ├── FragmentHistory.java │ │ ├── Historian.java │ │ ├── HistoryEntry.java │ │ └── ThreadHistorySearch.java │ │ ├── inbox │ │ ├── AdapterInbox.java │ │ ├── AdapterInboxPage.java │ │ ├── ControllerInbox.java │ │ ├── FragmentInbox.java │ │ └── Receiver.java │ │ ├── links │ │ ├── AdapterAlbum.java │ │ ├── AdapterLink.java │ │ ├── AdapterLinkGrid.java │ │ ├── AdapterLinkList.java │ │ ├── ControllerLinks.java │ │ ├── ControllerLinksBase.java │ │ ├── FragmentThreadList.java │ │ ├── LinkModel.java │ │ ├── LinksController.java │ │ ├── LinksError.java │ │ ├── LinksListenerBase.java │ │ └── LinksModel.java │ │ ├── profile │ │ ├── AdapterProfile.java │ │ ├── AdapterProfilePage.java │ │ ├── ControllerProfile.java │ │ └── FragmentProfile.java │ │ ├── rx │ │ ├── ActionLog.java │ │ ├── FinalizingSubscriber.java │ │ ├── ObserverComplete.java │ │ ├── ObserverEmpty.java │ │ ├── ObserverError.java │ │ ├── ObserverFinish.java │ │ ├── ObserverNext.java │ │ ├── RxPaginator.java │ │ └── SubscriberCallError.java │ │ ├── search │ │ ├── AdapterSearchLinkList.java │ │ ├── AdapterSearchSubreddits.java │ │ ├── ControllerSearch.java │ │ ├── ControllerSearchBase.java │ │ └── FragmentSearch.java │ │ ├── settings │ │ ├── ActivitySettings.java │ │ ├── AdapterHeaders.java │ │ ├── FragmentAbout.java │ │ ├── FragmentBehavior.java │ │ ├── FragmentDisplay.java │ │ ├── FragmentHeaders.java │ │ ├── FragmentMail.java │ │ ├── FragmentPreferences.java │ │ └── Header.java │ │ ├── theme │ │ ├── ThemeBackground.java │ │ ├── ThemeColor.java │ │ ├── ThemeWrapper.java │ │ └── Themer.java │ │ ├── utils │ │ ├── BaseMediaPlayerControl.java │ │ ├── BaseTextWatcher.java │ │ ├── CallbackYoutubeDestruction.java │ │ ├── ControllerListener.java │ │ ├── CustomColorFilter.java │ │ ├── CustomItemTouchHelper.java │ │ ├── DisallowListener.java │ │ ├── EventListenerBase.java │ │ ├── FixedFloatingActionButtonBehavior.java │ │ ├── FragmentYouTube.java │ │ ├── ImageDownload.java │ │ ├── ItemDecorationDivider.java │ │ ├── LinearLayoutManagerWrapHeight.java │ │ ├── OnSizeChangedListener.java │ │ ├── OnTouchListenerDisallow.java │ │ ├── PicassoEndCallback.java │ │ ├── RecyclerCallback.java │ │ ├── RecyclerFragmentPagerAdapter.java │ │ ├── ScrollAwareFloatingActionButtonBehavior.java │ │ ├── SimpleCallbackBackground.java │ │ ├── SimplePlayerStateChangeListener.java │ │ ├── SpanLeadingMargin.java │ │ ├── TargetImageDownload.java │ │ ├── Utils.java │ │ ├── UtilsAnimation.java │ │ ├── UtilsColor.java │ │ ├── UtilsImage.java │ │ ├── UtilsInput.java │ │ ├── UtilsJson.java │ │ ├── UtilsList.java │ │ ├── UtilsReddit.java │ │ ├── UtilsRx.java │ │ ├── UtilsTheme.java │ │ ├── UtilsView.java │ │ ├── VideoViewContextWrapper.java │ │ ├── ViewHolderBase.java │ │ ├── YouTubeListener.java │ │ └── YouTubePlayerStateListener.java │ │ └── views │ │ ├── CustomCoordinatorLayout.java │ │ ├── CustomDrawerLayout.java │ │ ├── CustomFrameLayout.java │ │ ├── CustomImageButton.java │ │ ├── CustomRecyclerView.java │ │ ├── CustomRelativeLayout.java │ │ ├── CustomScrollView.java │ │ ├── CustomShareActionProvider.java │ │ ├── CustomSwipeRefreshLayout.java │ │ ├── ImageViewSquare.java │ │ ├── ImageViewZoom.java │ │ ├── RecyclerViewZeroHeight.java │ │ └── ScrollViewHeader.java │ └── res │ ├── anim │ ├── nothing.xml │ ├── slide_from_bottom.xml │ └── slide_to_bottom.xml │ ├── animator │ ├── slide_from_left.xml │ └── slide_to_right.xml │ ├── drawable-hdpi │ ├── ic_access_time_white_24dp.png │ ├── ic_add_white_24dp.png │ ├── ic_arrow_back_white_24dp.png │ ├── ic_arrow_drop_down_white_24dp.png │ ├── ic_arrow_drop_up_white_24dp.png │ ├── ic_build_white_24dp.png │ ├── ic_chat_white_48dp.png │ ├── ic_check_white_24dp.png │ ├── ic_clear_all_white_24dp.png │ ├── ic_content_copy_white_24dp.png │ ├── ic_delete_white_24dp.png │ ├── ic_edit_white_24dp.png │ ├── ic_email_white_24dp.png │ ├── ic_exit_to_app_white_24dp.png │ ├── ic_expand_less_white_24dp.png │ ├── ic_expand_more_white_24dp.png │ ├── ic_file_download_white_24dp.png │ ├── ic_format_bold_white_24dp.png │ ├── ic_format_italic_white_24dp.png │ ├── ic_format_list_bulleted_white_24dp.png │ ├── ic_format_list_numbered_white_24dp.png │ ├── ic_format_quote_white_24dp.png │ ├── ic_format_strikethrough_white_24dp.png │ ├── ic_help_outline_white_24dp.png │ ├── ic_history_white_24dp.png │ ├── ic_home_white_24dp.png │ ├── ic_inbox_white_24dp.png │ ├── ic_info_outline_white_24dp.png │ ├── ic_insert_link_white_24dp.png │ ├── ic_keyboard_arrow_down_white_24dp.png │ ├── ic_keyboard_arrow_up_white_24dp.png │ ├── ic_mail_white_24dp.png │ ├── ic_menu_white_24dp.png │ ├── ic_mode_comment_white_24dp.png │ ├── ic_mode_comment_white_outline_24dp.png │ ├── ic_more_vert_white_24dp.png │ ├── ic_open_in_browser_white_24dp.png │ ├── ic_open_in_new_white_24dp.png │ ├── ic_palette_white_24dp.png │ ├── ic_person_white_24dp.png │ ├── ic_photo_album_white_48dp.png │ ├── ic_play_circle_outline_white_48dp.png │ ├── ic_refresh_white_24dp.png │ ├── ic_reorder_white_24dp.png │ ├── ic_reply_white_24dp.png │ ├── ic_report_white_24dp.png │ ├── ic_save_white_24dp.png │ ├── ic_search_white_24dp.png │ ├── ic_send_white_24dp.png │ ├── ic_settings_white_24dp.png │ ├── ic_share_white_24dp.png │ ├── ic_sort_white_24dp.png │ ├── ic_text_format_white_24dp.png │ ├── ic_today_white_24dp.png │ ├── ic_unfold_more_white_24dp.png │ ├── ic_vertical_align_top_white_24dp.png │ ├── ic_view_list_white_24dp.png │ ├── ic_view_module_white_24dp.png │ ├── ic_visibility_off_white_24dp.png │ ├── ic_visibility_white_24dp.png │ ├── ic_warning_white_24dp.png │ └── ic_web_white_48dp.png │ ├── drawable-ldrtl-hdpi │ └── ic_send_white_24dp.png │ ├── drawable-ldrtl-xhdpi │ └── ic_send_white_24dp.png │ ├── drawable-ldrtl-xxhdpi │ └── ic_send_white_24dp.png │ ├── drawable-v21 │ ├── progress_circular.xml │ ├── progress_horizontal.xml │ └── progress_indeterminate_circular.xml │ ├── drawable-xhdpi │ ├── ic_access_time_white_24dp.png │ ├── ic_add_white_24dp.png │ ├── ic_arrow_back_white_24dp.png │ ├── ic_arrow_drop_down_white_24dp.png │ ├── ic_arrow_drop_up_white_24dp.png │ ├── ic_build_white_24dp.png │ ├── ic_chat_white_48dp.png │ ├── ic_check_white_24dp.png │ ├── ic_clear_all_white_24dp.png │ ├── ic_content_copy_white_24dp.png │ ├── ic_delete_white_24dp.png │ ├── ic_edit_white_24dp.png │ ├── ic_email_white_24dp.png │ ├── ic_exit_to_app_white_24dp.png │ ├── ic_expand_less_white_24dp.png │ ├── ic_expand_more_white_24dp.png │ ├── ic_file_download_white_24dp.png │ ├── ic_format_bold_white_24dp.png │ ├── ic_format_italic_white_24dp.png │ ├── ic_format_list_bulleted_white_24dp.png │ ├── ic_format_list_numbered_white_24dp.png │ ├── ic_format_quote_white_24dp.png │ ├── ic_format_strikethrough_white_24dp.png │ ├── ic_help_outline_white_24dp.png │ ├── ic_history_white_24dp.png │ ├── ic_home_white_24dp.png │ ├── ic_inbox_white_24dp.png │ ├── ic_info_outline_white_24dp.png │ ├── ic_insert_link_white_24dp.png │ ├── ic_keyboard_arrow_down_white_24dp.png │ ├── ic_keyboard_arrow_up_white_24dp.png │ ├── ic_mail_white_24dp.png │ ├── ic_menu_white_24dp.png │ ├── ic_mode_comment_white_24dp.png │ ├── ic_mode_comment_white_outline_24dp.png │ ├── ic_more_vert_white_24dp.png │ ├── ic_open_in_browser_white_24dp.png │ ├── ic_open_in_new_white_24dp.png │ ├── ic_palette_white_24dp.png │ ├── ic_person_white_24dp.png │ ├── ic_photo_album_white_48dp.png │ ├── ic_play_circle_outline_white_48dp.png │ ├── ic_refresh_white_24dp.png │ ├── ic_reorder_white_24dp.png │ ├── ic_reply_white_24dp.png │ ├── ic_report_white_24dp.png │ ├── ic_save_white_24dp.png │ ├── ic_search_white_24dp.png │ ├── ic_send_white_24dp.png │ ├── ic_settings_white_24dp.png │ ├── ic_share_white_24dp.png │ ├── ic_sort_white_24dp.png │ ├── ic_text_format_white_24dp.png │ ├── ic_today_white_24dp.png │ ├── ic_unfold_more_white_24dp.png │ ├── ic_vertical_align_top_white_24dp.png │ ├── ic_view_list_white_24dp.png │ ├── ic_view_module_white_24dp.png │ ├── ic_visibility_off_white_24dp.png │ ├── ic_visibility_white_24dp.png │ ├── ic_warning_white_24dp.png │ └── ic_web_white_48dp.png │ ├── drawable-xxhdpi │ ├── ic_access_time_white_24dp.png │ ├── ic_add_white_24dp.png │ ├── ic_arrow_back_white_24dp.png │ ├── ic_arrow_drop_down_white_24dp.png │ ├── ic_arrow_drop_up_white_24dp.png │ ├── ic_build_white_24dp.png │ ├── ic_chat_white_48dp.png │ ├── ic_check_white_24dp.png │ ├── ic_clear_all_white_24dp.png │ ├── ic_content_copy_white_24dp.png │ ├── ic_delete_white_24dp.png │ ├── ic_edit_white_24dp.png │ ├── ic_email_white_24dp.png │ ├── ic_exit_to_app_white_24dp.png │ ├── ic_expand_less_white_24dp.png │ ├── ic_expand_more_white_24dp.png │ ├── ic_file_download_white_24dp.png │ ├── ic_format_bold_white_24dp.png │ ├── ic_format_italic_white_24dp.png │ ├── ic_format_list_bulleted_white_24dp.png │ ├── ic_format_list_numbered_white_24dp.png │ ├── ic_format_quote_white_24dp.png │ ├── ic_format_strikethrough_white_24dp.png │ ├── ic_help_outline_white_24dp.png │ ├── ic_history_white_24dp.png │ ├── ic_home_white_24dp.png │ ├── ic_inbox_white_24dp.png │ ├── ic_info_outline_white_24dp.png │ ├── ic_insert_link_white_24dp.png │ ├── ic_keyboard_arrow_down_white_24dp.png │ ├── ic_keyboard_arrow_up_white_24dp.png │ ├── ic_mail_white_24dp.png │ ├── ic_menu_white_24dp.png │ ├── ic_mode_comment_white_24dp.png │ ├── ic_mode_comment_white_outline_24dp.png │ ├── ic_more_vert_white_24dp.png │ ├── ic_open_in_browser_white_24dp.png │ ├── ic_open_in_new_white_24dp.png │ ├── ic_palette_white_24dp.png │ ├── ic_person_white_24dp.png │ ├── ic_photo_album_white_48dp.png │ ├── ic_play_circle_outline_white_48dp.png │ ├── ic_refresh_white_24dp.png │ ├── ic_reorder_white_24dp.png │ ├── ic_reply_white_24dp.png │ ├── ic_report_white_24dp.png │ ├── ic_save_white_24dp.png │ ├── ic_search_white_24dp.png │ ├── ic_send_white_24dp.png │ ├── ic_settings_white_24dp.png │ ├── ic_share_white_24dp.png │ ├── ic_sort_white_24dp.png │ ├── ic_text_format_white_24dp.png │ ├── ic_today_white_24dp.png │ ├── ic_unfold_more_white_24dp.png │ ├── ic_vertical_align_top_white_24dp.png │ ├── ic_view_list_white_24dp.png │ ├── ic_view_module_white_24dp.png │ ├── ic_visibility_off_white_24dp.png │ ├── ic_visibility_white_24dp.png │ ├── ic_warning_white_24dp.png │ └── ic_web_white_48dp.png │ ├── drawable-xxxhdpi │ ├── ic_expand_less_white_24dp.png │ ├── ic_expand_more_white_24dp.png │ └── ic_today_white_24dp.png │ ├── drawable │ ├── circular_shadow.xml │ ├── progress_circular.xml │ ├── progress_horizontal.xml │ ├── progress_indeterminate_circular.xml │ └── shape_circle.xml │ ├── layout │ ├── activity_login.xml │ ├── activity_main.xml │ ├── activity_settings.xml │ ├── cell_link.xml │ ├── dialog_date_range.xml │ ├── dialog_text_alert.xml │ ├── dialog_text_input.xml │ ├── fragment_comments.xml │ ├── fragment_comments_inner.xml │ ├── fragment_headers.xml │ ├── fragment_history.xml │ ├── fragment_inbox.xml │ ├── fragment_new_message.xml │ ├── fragment_new_post.xml │ ├── fragment_preferences.xml │ ├── fragment_profile.xml │ ├── fragment_reply.xml │ ├── fragment_search.xml │ ├── fragment_thread_list.xml │ ├── fragment_web.xml │ ├── header_link.xml │ ├── header_navigation.xml │ ├── header_subreddit.xml │ ├── reply.xml │ ├── row_account.xml │ ├── row_comment.xml │ ├── row_header.xml │ ├── row_link.xml │ ├── row_message.xml │ ├── row_page.xml │ ├── row_pref_header.xml │ ├── row_subreddit.xml │ ├── row_text.xml │ ├── toolbar.xml │ └── view_image.xml │ ├── menu │ ├── menu_activity_login.xml │ ├── menu_auth.xml │ ├── menu_comment.xml │ ├── menu_comments.xml │ ├── menu_editor_actions.xml │ ├── menu_history.xml │ ├── menu_inbox.xml │ ├── menu_link.xml │ ├── menu_message.xml │ ├── menu_navigation.xml │ ├── menu_new_message.xml │ ├── menu_new_post.xml │ ├── menu_profile.xml │ ├── menu_reply.xml │ ├── menu_search.xml │ ├── menu_thread_list.xml │ ├── menu_web.xml │ └── menu_web_search.xml │ ├── mipmap-hdpi │ ├── app_icon.png │ ├── app_icon_dark_outline.png │ └── app_icon_white_outline.png │ ├── mipmap-xhdpi │ ├── app_icon.png │ ├── app_icon_dark_outline.png │ └── app_icon_white_outline.png │ ├── mipmap-xxhdpi │ ├── app_icon.png │ ├── app_icon_dark_outline.png │ └── app_icon_white_outline.png │ ├── values-v19 │ └── styles.xml │ ├── values-w820dp │ └── dimens.xml │ ├── values │ ├── attrs.xml │ ├── colors.xml │ ├── dimens.xml │ ├── ids.xml │ ├── strings.xml │ ├── strings_settings.xml │ ├── styles.xml │ ├── theme_color_accent.xml │ ├── theme_color_primary.xml │ └── theme_color_primary_darl.xml │ └── xml │ ├── authenticator.xml │ ├── prefs_about.xml │ ├── prefs_behavior.xml │ ├── prefs_display.xml │ └── prefs_mail.xml ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | /app/src/main/java/com/winsonchiu/reader/ApiKeys.java 2 | /build 3 | app/build 4 | app/libs 5 | app/src/androidTest 6 | volley 7 | app/src/main/java/com/winsonchiu/reader/ApiKeys.java 8 | app/src/main/res/values/strings_ignore.xml 9 | app/crashlytics.properties 10 | 11 | # built application files 12 | *.apk 13 | *.ap_ 14 | 15 | # files for the dex VM 16 | *.dex 17 | 18 | # Java class files 19 | *.class 20 | 21 | # built native files (uncomment if you build your own) 22 | # *.o 23 | # *.so 24 | 25 | # generated files 26 | bin/ 27 | gen/ 28 | 29 | # Ignore gradle files 30 | .gradle/ 31 | build/ 32 | 33 | # Local configuration file (sdk path, etc) 34 | local.properties 35 | 36 | # Proguard folder generated by Eclipse 37 | proguard/ 38 | 39 | # Eclipse Metadata 40 | .metadata/ 41 | 42 | # Mac OS X clutter 43 | *.DS_Store 44 | 45 | # Windows clutter 46 | Thumbs.db 47 | 48 | # Intellij IDEA (see https://intellij-support.jetbrains.com/entries/23393067) 49 | .idea/workspace.xml 50 | .idea/tasks.xml 51 | .idea/datasources.xml 52 | .idea/dataSources.ids 53 | /.idea/shelf/ 54 | /.idea/libraries/ 55 | -------------------------------------------------------------------------------- /.idea/.name: -------------------------------------------------------------------------------- 1 | Reader -------------------------------------------------------------------------------- /.idea/codeInsightSettings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.winsonchiu.reader.R 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /.idea/copyright/Default.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.idea/dictionaries/TheKeeperOfPie.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | reddit 5 | subreddit 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 19 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/Project_Default.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 15 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /.idea/libraries/YouTubeAndroidPlayerApi.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/adapter_rxjava_2_0_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/commons_cli_1_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/glide_3_7_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/jackson_annotations_2_7_4.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/jackson_core_2_7_4.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/jackson_databind_2_7_4.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/javax_inject_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/jsr250_api_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/jsr305_2_0_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/leakcanary_android_no_op_1_4_beta2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/libraries/logging_interceptor_3_2_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/okhttp3_integration_1_4_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/libraries/okhttp_3_2_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/okio_1_6_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/picasso2_okhttp3_downloader_1_0_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/picasso_2_5_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/retrofit_2_0_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/rxrelay_1_1_1_SNAPSHOT.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/stetho_1_3_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/stetho_okhttp3_1_3_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/takt_1_0_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/libraries/txtmark_0_13.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Assets/AppIcon/app_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/Assets/AppIcon/app_icon.png -------------------------------------------------------------------------------- /Assets/Comment Thread.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/Assets/Comment Thread.psd -------------------------------------------------------------------------------- /Assets/Expanded Item.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/Assets/Expanded Item.psd -------------------------------------------------------------------------------- /Assets/Nav Drawer.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/Assets/Nav Drawer.psd -------------------------------------------------------------------------------- /Assets/Screenshots/Comment Thread.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/Assets/Screenshots/Comment Thread.png -------------------------------------------------------------------------------- /Assets/Screenshots/Expanded Item.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/Assets/Screenshots/Expanded Item.png -------------------------------------------------------------------------------- /Assets/Screenshots/Nav Drawer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/Assets/Screenshots/Nav Drawer.png -------------------------------------------------------------------------------- /Assets/Screenshots/Thread List.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/Assets/Screenshots/Thread List.png -------------------------------------------------------------------------------- /Assets/Screenshots/comments.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/Assets/Screenshots/comments.png -------------------------------------------------------------------------------- /Assets/Screenshots/grid_view_aww.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/Assets/Screenshots/grid_view_aww.png -------------------------------------------------------------------------------- /Assets/Screenshots/grid_view_world_news.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/Assets/Screenshots/grid_view_world_news.png -------------------------------------------------------------------------------- /Assets/Screenshots/inbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/Assets/Screenshots/inbox.png -------------------------------------------------------------------------------- /Assets/Screenshots/overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/Assets/Screenshots/overview.png -------------------------------------------------------------------------------- /Assets/Screenshots/subreddit_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/Assets/Screenshots/subreddit_search.png -------------------------------------------------------------------------------- /Assets/Screenshots/thread_list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/Assets/Screenshots/thread_list.png -------------------------------------------------------------------------------- /Assets/Thread List.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/Assets/Thread List.psd -------------------------------------------------------------------------------- /Reader.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /src/main/java/com/winsonchiu/reader/ApiKeys.java 2 | /build 3 | 4 | src/main/java/com/winsonchiu/reader/ApiKeys.java 5 | src/main/res/values/strings_ignore.xml 6 | crashlytics.properties -------------------------------------------------------------------------------- /app/app-release.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/app-release.apk -------------------------------------------------------------------------------- /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 X:\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/main/java/com/winsonchiu/reader/ActivityMainRoot.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader; 6 | 7 | import android.content.ComponentName; 8 | import android.content.Intent; 9 | import android.os.Bundle; 10 | import android.preference.PreferenceManager; 11 | 12 | /** 13 | * Created by TheKeeperOfPie on 12/25/2015. 14 | */ 15 | public class ActivityMainRoot extends ActivityMain { 16 | 17 | @Override 18 | protected void onCreate(Bundle savedInstanceState) { 19 | sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); 20 | 21 | if (!isTaskRoot()) { 22 | superOnCreate(savedInstanceState); 23 | 24 | Intent intent = getIntent(); 25 | intent.setComponent(new ComponentName(getPackageName(), ActivityMain.class.getCanonicalName())); 26 | startActivity(intent); 27 | finish(); 28 | return; 29 | } 30 | 31 | super.onCreate(savedInstanceState); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/DefaultingEnum.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader; 6 | 7 | /** 8 | * Created by TheKeeperOfPie on 8/14/2016. 9 | */ 10 | 11 | public class DefaultingEnum { 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/FragmentListenerBase.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader; 6 | 7 | import com.winsonchiu.reader.comments.AdapterCommentList; 8 | import com.winsonchiu.reader.data.reddit.Reddit; 9 | import com.winsonchiu.reader.utils.EventListenerBase; 10 | 11 | /** 12 | * Created by TheKeeperOfPie on 6/10/2015. 13 | */ 14 | public interface FragmentListenerBase { 15 | void onNavigationBackClick(); 16 | void openDrawer(); 17 | Reddit getReddit(); 18 | EventListenerBase getEventListenerBase(); 19 | AdapterCommentList.ViewHolderComment.EventListener getEventListener(); 20 | @AppSettings.ThemeBackground String getThemeBackground(); 21 | @AppSettings.ThemeColor String getThemePrimary(); 22 | @AppSettings.ThemeColor String getThemePrimaryDark(); 23 | @AppSettings.ThemeColor String getThemeAccent(); 24 | } -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/ReplyModel.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader; 6 | 7 | /** 8 | * Created by TheKeeperOfPie on 6/5/2016. 9 | */ 10 | public class ReplyModel { 11 | 12 | private String nameParent; 13 | private String text; 14 | private boolean collapsed; 15 | 16 | public ReplyModel(String nameParent, String text, boolean collapsed) { 17 | this.nameParent = nameParent; 18 | this.text = text; 19 | this.collapsed = collapsed; 20 | } 21 | 22 | public String getNameParent() { 23 | return nameParent; 24 | } 25 | 26 | public String getText() { 27 | return text; 28 | } 29 | 30 | public boolean isCollapsed() { 31 | return collapsed; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/adapter/AdapterBase.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.adapter; 6 | 7 | import android.support.annotation.CallSuper; 8 | import android.support.annotation.Nullable; 9 | import android.support.v7.widget.RecyclerView; 10 | 11 | /** 12 | * Created by TheKeeperOfPie on 4/3/2016. 13 | */ 14 | public abstract class AdapterBase extends RecyclerView.Adapter { 15 | 16 | protected RecyclerView recyclerView; 17 | protected AdapterCallback adapterCallback = new AdapterCallback() { 18 | @Nullable 19 | @Override 20 | public RecyclerView getRecyclerView() { 21 | return recyclerView; 22 | } 23 | }; 24 | 25 | protected int loadMoreThreshold = 5; 26 | @Nullable protected AdapterLoadMoreListener loadMoreListener; 27 | 28 | @Override 29 | @CallSuper 30 | public void onBindViewHolder(ViewHolderType holder, int position) { 31 | if (position > getItemCount() - loadMoreThreshold && loadMoreListener != null) { 32 | loadMoreListener.requestMore(); 33 | } 34 | } 35 | 36 | @Override 37 | public void onAttachedToRecyclerView(RecyclerView recyclerView) { 38 | super.onAttachedToRecyclerView(recyclerView); 39 | this.recyclerView = recyclerView; 40 | } 41 | 42 | public void setAdapterLoadMoreListener(@Nullable AdapterLoadMoreListener loadMoreListener) { 43 | this.loadMoreListener = loadMoreListener; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/adapter/AdapterCallback.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.adapter; 6 | 7 | import android.support.v7.widget.RecyclerView; 8 | 9 | /** 10 | * Created by TheKeeperOfPie on 4/3/2016. 11 | */ 12 | public interface AdapterCallback { 13 | RecyclerView getRecyclerView(); 14 | } 15 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/adapter/AdapterDataListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.adapter; 6 | 7 | /** 8 | * Created by TheKeeperOfPie on 4/16/2016. 9 | */ 10 | public interface AdapterDataListener { 11 | void setData(Data data); 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/adapter/AdapterListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.adapter; 6 | 7 | import com.winsonchiu.reader.utils.DisallowListener; 8 | 9 | /** 10 | * Created by TheKeeperOfPie on 4/16/2016. 11 | */ 12 | public interface AdapterListener extends AdapterLoadMoreListener, DisallowListener { 13 | void scrollAndCenter(int position, int height); 14 | void hideToolbar(); 15 | void clearDecoration(); 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/adapter/AdapterLoadMoreListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.adapter; 6 | 7 | /** 8 | * Created by TheKeeperOfPie on 4/16/2016. 9 | */ 10 | public interface AdapterLoadMoreListener { 11 | void requestMore(); 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/auth/ServiceAuthenticator.java: -------------------------------------------------------------------------------- 1 | package com.winsonchiu.reader.auth; 2 | 3 | import android.app.Service; 4 | import android.content.Intent; 5 | import android.os.IBinder; 6 | import android.util.Log; 7 | 8 | public class ServiceAuthenticator extends Service { 9 | 10 | private static final String TAG = ServiceAuthenticator.class.getCanonicalName(); 11 | 12 | public ServiceAuthenticator() { 13 | } 14 | 15 | @Override 16 | public IBinder onBind(Intent intent) { 17 | Log.d(TAG, "onBind() called with: " + "intent = [" + intent + "]"); 18 | Authenticator authenticator = new Authenticator(this); 19 | return authenticator.getIBinder(); 20 | } 21 | 22 | @Override 23 | public boolean onUnbind(Intent intent) { 24 | Log.d(TAG, "onUnbind() called with: " + "intent = [" + intent + "]"); 25 | return super.onUnbind(intent); 26 | } 27 | 28 | @Override 29 | public int onStartCommand(Intent intent, int flags, int startId) { 30 | Log.d(TAG, "onStartCommand() called with: " + "intent = [" + intent + "], flags = [" + flags + "], startId = [" + startId + "]"); 31 | return super.onStartCommand(intent, flags, startId); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/comments/CommentsError.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.comments; 6 | 7 | /** 8 | * Created by TheKeeperOfPie on 5/1/2016. 9 | */ 10 | public enum CommentsError { 11 | 12 | REPORT, 13 | SAVE, 14 | UNSAVE, 15 | VOTE, 16 | DELETE, 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/comments/CommentsModel.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.comments; 6 | 7 | import android.support.annotation.Nullable; 8 | 9 | import com.winsonchiu.reader.data.reddit.Comment; 10 | import com.winsonchiu.reader.data.reddit.Link; 11 | import com.winsonchiu.reader.data.reddit.User; 12 | 13 | import java.util.ArrayList; 14 | import java.util.List; 15 | 16 | /** 17 | * Created by TheKeeperOfPie on 5/15/2016. 18 | */ 19 | public class CommentsModel { 20 | 21 | private Link link = new Link(); 22 | private List comments = new ArrayList<>(); 23 | private boolean showSubreddit; 24 | private User user; 25 | 26 | public CommentsModel() { 27 | 28 | } 29 | 30 | public CommentsModel(Link link, List comments, boolean showSubreddit, User user) { 31 | this.link = link; 32 | this.comments = comments; 33 | this.showSubreddit = showSubreddit; 34 | this.user = user; 35 | } 36 | 37 | public Link getLink() { 38 | return link; 39 | } 40 | 41 | public List getComments() { 42 | return comments; 43 | } 44 | 45 | @Nullable 46 | public User getUser() { 47 | return user; 48 | } 49 | 50 | public boolean isShowSubreddit() { 51 | return showSubreddit; 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/comments/CommentsTopModel.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.comments; 6 | 7 | import com.winsonchiu.reader.links.LinkModel; 8 | 9 | /** 10 | * Created by TheKeeperOfPie on 5/15/2016. 11 | * TODO: Think of a better name 12 | */ 13 | public class CommentsTopModel { 14 | 15 | private LinkModel linkModel = new LinkModel(); 16 | private Source source = Source.NONE; 17 | 18 | public CommentsTopModel() { 19 | 20 | } 21 | 22 | public CommentsTopModel(CommentsTopModel other) { 23 | this.linkModel = other.linkModel; 24 | this.source = other.source; 25 | } 26 | 27 | public LinkModel getLinkModel() { 28 | return linkModel; 29 | } 30 | 31 | public void setLinkModel(LinkModel linkModel) { 32 | this.linkModel = linkModel; 33 | } 34 | 35 | public Source getSource() { 36 | return source; 37 | } 38 | 39 | public void setSource(Source source) { 40 | this.source = source; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/comments/Source.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.comments; 6 | 7 | /** 8 | * Created by TheKeeperOfPie on 1/10/2016. 9 | */ 10 | public enum Source { 11 | // TODO: This is probably not the best way to handle multiple comment sources. 12 | NONE, 13 | LINKS, 14 | SEARCH_LINKS, 15 | SEARCH_LINKS_SUBREDDIT, 16 | PROFILE, 17 | HISTORY 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/dagger/ScopeActivity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.dagger; 6 | 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | 10 | import javax.inject.Scope; 11 | 12 | /** 13 | * Created by TheKeeperOfPie on 12/13/2015. 14 | */ 15 | @Scope 16 | @Retention(RetentionPolicy.RUNTIME) 17 | public @interface ScopeActivity { 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/dagger/components/ComponentData.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.dagger.components; 6 | 7 | import com.winsonchiu.reader.dagger.modules.ModuleData; 8 | 9 | import javax.inject.Singleton; 10 | 11 | import dagger.Component; 12 | 13 | /** 14 | * Created by TheKeeperOfPie on 12/12/2015. 15 | */ 16 | @Singleton 17 | @Component( 18 | modules = { 19 | ModuleData.class 20 | } 21 | ) 22 | public interface ComponentData { 23 | void inject(ComponentStatic component); 24 | } -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/dagger/components/ComponentStatic.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.dagger.components; 6 | 7 | import com.fasterxml.jackson.core.JsonFactory; 8 | import com.fasterxml.jackson.databind.ObjectMapper; 9 | 10 | import javax.inject.Inject; 11 | 12 | /** 13 | * Created by TheKeeperOfPie on 12/12/2015. 14 | */ 15 | public class ComponentStatic { 16 | 17 | public static final ComponentData componentData; 18 | public static ComponentStatic component; 19 | 20 | static { 21 | componentData = DaggerComponentData.builder().build(); 22 | component = new ComponentStatic(); 23 | componentData.inject(component); 24 | } 25 | 26 | @Inject 27 | ObjectMapper objectMapper; 28 | 29 | @Inject 30 | JsonFactory jsonFactory; 31 | 32 | public ComponentStatic() { 33 | componentData.inject(this); 34 | } 35 | 36 | public static ComponentData getComponentData() { 37 | return componentData; 38 | } 39 | 40 | public static ObjectMapper getObjectMapper() { 41 | return component.objectMapper; 42 | } 43 | 44 | public static JsonFactory getJsonFactory() { 45 | return component.jsonFactory; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/dagger/modules/ModuleApi.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.dagger.modules; 6 | 7 | import android.content.Context; 8 | 9 | import com.winsonchiu.reader.data.reddit.Reddit; 10 | 11 | import javax.inject.Singleton; 12 | 13 | import dagger.Module; 14 | import dagger.Provides; 15 | import okhttp3.OkHttpClient; 16 | 17 | /** 18 | * Created by TheKeeperOfPie on 12/12/2015. 19 | */ 20 | @Module 21 | public class ModuleApi { 22 | 23 | @Singleton 24 | @Provides 25 | public Reddit provideReddit(Context context) { 26 | return new Reddit(context); 27 | } 28 | 29 | @Singleton 30 | @Provides 31 | public OkHttpClient provideOkHttpClient() { 32 | return new OkHttpClient.Builder() 33 | .build(); 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/dagger/modules/ModuleData.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.dagger.modules; 6 | 7 | import com.fasterxml.jackson.annotation.JsonInclude; 8 | import com.fasterxml.jackson.core.JsonFactory; 9 | import com.fasterxml.jackson.databind.DeserializationFeature; 10 | import com.fasterxml.jackson.databind.ObjectMapper; 11 | 12 | import javax.inject.Singleton; 13 | 14 | import dagger.Module; 15 | import dagger.Provides; 16 | 17 | /** 18 | * Created by TheKeeperOfPie on 12/12/2015. 19 | */ 20 | @Module 21 | public class ModuleData { 22 | 23 | @Singleton 24 | @Provides 25 | public ObjectMapper provideObjectMapper() { 26 | ObjectMapper objectMapper = new ObjectMapper(); 27 | objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); 28 | objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); 29 | objectMapper.configure(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL, true); 30 | return objectMapper; 31 | } 32 | 33 | @Singleton 34 | @Provides 35 | public JsonFactory provideJsonFactory() { 36 | return new JsonFactory(); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/dagger/modules/ModuleHistory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.dagger.modules; 6 | 7 | import android.content.Context; 8 | 9 | import com.winsonchiu.reader.history.Historian; 10 | 11 | import javax.inject.Singleton; 12 | 13 | import dagger.Module; 14 | import dagger.Provides; 15 | 16 | /** 17 | * Created by TheKeeperOfPie on 12/12/2015. 18 | */ 19 | @Module 20 | public class ModuleHistory { 21 | 22 | @Singleton 23 | @Provides 24 | public Historian provideHistorian(Context context) { 25 | return new Historian(context); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/data/Api.java: -------------------------------------------------------------------------------- 1 | package com.winsonchiu.reader.data; 2 | 3 | import com.winsonchiu.reader.data.api.ApiUtility; 4 | import com.winsonchiu.reader.data.retrofit.ConverterFactory; 5 | 6 | import retrofit2.Retrofit; 7 | import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory; 8 | 9 | /** 10 | * Created by TheKeeperOfPie on 12/6/2015. 11 | */ 12 | public class Api { 13 | 14 | private static Api api; 15 | 16 | private ApiUtility apiUtility; 17 | 18 | public static Api getInstance() { 19 | if (api == null) { 20 | api = new Api(); 21 | } 22 | 23 | return api; 24 | } 25 | 26 | private Api() { 27 | apiUtility = new Retrofit.Builder() 28 | .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) 29 | .addConverterFactory(new ConverterFactory()) 30 | .build() 31 | .create(ApiUtility.class); 32 | } 33 | 34 | public ApiUtility getApiUtility() { 35 | return apiUtility; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/data/Page.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.data; 6 | 7 | /** 8 | * Created by TheKeeperOfPie on 7/26/2015. 9 | */ 10 | public class Page { 11 | 12 | private String page; 13 | private String text; 14 | 15 | public Page(String page, String text) { 16 | this.page = page; 17 | this.text = text; 18 | } 19 | 20 | public String getPage() { 21 | return page; 22 | } 23 | 24 | public String getText() { 25 | return text; 26 | } 27 | 28 | @Override 29 | public boolean equals(Object o) { 30 | if (this == o) { 31 | return true; 32 | } 33 | if (o == null || getClass() != o.getClass()) { 34 | return false; 35 | } 36 | 37 | Page page1 = (Page) o; 38 | 39 | return !(getPage() != null ? !getPage().equals(page1.getPage()) : page1.getPage() != null); 40 | 41 | } 42 | 43 | @Override 44 | public int hashCode() { 45 | return getPage() != null ? getPage().hashCode() : 0; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/data/api/ApiRedditDefault.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.data.api; 6 | 7 | import com.winsonchiu.reader.data.reddit.Reddit; 8 | 9 | import okhttp3.ResponseBody; 10 | import retrofit2.Call; 11 | import retrofit2.http.POST; 12 | import retrofit2.http.Query; 13 | import rx.Observable; 14 | 15 | /** 16 | * Created by TheKeeperOfPie on 11/28/2015. 17 | */ 18 | public interface ApiRedditDefault { 19 | 20 | @POST("/api/v1/access_token") 21 | Call token(@Query(Reddit.QUERY_GRANT_TYPE) String grant, 22 | @Query(Reddit.QUERY_DEVICE_ID) String id); 23 | 24 | @POST("/api/v1/revoke_token") 25 | Observable tokenRevoke(@Query("token_type_hint") String tokenType, 26 | @Query("token") String token); 27 | 28 | } 29 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/data/api/ApiUtility.java: -------------------------------------------------------------------------------- 1 | package com.winsonchiu.reader.data.api; 2 | 3 | import com.winsonchiu.reader.data.reddit.Reddit; 4 | 5 | import retrofit2.http.GET; 6 | import retrofit2.http.Path; 7 | import rx.Observable; 8 | 9 | /** 10 | * Created by TheKeeperOfPie on 12/6/2015. 11 | */ 12 | public interface ApiUtility { 13 | 14 | @GET(Reddit.GFYCAT_URL + "{id}") 15 | Observable gfycat(@Path("id") String id); 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/data/database/TransactionInsertOrReplace.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.data.database; 6 | 7 | import android.database.sqlite.SQLiteDatabase; 8 | import android.database.sqlite.SQLiteStatement; 9 | 10 | /** 11 | * Created by TheKeeperOfPie on 2/15/2016. 12 | */ 13 | public abstract class TransactionInsertOrReplace { 14 | 15 | private static final String TAG = TransactionInsertOrReplace.class.getCanonicalName(); 16 | private SQLiteDatabase sqLiteDatabase; 17 | private SQLiteStatement statement; 18 | 19 | public TransactionInsertOrReplace(SQLiteDatabase sqLiteDatabase) { 20 | this.sqLiteDatabase = sqLiteDatabase; 21 | statement = sqLiteDatabase.compileStatement(createInsertOrReplaceStatement()); 22 | } 23 | 24 | public abstract String createInsertOrReplaceStatement(); 25 | 26 | public void insertOrReplace(String id, long accessed, long created, String... values) { 27 | statement.clearBindings(); 28 | 29 | statement.bindString(1, id); 30 | statement.bindLong(2, accessed); 31 | statement.bindLong(3, created); 32 | 33 | for (int index = 0; index < values.length; index++) { 34 | if (values[index] != null) { 35 | statement.bindString(index + 4, values[index]); 36 | } 37 | } 38 | 39 | statement.execute(); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/data/database/reddit/RedditOpenHelper.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.data.database.reddit; 6 | 7 | import android.content.Context; 8 | import android.database.sqlite.SQLiteDatabase; 9 | import android.database.sqlite.SQLiteOpenHelper; 10 | 11 | import com.winsonchiu.reader.data.database.Table; 12 | 13 | /** 14 | * Created by TheKeeperOfPie on 1/30/2016. 15 | */ 16 | public class RedditOpenHelper extends SQLiteOpenHelper { 17 | 18 | public static final int VERSION = 1; 19 | public static final String NAME = "Reader.db"; 20 | 21 | private final Table[] tables; 22 | 23 | public RedditOpenHelper(Context context, Table[] tables) { 24 | super(context, NAME, null, VERSION); 25 | this.tables = tables; 26 | } 27 | 28 | @Override 29 | public void onCreate(SQLiteDatabase db) { 30 | for (Table table : tables) { 31 | table.setDatabase(db); 32 | table.onCreate(); 33 | } 34 | } 35 | 36 | @Override 37 | public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 38 | for (Table table : tables) { 39 | table.setDatabase(db); 40 | table.onUpgrade(oldVersion, newVersion); 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/data/database/reddit/TableSubreddit.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.data.database.reddit; 6 | 7 | import com.winsonchiu.reader.data.database.Table; 8 | import com.winsonchiu.reader.data.reddit.Subreddit; 9 | 10 | /** 11 | * Created by TheKeeperOfPie on 1/30/2016. 12 | */ 13 | public final class TableSubreddit extends Table { 14 | public static final String NAME = "subreddit"; 15 | public static final String COLUMN_JSON = "json"; 16 | public static final String COLUMN_NAME = "name"; 17 | 18 | public static final String[] COLUMNS = new String[] { 19 | COLUMN_JSON, 20 | COLUMN_NAME 21 | }; 22 | 23 | public TableSubreddit() { 24 | 25 | } 26 | 27 | @Override 28 | public String getName() { 29 | return NAME; 30 | } 31 | 32 | @Override 33 | public String[] getColumns() { 34 | return COLUMNS; 35 | } 36 | 37 | @Override 38 | public void onUpgrade(int versionPrevious, int versionCurrent) { 39 | 40 | } 41 | 42 | @Override 43 | public void insertOrUpdate(Subreddit subreddit) { 44 | 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/data/reddit/Likes.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.data.reddit; 6 | 7 | import com.fasterxml.jackson.annotation.JsonProperty; 8 | 9 | /** 10 | * Created by TheKeeperOfPie on 8/14/2016. 11 | */ 12 | 13 | public enum Likes { 14 | 15 | @JsonProperty("null") 16 | NONE(0), 17 | 18 | @JsonProperty("true") 19 | UPVOTE(1), 20 | 21 | @JsonProperty("false") 22 | DOWNVOTE(-1); 23 | 24 | private final int scoreValue; 25 | 26 | Likes(int scoreValue) { 27 | this.scoreValue = scoreValue; 28 | } 29 | 30 | public int getScoreValue() { 31 | return scoreValue; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/data/reddit/RedditLegacyEditedDeserializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.data.reddit; 6 | 7 | import com.fasterxml.jackson.core.JsonParser; 8 | import com.fasterxml.jackson.databind.DeserializationContext; 9 | import com.fasterxml.jackson.databind.JsonDeserializer; 10 | 11 | import java.io.IOException; 12 | 13 | /** 14 | * Created by TheKeeperOfPie on 8/14/2016. 15 | */ 16 | public class RedditLegacyEditedDeserializer extends JsonDeserializer { 17 | 18 | @Override 19 | public Long deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { 20 | switch (p.getText()) { 21 | case "true": 22 | return 1L; 23 | case "false": 24 | return 0L; 25 | default: 26 | return p.getLongValue(); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/data/reddit/RedditLegacyEditedSerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.data.reddit; 6 | 7 | import com.fasterxml.jackson.core.JsonGenerator; 8 | import com.fasterxml.jackson.core.JsonProcessingException; 9 | import com.fasterxml.jackson.databind.JsonSerializer; 10 | import com.fasterxml.jackson.databind.SerializerProvider; 11 | 12 | import java.io.IOException; 13 | 14 | /** 15 | * Created by TheKeeperOfPie on 8/14/2016. 16 | */ 17 | public class RedditLegacyEditedSerializer extends JsonSerializer { 18 | 19 | @Override 20 | public void serialize(Long value, JsonGenerator gen, SerializerProvider serializers) throws IOException, JsonProcessingException { 21 | if (value.equals(0L)) { 22 | gen.writeString("false"); 23 | } else if (value.equals(1L)){ 24 | gen.writeString("true"); 25 | } else { 26 | gen.writeString(String.valueOf(value)); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/data/reddit/RedditTimestampDeserializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.data.reddit; 6 | 7 | import com.fasterxml.jackson.core.JsonParser; 8 | import com.fasterxml.jackson.databind.DeserializationContext; 9 | import com.fasterxml.jackson.databind.JsonDeserializer; 10 | 11 | import java.io.IOException; 12 | 13 | /** 14 | * Created by TheKeeperOfPie on 8/14/2016. 15 | */ 16 | public class RedditTimestampDeserializer extends JsonDeserializer { 17 | 18 | @Override 19 | public Long deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { 20 | return p.getLongValue() * 1000; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/data/reddit/RedditTimestampSerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.data.reddit; 6 | 7 | import com.fasterxml.jackson.core.JsonGenerator; 8 | import com.fasterxml.jackson.databind.JsonSerializer; 9 | import com.fasterxml.jackson.databind.SerializerProvider; 10 | 11 | import java.io.IOException; 12 | 13 | /** 14 | * Created by TheKeeperOfPie on 8/14/2016. 15 | */ 16 | public class RedditTimestampSerializer extends JsonSerializer { 17 | 18 | @Override 19 | public void serialize(Long value, JsonGenerator gen, SerializerProvider serializers) throws IOException { 20 | gen.writeNumber(value / 1000); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/data/reddit/Replyable.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.data.reddit; 6 | 7 | /** 8 | * Created by TheKeeperOfPie on 7/24/2015. 9 | */ 10 | public abstract class Replyable extends Thing { 11 | 12 | private boolean replyExpanded; 13 | private CharSequence replyText; 14 | 15 | public boolean isReplyExpanded() { 16 | return replyExpanded; 17 | } 18 | 19 | public void setReplyExpanded(boolean replyExpanded) { 20 | this.replyExpanded = replyExpanded; 21 | } 22 | 23 | public CharSequence getReplyText() { 24 | return replyText; 25 | } 26 | 27 | public void setReplyText(CharSequence replyText) { 28 | this.replyText = replyText; 29 | } 30 | 31 | public abstract CharSequence getParentHtml(); 32 | 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/data/reddit/Report.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.data.reddit; 6 | 7 | import android.content.res.Resources; 8 | 9 | import com.winsonchiu.reader.R; 10 | 11 | /** 12 | * Created by TheKeeperOfPie on 4/23/2016. 13 | */ 14 | public enum Report { 15 | 16 | SPAM("spam", R.string.report_reason_spam), 17 | VOTE_MANIPULATION("vote manipulation", R.string.report_reason_vote_manipulation), 18 | PERSONAL_INFORMATION("personal information", R.string.report_reason_personal_information), 19 | SEXUALIZING_MINORS("sexualizing minors", R.string.report_reason_sexualizing_minors), 20 | BREAKING_REDDIT("breaking reddit", R.string.report_reason_breaking_reddit), 21 | OTHER("other", R.string.report_reason_other); 22 | 23 | private final String reason; 24 | private final int resourceId; 25 | 26 | Report(String reason, int resourceId) { 27 | this.reason = reason; 28 | this.resourceId = resourceId; 29 | } 30 | 31 | public String getReason() { 32 | return reason; 33 | } 34 | 35 | public int getResourceId() { 36 | return resourceId; 37 | } 38 | 39 | public static String[] getDisplayReasons(Resources resources) { 40 | Report[] reports = values(); 41 | String[] reasons = new String[reports.length]; 42 | 43 | for (int index = 0; index < reports.length; index++) { 44 | reasons[index] = resources.getString(reports[index].getResourceId()); 45 | } 46 | 47 | return reasons; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/data/reddit/Saveable.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.data.reddit; 6 | 7 | /** 8 | * Created by TheKeeperOfPie on 5/15/2016. 9 | */ 10 | public interface Saveable { 11 | 12 | String getName(); 13 | boolean isSaved(); 14 | void setSaved(boolean saved); 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/data/reddit/Submission.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.data.reddit; 6 | 7 | /** 8 | * Created by TheKeeperOfPie on 5/15/2016. 9 | */ 10 | public interface Submission { 11 | 12 | String getName(); 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/data/reddit/ThingError.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.data.reddit; 6 | 7 | /** 8 | * Created by TheKeeperOfPie on 5/15/2016. 9 | */ 10 | public enum ThingError { 11 | 12 | VOTE, 13 | SAVE, 14 | UNSAVE 15 | 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/data/reddit/Time.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.data.reddit; 6 | 7 | import com.winsonchiu.reader.R; 8 | 9 | /** 10 | * Created by TheKeeperOfPie on 6/5/2015. 11 | */ 12 | public enum Time { 13 | 14 | HOUR(R.id.item_sort_hour), 15 | DAY(R.id.item_sort_day), 16 | WEEK(R.id.item_sort_week), 17 | MONTH(R.id.item_sort_month), 18 | YEAR(R.id.item_sort_year), 19 | ALL(R.id.item_sort_all); 20 | 21 | private final int menuId; 22 | 23 | Time(int menuId) { 24 | this.menuId = menuId; 25 | } 26 | 27 | public int getMenuId() { 28 | return menuId; 29 | } 30 | 31 | public static Time fromMenuId(int id) { 32 | for (Time time : values()) { 33 | if (time.getMenuId() == id) { 34 | return time; 35 | } 36 | } 37 | 38 | return null; 39 | } 40 | 41 | // String returned is lowercase for use in URL and formatting 42 | @Override 43 | public String toString() { 44 | return super.toString().toLowerCase(); 45 | } 46 | 47 | public static Time fromString(String string) { 48 | for (Time time : values()) { 49 | if (time.name().equalsIgnoreCase(string)) { 50 | return time; 51 | } 52 | } 53 | 54 | return ALL; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/data/reddit/Votable.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.data.reddit; 6 | 7 | /** 8 | * Created by TheKeeperOfPie on 5/15/2016. 9 | */ 10 | public interface Votable { 11 | 12 | String getName(); 13 | Likes getLikes(); 14 | void setLikes(Likes likes); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/glide/GlideConfiguration.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.glide; 6 | 7 | import android.content.Context; 8 | 9 | import com.bumptech.glide.Glide; 10 | import com.bumptech.glide.GlideBuilder; 11 | import com.bumptech.glide.load.engine.cache.InternalCacheDiskCacheFactory; 12 | import com.bumptech.glide.module.GlideModule; 13 | 14 | /** 15 | * Created by TheKeeperOfPie on 3/13/2016. 16 | */ 17 | public class GlideConfiguration implements GlideModule { 18 | 19 | public static final int IMAGE_CACHE_SIZE = 1024 * 1024 * 1024; 20 | 21 | @Override 22 | public void applyOptions(Context context, GlideBuilder builder) { 23 | builder.setDiskCache(new InternalCacheDiskCacheFactory(context, IMAGE_CACHE_SIZE)); 24 | } 25 | 26 | @Override 27 | public void registerComponents(Context context, Glide glide) { 28 | 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/glide/RequestListenerCompletion.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.glide; 6 | 7 | import android.support.annotation.CallSuper; 8 | 9 | import com.bumptech.glide.request.RequestListener; 10 | import com.bumptech.glide.request.target.Target; 11 | 12 | /** 13 | * Created by TheKeeperOfPie on 3/13/2016. 14 | */ 15 | public abstract class RequestListenerCompletion implements RequestListener { 16 | 17 | @Override 18 | @CallSuper 19 | public boolean onException(Exception e, Model model, Target target, boolean isFirstResource) { 20 | onCompleted(); 21 | return false; 22 | } 23 | 24 | @Override 25 | @CallSuper 26 | public boolean onResourceReady(Resource resource, Model model, Target target, boolean isFromMemoryCache, boolean isFirstResource) { 27 | onCompleted(); 28 | return false; 29 | } 30 | 31 | protected abstract void onCompleted(); 32 | } 33 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/links/ControllerLinksBase.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.links; 6 | 7 | import com.winsonchiu.reader.data.reddit.Link; 8 | import com.winsonchiu.reader.data.reddit.Listing; 9 | import com.winsonchiu.reader.data.reddit.Subreddit; 10 | 11 | import rx.Observable; 12 | 13 | /** 14 | * Created by TheKeeperOfPie on 3/21/2015. 15 | */ 16 | public interface ControllerLinksBase { 17 | 18 | // TODO: Include default implementations 19 | 20 | Link getLink(int position); 21 | int sizeLinks(); 22 | boolean isLoading(); 23 | Observable loadMoreLinks(); 24 | Subreddit getSubreddit(); 25 | boolean showSubreddit(); 26 | boolean setReplyText(String name, String text, boolean collapsed); 27 | void setNsfw(String name, boolean over18); 28 | } -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/links/LinksError.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.links; 6 | 7 | /** 8 | * Created by TheKeeperOfPie on 5/1/2016. 9 | */ 10 | public enum LinksError { 11 | 12 | LOAD, 13 | REPORT, 14 | SAVE, 15 | UNSAVE, 16 | MARK_NSFW, 17 | VOTE, 18 | DELETE, 19 | UNMARK_NSFW 20 | } 21 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/links/LinksModel.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.links; 6 | 7 | import android.support.annotation.Nullable; 8 | 9 | import com.winsonchiu.reader.data.reddit.Link; 10 | import com.winsonchiu.reader.data.reddit.Subreddit; 11 | import com.winsonchiu.reader.data.reddit.User; 12 | 13 | import java.util.ArrayList; 14 | import java.util.List; 15 | 16 | /** 17 | * Created by TheKeeperOfPie on 4/24/2016. 18 | */ 19 | public class LinksModel { 20 | 21 | private Subreddit subreddit = new Subreddit(); 22 | private List links = new ArrayList<>(); 23 | private boolean showSubreddit; 24 | @Nullable private User user; 25 | 26 | public LinksModel() { 27 | 28 | } 29 | 30 | public LinksModel(Subreddit subreddit, List links, boolean showSubreddit, @Nullable User user) { 31 | this.subreddit = subreddit; 32 | this.links = links; 33 | this.showSubreddit = showSubreddit; 34 | this.user = user; 35 | } 36 | 37 | public Subreddit getSubreddit() { 38 | return subreddit; 39 | } 40 | 41 | public List getLinks() { 42 | return links; 43 | } 44 | 45 | @Nullable 46 | public User getUser() { 47 | return user; 48 | } 49 | 50 | public boolean isShowSubreddit() { 51 | return showSubreddit; 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/rx/ActionLog.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.rx; 6 | 7 | import android.util.Log; 8 | 9 | import rx.functions.Action1; 10 | 11 | /** 12 | * Created by TheKeeperOfPie on 2/6/2016. 13 | */ 14 | public class ActionLog implements Action1 { 15 | 16 | private String tag = ""; 17 | private String message = ""; 18 | 19 | public ActionLog(String tag) { 20 | this.tag = tag; 21 | } 22 | 23 | public ActionLog(String tag, String message) { 24 | this.tag = tag; 25 | this.message = message; 26 | } 27 | 28 | @Override 29 | public void call(Type o) { 30 | Log.d(tag, message + " with: " + o); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/rx/FinalizingSubscriber.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.rx; 6 | 7 | import rx.Subscriber; 8 | 9 | /** 10 | * Created by TheKeeperOfPie on 12/6/2015. 11 | */ 12 | public abstract class FinalizingSubscriber extends Subscriber { 13 | 14 | @Override 15 | public final void onStart() { 16 | start(); 17 | } 18 | 19 | @Override 20 | public final void onCompleted() { 21 | completed(); 22 | finish(); 23 | } 24 | 25 | @Override 26 | public final void onError(Throwable e) { 27 | e.printStackTrace(); 28 | error(e); 29 | finish(); 30 | } 31 | 32 | @Override 33 | public final void onNext(Type next) { 34 | next(next); 35 | } 36 | 37 | public void start() { 38 | 39 | } 40 | 41 | public void completed() { 42 | 43 | } 44 | 45 | public void error(Throwable e) { 46 | 47 | } 48 | 49 | public void next(Type next) { 50 | 51 | } 52 | 53 | public void finish() { 54 | 55 | } 56 | 57 | } 58 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/rx/ObserverComplete.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.rx; 6 | 7 | import rx.Observer; 8 | 9 | /** 10 | * Created by TheKeeperOfPie on 12/6/2015. 11 | */ 12 | public abstract class ObserverComplete implements Observer { 13 | 14 | @Override 15 | public void onError(Throwable e) { 16 | 17 | } 18 | 19 | @Override 20 | public void onNext(Type type) { 21 | 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/rx/ObserverEmpty.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.rx; 6 | 7 | import rx.Observer; 8 | 9 | /** 10 | * Created by TheKeeperOfPie on 12/6/2015. 11 | */ 12 | public class ObserverEmpty implements Observer { 13 | 14 | @Override 15 | public void onCompleted() { 16 | 17 | } 18 | 19 | @Override 20 | public void onError(Throwable e) { 21 | 22 | } 23 | 24 | @Override 25 | public void onNext(Type type) { 26 | 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/rx/ObserverError.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.rx; 6 | 7 | import rx.Observer; 8 | 9 | /** 10 | * Created by TheKeeperOfPie on 12/6/2015. 11 | */ 12 | public abstract class ObserverError implements Observer { 13 | 14 | @Override 15 | public void onCompleted() { 16 | 17 | } 18 | 19 | @Override 20 | public void onNext(Type type) { 21 | 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/rx/ObserverFinish.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.rx; 6 | 7 | import rx.Observer; 8 | 9 | /** 10 | * Created by TheKeeperOfPie on 12/6/2015. 11 | */ 12 | public abstract class ObserverFinish implements Observer { 13 | 14 | @Override 15 | public void onCompleted() { 16 | onFinish(); 17 | } 18 | 19 | @Override 20 | public void onError(Throwable e) { 21 | onFinish(); 22 | } 23 | 24 | @Override 25 | public void onNext(Type type) { 26 | 27 | } 28 | 29 | public abstract void onFinish(); 30 | } 31 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/rx/ObserverNext.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.rx; 6 | 7 | import rx.Observer; 8 | 9 | /** 10 | * Created by TheKeeperOfPie on 12/6/2015. 11 | */ 12 | public abstract class ObserverNext implements Observer { 13 | 14 | @Override 15 | public final void onCompleted() { 16 | 17 | } 18 | 19 | @Override 20 | public final void onError(Throwable e) { 21 | 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/rx/SubscriberCallError.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.rx; 6 | 7 | import rx.Subscriber; 8 | import rx.functions.Action1; 9 | 10 | /** 11 | * Created by TheKeeperOfPie on 5/1/2016. 12 | */ 13 | public class SubscriberCallError extends Subscriber { 14 | 15 | private final Action1 action; 16 | private final Event event; 17 | 18 | public SubscriberCallError(Action1 action, Event event) { 19 | this.action = action; 20 | this.event = event; 21 | } 22 | 23 | @Override 24 | public void onCompleted() { 25 | 26 | } 27 | 28 | @Override 29 | public void onError(Throwable e) { 30 | action.call(event); 31 | } 32 | 33 | @Override 34 | public void onNext(Object o) { 35 | 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/search/AdapterSearchLinkList.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.search; 6 | 7 | import android.support.v4.app.FragmentActivity; 8 | import android.view.ViewGroup; 9 | 10 | import com.winsonchiu.reader.adapter.AdapterListener; 11 | import com.winsonchiu.reader.comments.Source; 12 | import com.winsonchiu.reader.links.AdapterLinkList; 13 | import com.winsonchiu.reader.utils.ViewHolderBase; 14 | 15 | /** 16 | * Created by TheKeeperOfPie on 6/21/2015. 17 | */ 18 | public class AdapterSearchLinkList extends AdapterLinkList { 19 | 20 | private final Source source; 21 | 22 | public AdapterSearchLinkList(FragmentActivity activity, 23 | AdapterListener adapterListener, 24 | ViewHolderHeader.EventListener eventListenerHeader, 25 | ViewHolderLink.Listener listenerLink, 26 | Source source) { 27 | super(activity, adapterListener, eventListenerHeader, listenerLink); 28 | this.source = source; 29 | } 30 | 31 | @Override 32 | public ViewHolderBase onCreateViewHolder(ViewGroup parent, int viewType) { 33 | 34 | if (viewType == TYPE_HEADER) { 35 | return super.onCreateViewHolder(parent, viewType); 36 | } 37 | 38 | return new AdapterLinkList.ViewHolder(activity, 39 | parent, 40 | adapterCallback, 41 | adapterListener, 42 | listenerLink, 43 | source, 44 | this); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/search/ControllerSearchBase.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.search; 6 | 7 | import com.winsonchiu.reader.data.reddit.Subreddit; 8 | 9 | /** 10 | * Created by TheKeeperOfPie on 7/28/2015. 11 | */ 12 | public interface ControllerSearchBase { 13 | 14 | Subreddit getSubreddit(int position); 15 | int getSubredditCount(); 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/settings/FragmentMail.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.settings; 6 | 7 | import android.content.SharedPreferences; 8 | import android.os.Bundle; 9 | 10 | import com.winsonchiu.reader.AppSettings; 11 | import com.winsonchiu.reader.R; 12 | import com.winsonchiu.reader.inbox.Receiver; 13 | 14 | /** 15 | * Created by TheKeeperOfPie on 7/1/2015. 16 | */ 17 | public class FragmentMail extends FragmentPreferences { 18 | 19 | @Override 20 | public void onCreate(Bundle savedInstanceState) { 21 | super.onCreate(savedInstanceState); 22 | addPreferencesFromResource(R.xml.prefs_mail); 23 | 24 | bindPreferenceListenerSummary(findPreference(AppSettings.PREF_INBOX_CHECK_INTERVAL)); 25 | } 26 | 27 | @Override 28 | public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { 29 | if (key.equals(AppSettings.PREF_INBOX_CHECK_INTERVAL)) { 30 | Receiver.setAlarm(activity); 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/settings/Header.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.settings; 6 | 7 | import com.winsonchiu.reader.R; 8 | 9 | /** 10 | * Created by TheKeeperOfPie on 7/2/2015. 11 | */ 12 | public enum Header { 13 | 14 | DISPLAY(R.drawable.ic_palette_white_24dp, com.winsonchiu.reader.R.string.prefs_category_display, R.string.prefs_category_display_summary), 15 | BEHAVIOR(R.drawable.ic_build_white_24dp, R.string.prefs_category_behavior, R.string.prefs_category_behavior_summary), 16 | MAIL(R.drawable.ic_mail_white_24dp, R.string.prefs_category_mail, R.string.prefs_category_mail_summary), 17 | ABOUT(R.drawable.ic_help_outline_white_24dp, R.string.prefs_category_about, R.string.prefs_category_about_summary); 18 | 19 | private int iconResourceId; 20 | private int titleResourceId; 21 | private int summaryResourceId; 22 | 23 | Header(int iconResourceId, int titleResourceId, int summaryResourceId) { 24 | this.iconResourceId = iconResourceId; 25 | this.titleResourceId = titleResourceId; 26 | this.summaryResourceId = summaryResourceId; 27 | } 28 | 29 | public int getIconResourceId() { 30 | return iconResourceId; 31 | } 32 | 33 | public int getTitleResourceId() { 34 | return titleResourceId; 35 | } 36 | 37 | public int getSummaryResourceId() { 38 | return summaryResourceId; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/theme/ThemeBackground.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.theme; 6 | 7 | import com.winsonchiu.reader.AppSettings; 8 | import com.winsonchiu.reader.R; 9 | 10 | import java.security.SecureRandom; 11 | 12 | /** 13 | * Created by TheKeeperOfPie on 8/2/2015. 14 | */ 15 | public enum ThemeBackground { 16 | 17 | EMPTY("", R.style.Empty), 18 | 19 | DARK(AppSettings.THEME_DARK, R.style.AppDarkTheme), 20 | 21 | LIGHT(AppSettings.THEME_LIGHT, R.style.AppLightTheme), 22 | 23 | BLACK(AppSettings.THEME_BLACK, R.style.AppBlackTheme); 24 | 25 | private final String name; 26 | 27 | private final int styleBackground; 28 | 29 | ThemeBackground(String name, 30 | int styleBackground) { 31 | this.name = name; 32 | this.styleBackground = styleBackground; 33 | } 34 | 35 | public static ThemeBackground random() { 36 | return values()[new SecureRandom().nextInt(values().length)]; 37 | } 38 | 39 | public static ThemeBackground getTheme(@AppSettings.ThemeBackground String themeBackground) { 40 | switch (themeBackground) { 41 | case AppSettings.THEME_DARK: 42 | return DARK; 43 | case AppSettings.THEME_LIGHT: 44 | return LIGHT; 45 | case AppSettings.THEME_BLACK: 46 | return BLACK; 47 | } 48 | 49 | return EMPTY; 50 | } 51 | 52 | public String getName() { 53 | return name; 54 | } 55 | 56 | public int getStyleBackground() { 57 | return styleBackground; 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/utils/BaseTextWatcher.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.utils; 6 | 7 | import android.text.Editable; 8 | import android.text.TextWatcher; 9 | 10 | /** 11 | * Created by TheKeeperOfPie on 4/9/2016. 12 | */ 13 | public class BaseTextWatcher implements TextWatcher { 14 | 15 | @Override 16 | public void beforeTextChanged(CharSequence s, int start, int count, int after) { 17 | 18 | } 19 | 20 | @Override 21 | public void onTextChanged(CharSequence s, int start, int before, int count) { 22 | 23 | } 24 | 25 | @Override 26 | public void afterTextChanged(Editable s) { 27 | 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/utils/CallbackYoutubeDestruction.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.utils; 6 | 7 | /** 8 | * Created by TheKeeperOfPie on 1/23/2016. 9 | */ 10 | public interface CallbackYouTubeDestruction { 11 | 12 | /** 13 | * Notify that other YouTubeFragments must be destroyed 14 | */ 15 | void destroyYouTubePlayerFragments(); 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/utils/ControllerListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.utils; 6 | 7 | import android.support.v7.widget.RecyclerView; 8 | 9 | /** 10 | * Created by TheKeeperOfPie on 6/25/2015. 11 | */ 12 | public interface ControllerListener { 13 | RecyclerView.Adapter getAdapter(); 14 | void setToolbarTitle(CharSequence title); 15 | void setRefreshing(boolean refreshing); 16 | void post(Runnable runnable); 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/utils/CustomColorFilter.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.utils; 6 | 7 | import android.graphics.PorterDuff; 8 | import android.graphics.PorterDuffColorFilter; 9 | 10 | /** 11 | * ColorFilter used to access original color assigned at creation 12 | * 13 | * Created by TheKeeperOfPie on 7/17/2015. 14 | */ 15 | public class CustomColorFilter extends PorterDuffColorFilter { 16 | 17 | private final int color; 18 | 19 | public CustomColorFilter(int color) { 20 | super(color, PorterDuff.Mode.SRC_IN); 21 | this.color = color; 22 | } 23 | 24 | public CustomColorFilter(int color, PorterDuff.Mode mode) { 25 | super(color, mode); 26 | this.color = color; 27 | } 28 | 29 | public int getColor() { 30 | return color; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/utils/DisallowListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.utils; 6 | 7 | /** 8 | * Created by TheKeeperOfPie on 3/20/2015. 9 | */ 10 | public interface DisallowListener { 11 | void requestDisallowInterceptTouchEventVertical(boolean disallow); 12 | void requestDisallowInterceptTouchEventHorizontal(boolean disallow); 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/utils/FixedFloatingActionButtonBehavior.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.utils; 6 | 7 | import android.content.Context; 8 | import android.support.design.widget.AppBarLayout; 9 | import android.support.design.widget.CoordinatorLayout; 10 | import android.support.design.widget.FloatingActionButton; 11 | import android.util.AttributeSet; 12 | import android.view.View; 13 | 14 | /** 15 | * Created by TheKeeperOfPie on 8/19/2016. 16 | */ 17 | 18 | public class FixedFloatingActionButtonBehavior extends FloatingActionButton.Behavior { 19 | 20 | public FixedFloatingActionButtonBehavior() { 21 | super(); 22 | } 23 | 24 | public FixedFloatingActionButtonBehavior(Context context, AttributeSet attrs) { 25 | super(context, attrs); 26 | } 27 | 28 | @Override 29 | public boolean onDependentViewChanged(CoordinatorLayout parent, FloatingActionButton child, View dependency) { 30 | if (dependency instanceof AppBarLayout) { 31 | // If we're depending on an AppBarLayout we will show/hide it automatically 32 | // if the FAB is anchored to the AppBarLayout 33 | super.onDependentViewChanged(parent, child, dependency); 34 | } 35 | 36 | return false; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/utils/FragmentYouTube.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.utils; 6 | 7 | import com.google.android.youtube.player.YouTubePlayerFragment; 8 | 9 | /** 10 | * Created by TheKeeperOfPie on 1/23/2016. 11 | */ 12 | public class FragmentYouTube extends YouTubePlayerFragment { 13 | 14 | 15 | 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/utils/ImageDownload.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.utils; 6 | 7 | /** 8 | * Created by TheKeeperOfPie on 1/10/2016. 9 | */ 10 | public class ImageDownload { 11 | 12 | private String title; 13 | private String fileName; 14 | private String url; 15 | 16 | public ImageDownload(String title, String fileName, String url) { 17 | this.title = title; 18 | this.fileName = fileName; 19 | this.url = url; 20 | } 21 | 22 | public String getTitle() { 23 | return title; 24 | } 25 | 26 | public String getFileName() { 27 | return fileName; 28 | } 29 | 30 | public String getUrl() { 31 | return url; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/utils/OnSizeChangedListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.utils; 6 | 7 | /** 8 | * Created by TheKeeperOfPie on 12/29/2015. 9 | */ 10 | public interface OnSizeChangedListener { 11 | void onSizeChanged(int width, int height, int oldWidth, int oldHeight); 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/utils/PicassoEndCallback.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.utils; 6 | 7 | import android.support.annotation.CallSuper; 8 | 9 | import com.squareup.picasso.Callback; 10 | 11 | /** 12 | * Created by TheKeeperOfPie on 4/16/2016. 13 | */ 14 | public abstract class PicassoEndCallback implements Callback { 15 | 16 | @CallSuper 17 | @Override 18 | public void onSuccess() { 19 | onEnd(); 20 | } 21 | 22 | @CallSuper 23 | @Override 24 | public void onError() { 25 | onEnd(); 26 | } 27 | 28 | public abstract void onEnd(); 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/utils/RecyclerCallback.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.utils; 6 | 7 | import android.support.v7.widget.RecyclerView; 8 | 9 | import com.bumptech.glide.RequestManager; 10 | 11 | /** 12 | * Created by TheKeeperOfPie on 6/24/2015. 13 | */ 14 | public interface RecyclerCallback { 15 | int getRecyclerHeight(); 16 | RecyclerView.LayoutManager getLayoutManager(); 17 | void scrollTo(int position); 18 | void scrollAndCenter(int position, int height); 19 | void hideToolbar(); 20 | void clearDecoration(); 21 | RequestManager getRequestManager(); 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/utils/SimpleCallbackBackground.java: -------------------------------------------------------------------------------- 1 | package com.winsonchiu.reader.utils; 2 | 3 | import android.graphics.Paint; 4 | import android.support.v7.widget.helper.ItemTouchHelper; 5 | 6 | /** 7 | * Created by TheKeeperOfPie on 8/20/2015. 8 | */ 9 | public abstract class SimpleCallbackBackground extends ItemTouchHelper.SimpleCallback { 10 | 11 | protected Paint paint; 12 | 13 | public SimpleCallbackBackground(int dragDirs, int swipeDirs, int backgroundColor) { 14 | super(dragDirs, swipeDirs); 15 | paint = new Paint(); 16 | paint.setColor(backgroundColor); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/utils/SimplePlayerStateChangeListener.java: -------------------------------------------------------------------------------- 1 | package com.winsonchiu.reader.utils; 2 | 3 | import com.google.android.youtube.player.YouTubePlayer; 4 | 5 | /** 6 | * Created by TheKeeperOfPie on 11/23/2015. 7 | */ 8 | public class SimplePlayerStateChangeListener implements YouTubePlayer.PlayerStateChangeListener { 9 | @Override 10 | public void onLoading() { 11 | 12 | } 13 | 14 | @Override 15 | public void onLoaded(String s) { 16 | 17 | } 18 | 19 | @Override 20 | public void onAdStarted() { 21 | 22 | } 23 | 24 | @Override 25 | public void onVideoStarted() { 26 | 27 | } 28 | 29 | @Override 30 | public void onVideoEnded() { 31 | 32 | } 33 | 34 | @Override 35 | public void onError(YouTubePlayer.ErrorReason errorReason) { 36 | 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/utils/SpanLeadingMargin.java: -------------------------------------------------------------------------------- 1 | package com.winsonchiu.reader.utils; 2 | 3 | import android.graphics.Canvas; 4 | import android.graphics.Paint; 5 | import android.text.Layout; 6 | import android.text.style.LeadingMarginSpan.LeadingMarginSpan2; 7 | 8 | /** 9 | * Created by TheKeeperOfPie on 2/14/2016. 10 | */ 11 | public class SpanLeadingMargin implements LeadingMarginSpan2 { 12 | 13 | private boolean drawCalled; 14 | private int lineCount; 15 | private int lineTarget; 16 | private float margin; 17 | 18 | public SpanLeadingMargin(int lineTarget, float margin) { 19 | this.lineTarget = lineTarget; 20 | this.margin = margin; 21 | } 22 | 23 | @Override 24 | public int getLeadingMarginLineCount() { 25 | return lineTarget; 26 | } 27 | 28 | @Override 29 | public int getLeadingMargin(boolean first) { 30 | return first ? (int) margin : 0; 31 | } 32 | 33 | @Override 34 | public void drawLeadingMargin(Canvas c, Paint p, int x, int dir, int top, int baseline, int bottom, CharSequence text, int start, int end, boolean first, Layout layout) { 35 | drawCalled = true; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/utils/TargetImageDownload.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.utils; 6 | 7 | import android.graphics.Bitmap; 8 | import android.graphics.drawable.Drawable; 9 | 10 | import com.squareup.picasso.Picasso; 11 | import com.squareup.picasso.Target; 12 | 13 | /** 14 | * Created by TheKeeperOfPie on 12/6/2015. 15 | */ 16 | public abstract class TargetImageDownload implements Target { 17 | 18 | private String fileName; 19 | private String url; 20 | 21 | public TargetImageDownload(String fileName, String url) { 22 | this.fileName = fileName; 23 | this.url = url; 24 | } 25 | 26 | @Override 27 | public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { 28 | 29 | } 30 | 31 | @Override 32 | public void onBitmapFailed(Drawable errorDrawable) { 33 | 34 | } 35 | 36 | @Override 37 | public void onPrepareLoad(Drawable placeHolderDrawable) { 38 | 39 | } 40 | 41 | public String getFileName() { 42 | return fileName; 43 | } 44 | 45 | public String getUrl() { 46 | return url; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/utils/Utils.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.utils; 6 | 7 | /** 8 | * Created by TheKeeperOfPie on 3/30/2016. 9 | */ 10 | public class Utils { 11 | 12 | public static boolean inRangeInclusive(int first, int input, int second) { 13 | if (first < second) { 14 | return input >= first && input <= second; 15 | } 16 | 17 | return input >= second && input <= first; 18 | } 19 | 20 | public static boolean inRangeExclusive(int first, int input, int second) { 21 | if (first < second) { 22 | return input >= first && input <= second; 23 | } 24 | 25 | return input >= second && input <= first; 26 | } 27 | 28 | public static boolean inRangeInclusive(float first, float input, float second) { 29 | if (first < second) { 30 | return input >= first && input <= second; 31 | } 32 | 33 | return input >= second && input <= first; 34 | } 35 | 36 | public static boolean inRangeExclusive(float first, float input, float second) { 37 | if (first < second) { 38 | return input >= first && input <= second; 39 | } 40 | 41 | return input >= second && input <= first; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/utils/UtilsInput.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.utils; 6 | 7 | import android.content.Context; 8 | import android.view.View; 9 | import android.view.inputmethod.InputMethodManager; 10 | 11 | /** 12 | * Created by TheKeeperOfPie on 4/2/2016. 13 | */ 14 | public class UtilsInput { 15 | 16 | public static void showKeyboard(View view) { 17 | InputMethodManager inputManager = (InputMethodManager) view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); 18 | inputManager.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT); 19 | } 20 | 21 | public static void hideKeyboard(View view) { 22 | InputMethodManager inputManager = (InputMethodManager) view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); 23 | inputManager.hideSoftInputFromWindow(view.getWindowToken(), 0); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/utils/UtilsJson.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.utils; 6 | 7 | import android.text.TextUtils; 8 | 9 | import com.fasterxml.jackson.databind.JsonNode; 10 | 11 | /** 12 | * Utility class used to convert null JsonNodes into default values 13 | * 14 | * Created by TheKeeperOfPie on 8/1/2015. 15 | */ 16 | public class UtilsJson { 17 | 18 | public static String getString(JsonNode jsonNode) { 19 | return jsonNode == null || jsonNode.isNull() ? "" : jsonNode.asText(); 20 | } 21 | 22 | public static int getInt(JsonNode jsonNode) { 23 | return jsonNode == null ? 0 : jsonNode.asInt(); 24 | } 25 | 26 | public static boolean getBoolean(JsonNode jsonNode) { 27 | return jsonNode != null && jsonNode.asBoolean(); 28 | } 29 | 30 | public static long getLong(JsonNode jsonNode) { 31 | return jsonNode == null ? 0 : jsonNode.asLong(); 32 | } 33 | 34 | public static boolean isEmptyOrNullLiteral(String input) { 35 | return TextUtils.isEmpty(input) || "null".equalsIgnoreCase(input); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/utils/UtilsRx.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.utils; 6 | 7 | import rx.Observable; 8 | import rx.Subscription; 9 | import rx.functions.Func1; 10 | 11 | /** 12 | * Created by TheKeeperOfPie on 1/31/2016. 13 | */ 14 | public class UtilsRx { 15 | 16 | public static void unsubscribe(Subscription subscription) { 17 | if (subscription != null && !subscription.isUnsubscribed()) { 18 | subscription.unsubscribe(); 19 | } 20 | } 21 | 22 | public static boolean isUnsubscribed(Subscription subscription) { 23 | return subscription == null || subscription.isUnsubscribed(); 24 | } 25 | 26 | public static Func1> flatMapWrapError(Call call) { 27 | return first -> { 28 | try { 29 | return Observable.just(call.call(first)); 30 | } catch (Throwable t) { 31 | return Observable.error(t); 32 | } 33 | }; 34 | } 35 | 36 | public interface Call { 37 | Result call(Input input) throws Exception; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/utils/UtilsView.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.utils; 6 | 7 | import android.content.Context; 8 | import android.content.res.Resources; 9 | import android.preference.PreferenceManager; 10 | import android.support.v7.widget.RecyclerView; 11 | 12 | import com.winsonchiu.reader.AppSettings; 13 | import com.winsonchiu.reader.R; 14 | 15 | /** 16 | * Created by TheKeeperOfPie on 4/3/2016. 17 | */ 18 | public class UtilsView { 19 | 20 | public static int getContentWidth(RecyclerView.LayoutManager layoutManager) { 21 | return layoutManager.getWidth() - layoutManager.getPaddingStart() - layoutManager.getPaddingEnd(); 22 | } 23 | 24 | public static int getSpanCount(Context context) { 25 | Resources resources = context.getResources(); 26 | 27 | int spanCount = 0; 28 | 29 | try { 30 | spanCount = Integer.parseInt(PreferenceManager.getDefaultSharedPreferences(context).getString(AppSettings.PREF_GRID_COLUMNS, String.valueOf(0))); 31 | } 32 | catch (NumberFormatException e) { 33 | e.printStackTrace(); 34 | } 35 | 36 | if (spanCount <= 0) { 37 | int columnThreshold = resources.getDimensionPixelSize(R.dimen.grid_column_width_threshold); 38 | int width = resources.getDisplayMetrics().widthPixels; 39 | int columns = width / columnThreshold; 40 | spanCount = Math.max(1, columns); 41 | } 42 | 43 | return spanCount; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/utils/VideoViewContextWrapper.java: -------------------------------------------------------------------------------- 1 | package com.winsonchiu.reader.utils; 2 | 3 | import android.content.Context; 4 | import android.content.ContextWrapper; 5 | 6 | /** 7 | * Wrapper for Context to prevent AudioManager memory leak 8 | * when using VideoView 9 | * 10 | * Created by TheKeeperOfPie on 8/8/2015. 11 | */ 12 | public class VideoViewContextWrapper extends ContextWrapper { 13 | 14 | public VideoViewContextWrapper(Context base) { 15 | super(base); 16 | } 17 | 18 | @Override 19 | public Object getSystemService(String name) { 20 | if (Context.AUDIO_SERVICE.equals(name)) { 21 | return getApplicationContext().getSystemService(name); 22 | } 23 | return super.getSystemService(name); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/utils/ViewHolderBase.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.utils; 6 | 7 | import android.content.res.Resources; 8 | import android.support.annotation.ColorRes; 9 | import android.support.v4.content.ContextCompat; 10 | import android.support.v7.widget.RecyclerView; 11 | import android.view.View; 12 | 13 | import com.winsonchiu.reader.adapter.AdapterCallback; 14 | 15 | /** 16 | * Created by TheKeeperOfPie on 3/30/2016. 17 | */ 18 | public abstract class ViewHolderBase extends RecyclerView.ViewHolder { 19 | 20 | public static final String TAG = ViewHolderBase.class.getCanonicalName(); 21 | 22 | protected Resources resources; 23 | protected AdapterCallback adapterCallback; 24 | 25 | public ViewHolderBase(View itemView, AdapterCallback adapterCallback) { 26 | super(itemView); 27 | this.adapterCallback = adapterCallback; 28 | this.resources = itemView.getResources(); 29 | } 30 | 31 | public void onPause() { 32 | 33 | } 34 | 35 | public void onRecycle() { 36 | 37 | } 38 | 39 | public int getColor(@ColorRes int colorRes) { 40 | return ContextCompat.getColor(itemView.getContext(), colorRes); 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/utils/YouTubeListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.utils; 6 | 7 | import com.winsonchiu.reader.data.reddit.Link; 8 | 9 | /** 10 | * Created by TheKeeperOfPie on 12/28/2015. 11 | */ 12 | public interface YouTubeListener { 13 | void loadYouTubeVideo(Link link, String id, int timeInMillis); 14 | boolean hideYouTube(); 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/utils/YouTubePlayerStateListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.utils; 6 | 7 | import com.google.android.youtube.player.YouTubePlayer; 8 | 9 | /** 10 | * Created by TheKeeperOfPie on 7/7/2015. 11 | */ 12 | public class YouTubePlayerStateListener extends SimplePlayerStateChangeListener { 13 | 14 | private YouTubePlayer youTubePlayer; 15 | private boolean setFullscreen; 16 | private int seekToMillis; 17 | 18 | public YouTubePlayerStateListener(YouTubePlayer youTubePlayer, int seekToMillis, boolean setFullscreen) { 19 | super(); 20 | this.youTubePlayer = youTubePlayer; 21 | this.seekToMillis = seekToMillis; 22 | this.setFullscreen = setFullscreen; 23 | } 24 | 25 | @Override 26 | public void onVideoStarted() { 27 | if (seekToMillis > 0) { 28 | youTubePlayer.seekToMillis(seekToMillis); 29 | seekToMillis = 0; 30 | } 31 | if (setFullscreen) { 32 | youTubePlayer.setFullscreen(true); 33 | setFullscreen = false; 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/views/CustomImageButton.java: -------------------------------------------------------------------------------- 1 | package com.winsonchiu.reader.views; 2 | 3 | import android.annotation.TargetApi; 4 | import android.content.Context; 5 | import android.os.Build; 6 | import android.util.AttributeSet; 7 | import android.view.MotionEvent; 8 | import android.widget.ImageButton; 9 | 10 | /** 11 | * Created by TheKeeperOfPie on 8/21/2015. 12 | */ 13 | public class CustomImageButton extends ImageButton { 14 | 15 | private OnTouchListener onTouchListener; 16 | 17 | public CustomImageButton(Context context) { 18 | super(context); 19 | } 20 | 21 | public CustomImageButton(Context context, AttributeSet attrs) { 22 | super(context, attrs); 23 | } 24 | 25 | public CustomImageButton(Context context, AttributeSet attrs, int defStyleAttr) { 26 | super(context, attrs, defStyleAttr); 27 | } 28 | 29 | @TargetApi(Build.VERSION_CODES.LOLLIPOP) 30 | public CustomImageButton(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { 31 | super(context, attrs, defStyleAttr, defStyleRes); 32 | } 33 | 34 | public void setDispatchTouchListener(OnTouchListener onTouchListener) { 35 | this.onTouchListener = onTouchListener; 36 | } 37 | 38 | @Override 39 | public boolean dispatchTouchEvent(MotionEvent ev) { 40 | if (onTouchListener != null) { 41 | onTouchListener.onTouch(this, ev); 42 | } 43 | return super.dispatchTouchEvent(ev); 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/views/CustomRecyclerView.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.views; 6 | 7 | import android.content.Context; 8 | import android.support.annotation.Nullable; 9 | import android.support.v7.widget.RecyclerView; 10 | import android.util.AttributeSet; 11 | 12 | /** 13 | * Created by TheKeeperOfPie on 3/5/2016. 14 | */ 15 | public class CustomRecyclerView extends RecyclerView { 16 | 17 | public CustomRecyclerView(Context context) { 18 | super(context); 19 | } 20 | 21 | public CustomRecyclerView(Context context, @Nullable AttributeSet attrs) { 22 | super(context, attrs); 23 | } 24 | 25 | public CustomRecyclerView(Context context, @Nullable AttributeSet attrs, int defStyle) { 26 | super(context, attrs, defStyle); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/views/CustomScrollView.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.views; 6 | 7 | import android.annotation.TargetApi; 8 | import android.content.Context; 9 | import android.os.Build; 10 | import android.util.AttributeSet; 11 | import android.view.MotionEvent; 12 | import android.widget.ScrollView; 13 | 14 | /** 15 | * Created by TheKeeperOfPie on 3/28/2016. 16 | */ 17 | public class CustomScrollView extends ScrollView { 18 | 19 | private OnTouchListener onTouchListener; 20 | 21 | public CustomScrollView(Context context) { 22 | super(context); 23 | } 24 | 25 | public CustomScrollView(Context context, AttributeSet attrs) { 26 | super(context, attrs); 27 | } 28 | 29 | public CustomScrollView(Context context, AttributeSet attrs, int defStyleAttr) { 30 | super(context, attrs, defStyleAttr); 31 | } 32 | 33 | @TargetApi(Build.VERSION_CODES.LOLLIPOP) 34 | public CustomScrollView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { 35 | super(context, attrs, defStyleAttr, defStyleRes); 36 | } 37 | 38 | public void setDispatchTouchListener(OnTouchListener onTouchListener) { 39 | this.onTouchListener = onTouchListener; 40 | } 41 | 42 | @Override 43 | public boolean dispatchTouchEvent(MotionEvent ev) { 44 | if (onTouchListener != null) { 45 | onTouchListener.onTouch(this, ev); 46 | } 47 | return super.dispatchTouchEvent(ev); 48 | } 49 | 50 | } 51 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/views/CustomShareActionProvider.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.views; 6 | 7 | import android.content.Context; 8 | import android.support.v7.widget.ShareActionProvider; 9 | import android.view.View; 10 | 11 | /** 12 | * Created by TheKeeperOfPie on 4/1/2015. 13 | */ 14 | public class CustomShareActionProvider extends ShareActionProvider { 15 | 16 | public CustomShareActionProvider(Context context) { 17 | super(context); 18 | } 19 | 20 | /* 21 | Return null to force menu item to use assigned icon. 22 | Looks prettier. 23 | */ 24 | @Override 25 | public View onCreateActionView() { 26 | return null; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/views/ImageViewSquare.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.views; 6 | 7 | import android.annotation.TargetApi; 8 | import android.content.Context; 9 | import android.os.Build; 10 | import android.util.AttributeSet; 11 | import android.widget.ImageView; 12 | 13 | /** 14 | * Created by TheKeeperOfPie on 3/14/2015. 15 | */ 16 | public class ImageViewSquare extends ImageView { 17 | 18 | public ImageViewSquare(Context context) { 19 | super(context); 20 | } 21 | 22 | public ImageViewSquare(Context context, AttributeSet attrs) { 23 | super(context, attrs); 24 | } 25 | 26 | public ImageViewSquare(Context context, AttributeSet attrs, int defStyleAttr) { 27 | super(context, attrs, defStyleAttr); 28 | } 29 | 30 | @TargetApi(Build.VERSION_CODES.LOLLIPOP) 31 | public ImageViewSquare(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { 32 | super(context, attrs, defStyleAttr, defStyleRes); 33 | } 34 | 35 | @Override 36 | protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 37 | super.onMeasure(widthMeasureSpec, widthMeasureSpec); 38 | setMeasuredDimension(widthMeasureSpec, widthMeasureSpec); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /app/src/main/java/com/winsonchiu/reader/views/RecyclerViewZeroHeight.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Winson Chiu 3 | */ 4 | 5 | package com.winsonchiu.reader.views; 6 | 7 | import android.content.Context; 8 | import android.support.annotation.Nullable; 9 | import android.support.v7.widget.RecyclerView; 10 | import android.util.AttributeSet; 11 | 12 | /** 13 | * Created by TheKeeperOfPie on 12/28/2015. 14 | */ 15 | public class RecyclerViewZeroHeight extends RecyclerView { 16 | 17 | public RecyclerViewZeroHeight(Context context) { 18 | super(context); 19 | } 20 | 21 | public RecyclerViewZeroHeight(Context context, @Nullable AttributeSet attrs) { 22 | super(context, attrs); 23 | } 24 | 25 | public RecyclerViewZeroHeight(Context context, @Nullable AttributeSet attrs, int defStyle) { 26 | super(context, attrs, defStyle); 27 | } 28 | 29 | @Override 30 | public int getMinimumHeight() { 31 | return 0; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/res/anim/nothing.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 9 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/anim/slide_from_bottom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 9 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/anim/slide_to_bottom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 9 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/animator/slide_from_left.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/animator/slide_to_right.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_access_time_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_access_time_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_add_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_add_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_arrow_back_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_arrow_back_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_arrow_drop_down_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_arrow_drop_down_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_arrow_drop_up_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_arrow_drop_up_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_build_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_build_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_chat_white_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_chat_white_48dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_check_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_check_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_clear_all_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_clear_all_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_content_copy_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_content_copy_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_delete_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_delete_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_edit_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_edit_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_email_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_email_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_exit_to_app_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_exit_to_app_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_expand_less_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_expand_less_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_expand_more_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_expand_more_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_file_download_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_file_download_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_format_bold_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_format_bold_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_format_italic_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_format_italic_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_format_list_bulleted_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_format_list_bulleted_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_format_list_numbered_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_format_list_numbered_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_format_quote_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_format_quote_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_format_strikethrough_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_format_strikethrough_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_help_outline_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_help_outline_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_history_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_history_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_home_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_home_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_inbox_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_inbox_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_info_outline_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_info_outline_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_insert_link_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_insert_link_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_keyboard_arrow_down_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_keyboard_arrow_down_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_keyboard_arrow_up_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_keyboard_arrow_up_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_mail_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_mail_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_menu_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_menu_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_mode_comment_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_mode_comment_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_mode_comment_white_outline_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_mode_comment_white_outline_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_more_vert_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_more_vert_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_open_in_browser_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_open_in_browser_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_open_in_new_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_open_in_new_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_palette_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_palette_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_person_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_person_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_photo_album_white_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_photo_album_white_48dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_play_circle_outline_white_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_play_circle_outline_white_48dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_refresh_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_refresh_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_reorder_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_reorder_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_reply_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_reply_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_report_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_report_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_save_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_save_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_search_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_search_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_send_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_send_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_settings_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_settings_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_share_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_share_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_sort_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_sort_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_text_format_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_text_format_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_today_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_today_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_unfold_more_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_unfold_more_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_vertical_align_top_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_vertical_align_top_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_view_list_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_view_list_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_view_module_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_view_module_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_visibility_off_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_visibility_off_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_visibility_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_visibility_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_warning_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_warning_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_web_white_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-hdpi/ic_web_white_48dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldrtl-hdpi/ic_send_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-ldrtl-hdpi/ic_send_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldrtl-xhdpi/ic_send_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-ldrtl-xhdpi/ic_send_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldrtl-xxhdpi/ic_send_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-ldrtl-xxhdpi/ic_send_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-v21/progress_circular.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v21/progress_horizontal.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v21/progress_indeterminate_circular.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 13 | 14 | 20 | 21 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_access_time_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_access_time_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_add_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_add_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_arrow_back_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_arrow_back_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_arrow_drop_down_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_arrow_drop_down_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_arrow_drop_up_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_arrow_drop_up_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_build_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_build_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_chat_white_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_chat_white_48dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_check_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_check_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_clear_all_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_clear_all_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_content_copy_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_content_copy_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_delete_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_delete_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_edit_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_edit_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_email_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_email_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_exit_to_app_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_exit_to_app_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_expand_less_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_expand_less_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_expand_more_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_expand_more_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_file_download_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_file_download_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_format_bold_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_format_bold_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_format_italic_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_format_italic_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_format_list_bulleted_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_format_list_bulleted_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_format_list_numbered_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_format_list_numbered_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_format_quote_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_format_quote_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_format_strikethrough_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_format_strikethrough_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_help_outline_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_help_outline_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_history_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_history_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_home_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_home_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_inbox_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_inbox_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_info_outline_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_info_outline_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_insert_link_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_insert_link_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_keyboard_arrow_down_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_keyboard_arrow_down_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_keyboard_arrow_up_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_keyboard_arrow_up_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_mail_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_mail_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_menu_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_menu_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_mode_comment_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_mode_comment_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_mode_comment_white_outline_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_mode_comment_white_outline_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_more_vert_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_more_vert_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_open_in_browser_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_open_in_browser_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_open_in_new_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_open_in_new_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_palette_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_palette_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_person_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_person_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_photo_album_white_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_photo_album_white_48dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_play_circle_outline_white_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_play_circle_outline_white_48dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_refresh_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_refresh_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_reorder_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_reorder_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_reply_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_reply_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_report_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_report_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_save_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_save_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_search_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_search_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_send_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_send_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_settings_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_settings_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_share_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_share_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_sort_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_sort_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_text_format_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_text_format_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_today_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_today_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_unfold_more_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_unfold_more_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_vertical_align_top_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_vertical_align_top_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_view_list_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_view_list_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_view_module_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_view_module_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_visibility_off_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_visibility_off_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_visibility_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_visibility_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_warning_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_warning_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_web_white_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xhdpi/ic_web_white_48dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_access_time_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_access_time_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_add_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_add_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_arrow_back_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_arrow_back_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_arrow_drop_down_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_arrow_drop_down_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_arrow_drop_up_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_arrow_drop_up_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_build_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_build_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_chat_white_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_chat_white_48dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_check_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_check_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_clear_all_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_clear_all_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_content_copy_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_content_copy_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_delete_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_delete_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_edit_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_edit_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_email_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_email_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_exit_to_app_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_exit_to_app_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_expand_less_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_expand_less_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_expand_more_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_expand_more_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_file_download_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_file_download_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_format_bold_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_format_bold_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_format_italic_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_format_italic_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_format_list_bulleted_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_format_list_bulleted_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_format_list_numbered_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_format_list_numbered_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_format_quote_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_format_quote_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_format_strikethrough_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_format_strikethrough_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_help_outline_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_help_outline_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_history_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_history_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_home_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_home_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_inbox_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_inbox_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_info_outline_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_info_outline_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_insert_link_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_insert_link_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_keyboard_arrow_down_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_keyboard_arrow_down_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_keyboard_arrow_up_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_keyboard_arrow_up_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_mail_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_mail_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_menu_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_menu_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_mode_comment_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_mode_comment_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_mode_comment_white_outline_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_mode_comment_white_outline_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_more_vert_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_more_vert_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_open_in_browser_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_open_in_browser_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_open_in_new_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_open_in_new_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_palette_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_palette_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_person_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_person_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_photo_album_white_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_photo_album_white_48dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_play_circle_outline_white_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_play_circle_outline_white_48dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_refresh_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_refresh_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_reorder_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_reorder_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_reply_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_reply_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_report_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_report_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_save_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_save_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_search_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_search_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_send_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_send_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_settings_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_settings_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_share_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_share_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_sort_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_sort_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_text_format_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_text_format_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_today_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_today_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_unfold_more_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_unfold_more_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_vertical_align_top_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_vertical_align_top_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_view_list_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_view_list_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_view_module_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_view_module_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_visibility_off_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_visibility_off_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_visibility_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_visibility_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_warning_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_warning_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_web_white_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxhdpi/ic_web_white_48dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_expand_less_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxxhdpi/ic_expand_less_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_expand_more_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxxhdpi/ic_expand_more_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_today_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/drawable-xxxhdpi/ic_today_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/circular_shadow.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 10 | 11 | 19 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/progress_circular.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/progress_horizontal.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/progress_indeterminate_circular.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 13 | 14 | 19 | 20 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_circle.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 10 | 11 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_settings.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 15 | 16 | 22 | 23 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /app/src/main/res/layout/dialog_date_range.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 11 | 12 | 17 | 18 | 24 | 25 | 30 | 31 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /app/src/main/res/layout/dialog_text_alert.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 12 | 13 | 23 | 24 | 30 | 31 | 40 | 41 | -------------------------------------------------------------------------------- /app/src/main/res/layout/dialog_text_input.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 10 | 11 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_headers.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 13 | 14 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/layout/header_link.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/layout/row_header.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 12 | 13 | 24 | 25 | 36 | 37 | -------------------------------------------------------------------------------- /app/src/main/res/layout/row_page.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 11 | 12 | 24 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/layout/row_text.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 11 | 12 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/layout/toolbar.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_activity_login.xml: -------------------------------------------------------------------------------- 1 | 5 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_auth.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 10 | 11 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_history.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 10 | 11 | 19 | 20 | 27 | 28 | 35 | 36 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_inbox.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 10 | 11 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_message.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 10 | 11 | 18 | 19 | 26 | 27 | 34 | 35 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_new_message.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 10 | 11 | 18 | 19 | 26 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_new_post.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 10 | 11 | 18 | 19 | 26 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_reply.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 10 | 11 | 18 | 19 | 26 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_web.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 10 | 11 | 19 | 20 | 27 | 28 | 35 | 36 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_web_search.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 10 | 11 | 18 | 19 | 26 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/app_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/mipmap-hdpi/app_icon.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/app_icon_dark_outline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/mipmap-hdpi/app_icon_dark_outline.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/app_icon_white_outline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/mipmap-hdpi/app_icon_white_outline.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/app_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/mipmap-xhdpi/app_icon.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/app_icon_dark_outline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/mipmap-xhdpi/app_icon_dark_outline.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/app_icon_white_outline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/mipmap-xhdpi/app_icon_white_outline.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/app_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/mipmap-xxhdpi/app_icon.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/app_icon_dark_outline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/mipmap-xxhdpi/app_icon_dark_outline.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/app_icon_white_outline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/app/src/main/res/mipmap-xxhdpi/app_icon_white_outline.png -------------------------------------------------------------------------------- /app/src/main/res/values-w820dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 9 | 64dp 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 16dp 8 | 16dp 9 | 10 | 12 | 240dp 13 | 14 | 175dp 15 | 16 | 48dp 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/values/ids.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/xml/authenticator.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/xml/prefs_mail.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 12 | 13 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | jcenter() 4 | maven { url "https://oss.sonatype.org/content/repositories/snapshots" } 5 | maven { url 'https://maven.fabric.io/public' } 6 | } 7 | 8 | dependencies { 9 | classpath 'com.android.tools.build:gradle:2.2.0-beta3' 10 | classpath 'io.fabric.tools:gradle:1+' 11 | classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' 12 | classpath 'me.tatarka:gradle-retrolambda:3.3.0-beta4' 13 | } 14 | } 15 | 16 | allprojects { 17 | repositories { 18 | jcenter() 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m 13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 14 | 15 | # When configured, Gradle will run in incubating parallel mode. 16 | # This option should only be used with decoupled projects. More details, visit 17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 18 | # org.gradle.parallel=true} 19 | 20 | org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=1024m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 21 | org.gradle.daemon=true 22 | org.gradle.parallel=true 23 | org.gradle.configureondemand=true -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheKeeperOfPie/Reader/90f3266599abec215b3bce11095205e978bcc7be/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Sun Aug 14 01:27:42 EDT 2016 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.14.1-all.zip 7 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | --------------------------------------------------------------------------------