├── .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 |
4 |
5 |
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 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/.idea/inspectionProfiles/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
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 |
5 |
6 |
7 |
8 |
9 |
10 |
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 |
7 |
8 |
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 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_auth.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_history.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_inbox.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_message.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_new_message.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_new_post.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_reply.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_web.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_web_search.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------