├── .github └── ISSUE_TEMPLATE │ ├── -------feature-request.md │ ├── bug------bug-report.md │ └── sad-panda----------slow-download-speed.md ├── .gitignore ├── LICENSE ├── NOTICE ├── NOTICE.html ├── README.md ├── app ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── hippo │ │ └── ehviewer │ │ ├── ApplicationTest.java │ │ ├── CardBgTest.java │ │ ├── CookieDBTest.java │ │ └── DumpTest.java │ ├── debug │ ├── AndroidManifest.xml │ └── res │ │ ├── mipmap-hdpi │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxxhdpi │ │ └── ic_launcher.png │ │ ├── values-es │ │ └── strings.xml │ │ ├── values-ja │ │ └── strings.xml │ │ ├── values-ko │ │ └── strings.xml │ │ ├── values-zh-rCN │ │ └── strings.xml │ │ ├── values-zh-rHK │ │ └── strings.xml │ │ ├── values-zh-rTW │ │ └── strings.xml │ │ ├── values │ │ └── strings.xml │ │ └── xml-v25 │ │ └── shortcuts.xml │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── hippo │ │ │ ├── annotation │ │ │ └── Implemented.java │ │ │ ├── app │ │ │ ├── AppCompatPreferenceActivity.java │ │ │ ├── CheckBoxDialogBuilder.java │ │ │ ├── EditTextDialogBuilder.java │ │ │ ├── ListCheckBoxDialogBuilder.java │ │ │ ├── PrettyPreferenceActivity.java │ │ │ └── ProgressDialog.java │ │ │ ├── content │ │ │ ├── ContextLocalWrapper.java │ │ │ ├── FileProvider.java │ │ │ └── RecordingApplication.java │ │ │ ├── database │ │ │ ├── MSQLiteBuilder.java │ │ │ └── MSQLiteOpenHelper.java │ │ │ ├── drawable │ │ │ ├── AddDeleteDrawable.java │ │ │ ├── BatteryDrawable.java │ │ │ ├── BitmapPool.java │ │ │ ├── DrawableWrapper.java │ │ │ ├── DrawerArrowDrawable.java │ │ │ ├── PreciselyClipDrawable.java │ │ │ ├── RoundDrawable.java │ │ │ ├── RoundSideRectDrawable.java │ │ │ ├── TriangleDrawable.java │ │ │ ├── UnikeryDrawable.java │ │ │ └── WrapDrawable.java │ │ │ ├── ehviewer │ │ │ ├── Analytics.java │ │ │ ├── AppConfig.java │ │ │ ├── Crash.java │ │ │ ├── EhApplication.java │ │ │ ├── EhDB.java │ │ │ ├── EhProxySelector.java │ │ │ ├── FavouriteStatusRouter.java │ │ │ ├── GetText.java │ │ │ ├── Hosts.java │ │ │ ├── ImageBitmapHelper.java │ │ │ ├── Settings.java │ │ │ ├── UrlOpener.java │ │ │ ├── client │ │ │ │ ├── EhCacheKeyFactory.java │ │ │ │ ├── EhClient.java │ │ │ │ ├── EhConfig.java │ │ │ │ ├── EhCookieStore.java │ │ │ │ ├── EhDns.java │ │ │ │ ├── EhEngine.java │ │ │ │ ├── EhFilter.java │ │ │ │ ├── EhRequest.java │ │ │ │ ├── EhRequestBuilder.java │ │ │ │ ├── EhTagDatabase.java │ │ │ │ ├── EhUrl.java │ │ │ │ ├── EhUrlOpener.java │ │ │ │ ├── EhUtils.java │ │ │ │ ├── data │ │ │ │ │ ├── FavListUrlBuilder.java │ │ │ │ │ ├── GalleryApiInfo.java │ │ │ │ │ ├── GalleryComment.java │ │ │ │ │ ├── GalleryCommentList.java │ │ │ │ │ ├── GalleryDetail.java │ │ │ │ │ ├── GalleryInfo.java │ │ │ │ │ ├── GalleryPreview.java │ │ │ │ │ ├── GalleryTagGroup.java │ │ │ │ │ ├── LargePreviewSet.java │ │ │ │ │ ├── ListUrlBuilder.java │ │ │ │ │ ├── NormalPreviewSet.java │ │ │ │ │ └── PreviewSet.java │ │ │ │ ├── exception │ │ │ │ │ ├── CancelledException.java │ │ │ │ │ ├── EhException.java │ │ │ │ │ ├── Image509Exception.java │ │ │ │ │ ├── NoHAtHClientException.java │ │ │ │ │ ├── OffensiveException.java │ │ │ │ │ ├── ParseException.java │ │ │ │ │ └── PiningException.java │ │ │ │ └── parser │ │ │ │ │ ├── ArchiveParser.java │ │ │ │ │ ├── FavoritesParser.java │ │ │ │ │ ├── ForumsParser.java │ │ │ │ │ ├── GalleryApiParser.java │ │ │ │ │ ├── GalleryDetailParser.java │ │ │ │ │ ├── GalleryDetailUrlParser.java │ │ │ │ │ ├── GalleryListParser.java │ │ │ │ │ ├── GalleryListUrlParser.java │ │ │ │ │ ├── GalleryPageApiParser.java │ │ │ │ │ ├── GalleryPageParser.java │ │ │ │ │ ├── GalleryPageUrlParser.java │ │ │ │ │ ├── GalleryTokenApiParser.java │ │ │ │ │ ├── ParserUtils.java │ │ │ │ │ ├── ProfileParser.java │ │ │ │ │ ├── RateGalleryParser.java │ │ │ │ │ ├── SignInParser.java │ │ │ │ │ ├── TorrentParser.java │ │ │ │ │ └── VoteCommentParser.java │ │ │ ├── download │ │ │ │ ├── DownloadManager.java │ │ │ │ └── DownloadService.java │ │ │ ├── gallery │ │ │ │ ├── A7ZipArchive.java │ │ │ │ ├── ArchiveGalleryProvider.java │ │ │ │ ├── DirGalleryProvider.java │ │ │ │ ├── EhGalleryProvider.java │ │ │ │ ├── GalleryProvider2.java │ │ │ │ └── Pipe.java │ │ │ ├── preference │ │ │ │ ├── CleanRedundancyPreference.java │ │ │ │ ├── ClearDownloadPathCachePreference.java │ │ │ │ ├── DefaultCategoryPreference.java │ │ │ │ ├── ExcludedTagNamespacesPreference.java │ │ │ │ ├── ExportDataPreference.java │ │ │ │ ├── IdentityCookiePreference.java │ │ │ │ ├── ProxyPreference.java │ │ │ │ ├── RestoreDownloadPreference.java │ │ │ │ ├── SignInRequiredActivityPreference.java │ │ │ │ ├── SignOutPreference.java │ │ │ │ ├── TaskPreference.java │ │ │ │ └── VersionPreference.java │ │ │ ├── shortcuts │ │ │ │ └── ShortcutsActivity.java │ │ │ ├── spider │ │ │ │ ├── SpiderDen.java │ │ │ │ ├── SpiderInfo.java │ │ │ │ └── SpiderQueen.java │ │ │ ├── ui │ │ │ │ ├── CommonOperations.java │ │ │ │ ├── DirPickerActivity.java │ │ │ │ ├── EhActivity.java │ │ │ │ ├── EhPreferenceActivity.java │ │ │ │ ├── ExcludedLanguagesActivity.java │ │ │ │ ├── FilterActivity.java │ │ │ │ ├── GalleryActivity.java │ │ │ │ ├── HostsActivity.java │ │ │ │ ├── LicenseActivity.java │ │ │ │ ├── MainActivity.java │ │ │ │ ├── MyTagsActivity.java │ │ │ │ ├── SetSecurityActivity.java │ │ │ │ ├── SettingsActivity.java │ │ │ │ ├── ToolbarActivity.java │ │ │ │ ├── UConfigActivity.java │ │ │ │ ├── annotation │ │ │ │ │ ├── DrawerLifeCircle.java │ │ │ │ │ ├── ViewLifeCircle.java │ │ │ │ │ └── WholeLifeCircle.java │ │ │ │ ├── dialog │ │ │ │ │ └── SelectItemWithIconAdapter.java │ │ │ │ ├── fragment │ │ │ │ │ ├── AboutFragment.java │ │ │ │ │ ├── AdvancedFragment.java │ │ │ │ │ ├── DownloadFragment.java │ │ │ │ │ ├── EhFragment.java │ │ │ │ │ ├── PrivacyFragment.java │ │ │ │ │ └── ReadFragment.java │ │ │ │ └── scene │ │ │ │ │ ├── AnalyticsScene.java │ │ │ │ │ ├── BaseScene.java │ │ │ │ │ ├── CookieSignInScene.java │ │ │ │ │ ├── DownloadLabelsScene.java │ │ │ │ │ ├── DownloadsScene.java │ │ │ │ │ ├── EhCallback.java │ │ │ │ │ ├── EnterGalleryDetailTransaction.java │ │ │ │ │ ├── FavoritesScene.java │ │ │ │ │ ├── GalleryAdapter.java │ │ │ │ │ ├── GalleryCommentsScene.java │ │ │ │ │ ├── GalleryDetailScene.java │ │ │ │ │ ├── GalleryHolder.java │ │ │ │ │ ├── GalleryInfoScene.java │ │ │ │ │ ├── GalleryListScene.java │ │ │ │ │ ├── GalleryPreviewsScene.java │ │ │ │ │ ├── HistoryScene.java │ │ │ │ │ ├── ProgressScene.java │ │ │ │ │ ├── QuickSearchScene.java │ │ │ │ │ ├── SecurityScene.java │ │ │ │ │ ├── SelectSiteScene.java │ │ │ │ │ ├── SignInScene.java │ │ │ │ │ ├── SolidScene.java │ │ │ │ │ ├── ThumbSpanHelper.java │ │ │ │ │ ├── ToolbarScene.java │ │ │ │ │ ├── TransitionNameFactory.java │ │ │ │ │ ├── WarningScene.java │ │ │ │ │ └── WebViewSignInScene.java │ │ │ └── widget │ │ │ │ ├── AdvanceSearchTable.java │ │ │ │ ├── CategoryTable.java │ │ │ │ ├── DialogWebChromeClient.java │ │ │ │ ├── DividerView.java │ │ │ │ ├── EhDrawerLayout.java │ │ │ │ ├── EhDrawerView.java │ │ │ │ ├── EhNavigationView.java │ │ │ │ ├── EhStageLayout.java │ │ │ │ ├── FixedThumb.java │ │ │ │ ├── GalleryGuideView.java │ │ │ │ ├── GalleryHeader.java │ │ │ │ ├── GalleryInfoContentHelper.java │ │ │ │ ├── GalleryRatingBar.java │ │ │ │ ├── ImageSearchLayout.java │ │ │ │ ├── ReversibleSeekBar.java │ │ │ │ ├── SearchBar.java │ │ │ │ ├── SearchDatabase.java │ │ │ │ ├── SearchEditText.java │ │ │ │ ├── SearchLayout.java │ │ │ │ ├── SeekBarPanel.java │ │ │ │ ├── SimpleRatingView.java │ │ │ │ └── TileThumb.java │ │ │ ├── hardware │ │ │ └── ShakeDetector.java │ │ │ ├── io │ │ │ ├── FileInputStreamPipe.java │ │ │ ├── FileOutputStreamPipe.java │ │ │ ├── UniFileInputStreamPipe.java │ │ │ └── UniFileOutputStreamPipe.java │ │ │ ├── network │ │ │ ├── CookieDatabase.java │ │ │ ├── CookieRepository.java │ │ │ ├── CookieSet.java │ │ │ ├── InetValidator.java │ │ │ ├── Network.java │ │ │ ├── StatusCodeException.java │ │ │ └── UrlBuilder.java │ │ │ ├── okhttp │ │ │ └── ChromeRequestBuilder.java │ │ │ ├── preference │ │ │ ├── ActivityPreference.java │ │ │ ├── DialogPreference.java │ │ │ ├── ListPreference.java │ │ │ ├── MessagePreference.java │ │ │ ├── PreferenceUtils.java │ │ │ ├── SeekBarPreference.java │ │ │ ├── SwitchPreference.java │ │ │ └── UrlPreference.java │ │ │ ├── reveal │ │ │ ├── Reveal.java │ │ │ ├── RevealLinearLayout.java │ │ │ ├── RevealView.java │ │ │ └── ViewAnimationUtils.java │ │ │ ├── scene │ │ │ ├── Announcer.java │ │ │ ├── SceneApplication.java │ │ │ ├── SceneFragment.java │ │ │ ├── StageActivity.java │ │ │ ├── StageLayout.java │ │ │ └── TransitionHelper.java │ │ │ ├── text │ │ │ ├── Html.java │ │ │ ├── LinkMovementMethod2.java │ │ │ └── URLImageGetter.java │ │ │ ├── util │ │ │ ├── AppHelper.java │ │ │ ├── BitmapUtils.java │ │ │ ├── DrawableManager.java │ │ │ ├── ExceptionUtils.java │ │ │ ├── HashCodeUtils.java │ │ │ ├── IoThreadPoolExecutor.java │ │ │ ├── JsoupUtils.java │ │ │ ├── LogCat.java │ │ │ ├── MutableBoolean.java │ │ │ ├── NaturalComparator.java │ │ │ ├── PackageUtils.java │ │ │ ├── PathNaturalComparator.java │ │ │ ├── PermissionRequester.java │ │ │ ├── ReadableTime.java │ │ │ ├── SqlUtils.java │ │ │ ├── SystemUiHelper.java │ │ │ ├── SystemUiHelperImplHC.java │ │ │ ├── SystemUiHelperImplICS.java │ │ │ ├── SystemUiHelperImplJB.java │ │ │ ├── SystemUiHelperImplKK.java │ │ │ └── TextUrl.java │ │ │ ├── view │ │ │ └── ViewTransition.java │ │ │ └── widget │ │ │ ├── AutoWrapLayout.java │ │ │ ├── BatteryView.java │ │ │ ├── CheckTextView.java │ │ │ ├── ColorView.java │ │ │ ├── ContentLayout.java │ │ │ ├── CuteSpinner.java │ │ │ ├── DateUtils.java │ │ │ ├── DirExplorer.java │ │ │ ├── DrawerView.java │ │ │ ├── FabLayout.java │ │ │ ├── FixedAspectImageView.java │ │ │ ├── HackyTextInputEditText.java │ │ │ ├── IndicatingListView.java │ │ │ ├── IndicatingScrollView.java │ │ │ ├── LinkifyTextView.java │ │ │ ├── LoadImageView.java │ │ │ ├── MaxSizeContainer.java │ │ │ ├── ObservedTextView.java │ │ │ ├── OffsetLayout.java │ │ │ ├── ProgressView.java │ │ │ ├── RadioGridGroup.java │ │ │ ├── SafeCoordinatorLayout.java │ │ │ ├── SearchBarMover.java │ │ │ ├── SensitiveCheckBox.java │ │ │ ├── ShadowLinearLayout.java │ │ │ ├── SimpleGridAutoSpanLayout.java │ │ │ ├── SimpleGridLayout.java │ │ │ ├── Slider.java │ │ │ ├── TextClock.java │ │ │ ├── lockpattern │ │ │ ├── LockPatternUtils.java │ │ │ └── LockPatternView.java │ │ │ └── recyclerview │ │ │ ├── AutoGridLayoutManager.java │ │ │ └── AutoStaggeredGridLayoutManager.java │ └── res │ │ ├── anim │ │ ├── accelerate_quart.xml │ │ ├── decelerate_quart.xml │ │ ├── decelerate_quint.xml │ │ ├── decelerate_terz.xml │ │ ├── scene_close_enter.xml │ │ ├── scene_close_exit.xml │ │ ├── scene_open_enter.xml │ │ └── scene_open_exit.xml │ │ ├── color │ │ ├── content_reactive_black.xml │ │ ├── content_reactive_dark.xml │ │ ├── content_reactive_light.xml │ │ └── primary_text_material_black.xml │ │ ├── drawable-hdpi-v15 │ │ └── sadpanda_low_poly.webp │ │ ├── drawable-hdpi │ │ ├── drawer_shadow_left.9.png │ │ ├── drawer_shadow_right.9.png │ │ ├── ic_fp_40px.png │ │ ├── ic_pause_x24.png │ │ └── ic_stat_alert.png │ │ ├── drawable-mdpi-v15 │ │ └── sadpanda_low_poly.webp │ │ ├── drawable-mdpi │ │ ├── drawer_shadow_left.9.png │ │ ├── drawer_shadow_right.9.png │ │ ├── ic_fp_40px.png │ │ ├── ic_pause_x24.png │ │ └── ic_stat_alert.png │ │ ├── drawable-v25 │ │ ├── ic_shortcut_start.xml │ │ └── ic_shortcut_stop.xml │ │ ├── drawable-v26 │ │ ├── ic_shortcut_start.xml │ │ └── ic_shortcut_stop.xml │ │ ├── drawable-xhdpi-v15 │ │ └── sadpanda_low_poly.webp │ │ ├── drawable-xhdpi │ │ ├── drawer_shadow_left.9.png │ │ ├── drawer_shadow_right.9.png │ │ ├── ic_fp_40px.png │ │ ├── ic_pause_x24.png │ │ └── ic_stat_alert.png │ │ ├── drawable-xxhdpi-v15 │ │ └── sadpanda_low_poly.webp │ │ ├── drawable-xxhdpi │ │ ├── drawer_shadow_left.9.png │ │ ├── drawer_shadow_right.9.png │ │ ├── ic_fp_40px.png │ │ ├── ic_pause_x24.png │ │ ├── ic_stat_alert.png │ │ ├── shadow_2dp.9.png │ │ └── shadow_8dp.9.png │ │ ├── drawable │ │ ├── big_download.xml │ │ ├── big_filter.xml │ │ ├── big_history.xml │ │ ├── big_label.xml │ │ ├── big_sad_pandroid.xml │ │ ├── big_search.xml │ │ ├── default_avatar.xml │ │ ├── divider_gallery_detail_dark.xml │ │ ├── divider_gallery_detail_light.xml │ │ ├── fingerprint_error.xml │ │ ├── fingerprint_success.xml │ │ ├── ic_pause_108dp.xml │ │ ├── ic_play_arrow_108dp.xml │ │ ├── image_failed.xml │ │ ├── preference_header_background_black.xml │ │ ├── preference_header_background_dark.xml │ │ ├── preference_header_background_light.xml │ │ ├── shadow_bottom.xml │ │ ├── shadow_top.xml │ │ ├── spacer_keyline.xml │ │ ├── spacer_x6.xml │ │ ├── tile_background.xml │ │ ├── v_adb_primary_x24.xml │ │ ├── v_alert_red_x48.xml │ │ ├── v_archive_primary_x48.xml │ │ ├── v_arrow_left_dark_x24.xml │ │ ├── v_book_open_primary_x24.xml │ │ ├── v_book_open_x24.xml │ │ ├── v_bug_black_x48.xml │ │ ├── v_chart_accent_x48.xml │ │ ├── v_check_all_dark_x24.xml │ │ ├── v_check_dark_x24.xml │ │ ├── v_clear_all_dark_x24.xml │ │ ├── v_close_dark_x24.xml │ │ ├── v_cookie_brown_x48.xml │ │ ├── v_copy_x24.xml │ │ ├── v_delete_dark_x24.xml │ │ ├── v_delete_red_x24.xml │ │ ├── v_delete_x24.xml │ │ ├── v_dots_vertical_secondary_dark_x24.xml │ │ ├── v_download_black_x24.xml │ │ ├── v_download_box_dark_x24.xml │ │ ├── v_download_dark_x24.xml │ │ ├── v_download_primary_x24.xml │ │ ├── v_download_x16.xml │ │ ├── v_download_x24.xml │ │ ├── v_eh_subscription_black_x24.xml │ │ ├── v_file_find_primary_x48.xml │ │ ├── v_fire_black_x24.xml │ │ ├── v_folder_move_dark_x24.xml │ │ ├── v_go_to_dark_x24.xml │ │ ├── v_heart_black_x24.xml │ │ ├── v_heart_box_dark_x24.xml │ │ ├── v_heart_broken_x24.xml │ │ ├── v_heart_outline_primary_x48.xml │ │ ├── v_heart_primary_x48.xml │ │ ├── v_heart_x16.xml │ │ ├── v_heart_x24.xml │ │ ├── v_help_circle_x24.xml │ │ ├── v_history_black_x24.xml │ │ ├── v_homepage_black_x24.xml │ │ ├── v_info_dark_x24.xml │ │ ├── v_info_outline_dark_x24.xml │ │ ├── v_info_primary_x24.xml │ │ ├── v_magnify_dark_x24.xml │ │ ├── v_magnify_x24.xml │ │ ├── v_pause_dark_x24.xml │ │ ├── v_pause_x24.xml │ │ ├── v_pencil_dark_x24.xml │ │ ├── v_play_dark_x24.xml │ │ ├── v_play_x24.xml │ │ ├── v_plus_dark_x24.xml │ │ ├── v_refresh_dark_x24.xml │ │ ├── v_reorder_x24.xml │ │ ├── v_reply_dark_x24.xml │ │ ├── v_sad_panda_primary_x24.xml │ │ ├── v_sec_primary_x24.xml │ │ ├── v_send_dark_x24.xml │ │ ├── v_settings_black_x24.xml │ │ ├── v_settings_dark_x24.xml │ │ ├── v_share_primary_x48.xml │ │ ├── v_similar_primary_x48.xml │ │ ├── v_slider_bubble.xml │ │ ├── v_star_half_x16.xml │ │ ├── v_star_outline_x16.xml │ │ ├── v_star_x16.xml │ │ ├── v_thumb_up_primary_x48.xml │ │ └── v_utorrent_primary_x48.xml │ │ ├── layout-land │ │ └── activity_set_security.xml │ │ ├── layout-v21 │ │ ├── drawer_list.xml │ │ ├── drawer_list_rv.xml │ │ ├── preference_widget_seekbar.xml │ │ └── scene_toolbar.xml │ │ ├── layout │ │ ├── activity_dir_picker.xml │ │ ├── activity_filter.xml │ │ ├── activity_gallery.xml │ │ ├── activity_hosts.xml │ │ ├── activity_main.xml │ │ ├── activity_my_tags.xml │ │ ├── activity_set_security.xml │ │ ├── activity_toolbar.xml │ │ ├── activity_u_config.xml │ │ ├── alert_dialog_progress_material.xml │ │ ├── button_guide.xml │ │ ├── dialog_add_filter.xml │ │ ├── dialog_archive_list.xml │ │ ├── dialog_checkbox_builder.xml │ │ ├── dialog_donate.xml │ │ ├── dialog_edittext_builder.xml │ │ ├── dialog_gallery_menu.xml │ │ ├── dialog_go_to.xml │ │ ├── dialog_hosts.xml │ │ ├── dialog_item_select_with_icon.xml │ │ ├── dialog_js_prompt.xml │ │ ├── dialog_list_checkbox_builder.xml │ │ ├── dialog_rate.xml │ │ ├── dialog_recycler_view.xml │ │ ├── dialog_torrent_list.xml │ │ ├── drawer_list.xml │ │ ├── drawer_list_rv.xml │ │ ├── gallery_detail_actions.xml │ │ ├── gallery_detail_comments.xml │ │ ├── gallery_detail_content.xml │ │ ├── gallery_detail_header.xml │ │ ├── gallery_detail_info.xml │ │ ├── gallery_detail_previews.xml │ │ ├── gallery_detail_progress.xml │ │ ├── gallery_detail_tags.xml │ │ ├── gallery_tag_group.xml │ │ ├── item_cute_spinner_item.xml │ │ ├── item_dir_explorer.xml │ │ ├── item_download.xml │ │ ├── item_download_label.xml │ │ ├── item_drawer_favorites.xml │ │ ├── item_excluded_languages.xml │ │ ├── item_filter.xml │ │ ├── item_filter_header.xml │ │ ├── item_gallery_comment.xml │ │ ├── item_gallery_comment_more.xml │ │ ├── item_gallery_comment_progress.xml │ │ ├── item_gallery_grid.xml │ │ ├── item_gallery_info_data.xml │ │ ├── item_gallery_info_header.xml │ │ ├── item_gallery_list.xml │ │ ├── item_gallery_list_thumb_height.xml │ │ ├── item_gallery_preview.xml │ │ ├── item_gallery_tag.xml │ │ ├── item_history.xml │ │ ├── item_hosts.xml │ │ ├── item_preference_header.xml │ │ ├── item_quick_search.xml │ │ ├── item_select_dialog.xml │ │ ├── item_simple_list.xml │ │ ├── item_simple_list_2.xml │ │ ├── nav_header_main.xml │ │ ├── preference_dialog_default_categories.xml │ │ ├── preference_dialog_excluded_tag_namespaces.xml │ │ ├── preference_dialog_proxy.xml │ │ ├── preference_dialog_task.xml │ │ ├── preference_widget_fixed_switch.xml │ │ ├── preference_widget_seekbar.xml │ │ ├── progress_dialog_material.xml │ │ ├── scene_analytics.xml │ │ ├── scene_cookie_sign_in.xml │ │ ├── scene_download.xml │ │ ├── scene_excluded_languages.xml │ │ ├── scene_favorites.xml │ │ ├── scene_gallery_comments.xml │ │ ├── scene_gallery_detail.xml │ │ ├── scene_gallery_info.xml │ │ ├── scene_gallery_list.xml │ │ ├── scene_gallery_previews.xml │ │ ├── scene_history.xml │ │ ├── scene_label_list.xml │ │ ├── scene_login.xml │ │ ├── scene_progress.xml │ │ ├── scene_security.xml │ │ ├── scene_select_site.xml │ │ ├── scene_toolbar.xml │ │ ├── scene_warning.xml │ │ ├── search_action.xml │ │ ├── search_advance.xml │ │ ├── search_category.xml │ │ ├── search_image.xml │ │ ├── search_normal.xml │ │ ├── widget_advance_search_table.xml │ │ ├── widget_category_table.xml │ │ ├── widget_content_layout.xml │ │ ├── widget_gallery_guide_1.xml │ │ ├── widget_gallery_guide_2.xml │ │ ├── widget_image_search.xml │ │ └── widget_search_bar.xml │ │ ├── menu │ │ ├── activity_filter.xml │ │ ├── activity_u_config.xml │ │ ├── drawer_download.xml │ │ ├── drawer_favorites.xml │ │ ├── drawer_gallery_list.xml │ │ ├── nav_drawer_main.xml │ │ ├── scene_download.xml │ │ ├── scene_download_label.xml │ │ ├── scene_gallery_detail.xml │ │ ├── scene_gallery_previews.xml │ │ └── scene_history.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ ├── ic_launcher_background.png │ │ ├── ic_launcher_foreground.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ ├── ic_launcher_background.png │ │ ├── ic_launcher_foreground.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ ├── ic_launcher_background.png │ │ ├── ic_launcher_foreground.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ ├── ic_launcher_background.png │ │ ├── ic_launcher_foreground.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ ├── ic_launcher_background.png │ │ ├── ic_launcher_foreground.png │ │ └── ic_launcher_round.png │ │ ├── transition-v21 │ │ └── trans_move.xml │ │ ├── transition-v22 │ │ └── trans_move.xml │ │ ├── transition │ │ ├── trans_fade.xml │ │ └── trans_move.xml │ │ ├── values-de │ │ └── strings.xml │ │ ├── values-es │ │ └── strings.xml │ │ ├── values-fr │ │ └── strings.xml │ │ ├── values-ja │ │ └── strings.xml │ │ ├── values-ko │ │ └── strings.xml │ │ ├── values-land │ │ └── dimens.xml │ │ ├── values-large │ │ └── dimens.xml │ │ ├── values-sw600dp │ │ └── dimens.xml │ │ ├── values-sw720dp-land │ │ └── dimens.xml │ │ ├── values-sw720dp-w1280dp │ │ └── dimens.xml │ │ ├── values-sw720dp │ │ └── dimens.xml │ │ ├── values-th │ │ └── strings.xml │ │ ├── values-v19 │ │ └── themes.xml │ │ ├── values-v21 │ │ └── themes.xml │ │ ├── values-zh-rCN │ │ ├── arrays.xml │ │ └── strings.xml │ │ ├── values-zh-rHK │ │ ├── arrays.xml │ │ └── strings.xml │ │ ├── values-zh-rTW │ │ ├── arrays.xml │ │ └── strings.xml │ │ ├── values │ │ ├── analytics.xml │ │ ├── arrays.xml │ │ ├── attrs.xml │ │ ├── bools.xml │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── drawables.xml │ │ ├── ids.xml │ │ ├── pathdata.xml │ │ ├── strings.xml │ │ ├── styles.xml │ │ └── themes.xml │ │ ├── xml-v25 │ │ └── shortcuts.xml │ │ └── xml │ │ ├── about_settings.xml │ │ ├── advanced_settings.xml │ │ ├── backup_scheme.xml │ │ ├── download_settings.xml │ │ ├── eh_settings.xml │ │ ├── filepaths.xml │ │ ├── network_security_config.xml │ │ ├── privacy_settings.xml │ │ ├── read_settings.xml │ │ └── settings_headers.xml │ └── test │ ├── java │ └── com │ │ └── hippo │ │ ├── database │ │ └── MSQLiteBuilderTest.java │ │ ├── ehviewer │ │ ├── HostsTest.java │ │ └── client │ │ │ ├── EhTagDatabaseTest.java │ │ │ └── parser │ │ │ ├── GalleryDetailUrlParserTest.java │ │ │ ├── GalleryListParserTest.java │ │ │ ├── GalleryPageApiParserTest.java │ │ │ ├── GalleryPageParserTest.java │ │ │ └── GalleryPageUrlParserTest.java │ │ ├── network │ │ └── CookieRepositoryTest.java │ │ └── util │ │ ├── NaturalComparatorTest.java │ │ └── PathNaturalComparatorTest.java │ └── resources │ └── com │ └── hippo │ └── ehviewer │ └── client │ ├── EhTagDatabaseTest │ └── parser │ ├── GalleryListParserTestECompat.html │ ├── GalleryListParserTestEExtended.html │ ├── GalleryListParserTestEMinimal.html │ ├── GalleryListParserTestEMinimalPlus.html │ ├── GalleryListParserTestEThumbnail.html │ ├── GalleryListParserTestExCompat.html │ ├── GalleryListParserTestExExtended.html │ ├── GalleryListParserTestExMinimal.html │ ├── GalleryListParserTestExMinimalPlus.html │ ├── GalleryListParserTestExThumbnail.html │ ├── GalleryPageApiParserTest.json │ └── GalleryPageParserTest.html ├── art ├── launcher_icon-web.png └── screenshot-01.png ├── build.gradle ├── daogenerator ├── .gitignore ├── build.gradle └── src │ └── main │ └── java │ └── com │ └── hippo │ └── ehviewer │ └── daogenerator │ ├── EhDaoGenerator.java │ ├── Main.java │ └── Utilities.java ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle /.github/ISSUE_TEMPLATE/-------feature-request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: 功能申请 / Feature request 3 | about: 有个想法 / Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **这个功能是用来解决问题的吗? / Is your feature request related to a problem? Please describe.** 11 | 描述这个问题。 12 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 13 | 14 | **描述你想要的解决方法 / Describe the solution you'd like** 15 | 描述应通过何种行为来解决这个问题。 16 | A clear and concise description of what you want to happen. 17 | 18 | **备注 / Additional context** 19 | 还有别的想说的吗? 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug------bug-report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug 反馈 / Bug report 3 | about: 出问题了 / Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **简略描述 / Describe the bug** 11 | 大概说下是什么问题。 12 | A clear and concise description of what the bug is. 13 | 14 | **如何重现 / To Reproduce** 15 | 重现的步骤: 16 | 1. 打开什么什么 17 | 2. 点击什么什么 18 | 3. 出现什么什么问题 19 | Steps to reproduce the behavior: 20 | 1. Go to '...' 21 | 2. Click on '....' 22 | 3. Scroll down to '....' 23 | 4. See error 24 | 25 | **预期行为 / Expected behavior** 26 | 应该是什么样子的? 27 | A clear and concise description of what you expected to happen. 28 | 29 | **截图 / Screenshots** 30 | 能截图的话就发截图,请注意风序良俗。 31 | If applicable, add screenshots to help explain your problem. 32 | 33 | **设备型号与 Android 版本 / Device model and Android version** 34 | - 设备型号:【比如 Pixel 6 XXXL】 35 | - Android 版本:【比如 Android 12.1】 36 | - Device model: [e.g. Pixel 6 XXXL] 37 | - Android version: [e.g. Android 12.1] 38 | 39 | **备注 / Additional context** 40 | 还有什么想说的? 41 | Add any other context about the problem here. 42 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/sad-panda----------slow-download-speed.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Sad Panda / 下载太慢 / Slow download speed 3 | about: 所有其他问题 / All other questions 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | 加入我们的 Telegram 群组,[https://t.me/ehviewer](https://t.me/ehviewer)。温柔[大小]姐姐手把手帮你解决问题。 11 | Join our Telegram group, [https://t.me/ehviewer](https://t.me/ehviewer). Administrators will help you solve the problem. 12 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .gradle 2 | /local.properties 3 | .DS_Store 4 | /build 5 | /src 6 | *.iml 7 | .idea 8 | /captures 9 | release 10 | google-services.json 11 | -------------------------------------------------------------------------------- /NOTICE: -------------------------------------------------------------------------------- 1 | EhViewer 2 | Copyright 2014-2016 Hippo Seven 3 | 4 | An Unofficial E-Hentai Application for Android. 5 | 6 | 香风智乃是最可爱的女孩子。 7 | chino kafuu is the cutest girl. 8 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /src/main/assets/NOTICE.html 2 | /build 3 | /src/main/java-gen 4 | manifest-merger-release-report.txt 5 | /src/main/libs 6 | /src/main/obj 7 | 8 | # Intellij 9 | *.iml 10 | -------------------------------------------------------------------------------- /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 E:\Android\android-sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /app/src/androidTest/java/com/hippo/ehviewer/ApplicationTest.java: -------------------------------------------------------------------------------- 1 | package com.hippo.ehviewer; 2 | 3 | import android.app.Application; 4 | import android.test.ApplicationTestCase; 5 | 6 | /** 7 | * Testing Fundamentals 8 | */ 9 | public class ApplicationTest extends ApplicationTestCase { 10 | public ApplicationTest() { 11 | super(Application.class); 12 | } 13 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/com/hippo/ehviewer/CookieDBTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.ehviewer; 18 | 19 | import junit.framework.TestCase; 20 | 21 | public class CookieDBTest extends TestCase { 22 | } 23 | -------------------------------------------------------------------------------- /app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 21 | 22 | 23 | 24 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /app/src/debug/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seven332/EhViewer/ba6d41b91f53b0835f73fb2903b5c4ff1259786c/app/src/debug/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/debug/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seven332/EhViewer/ba6d41b91f53b0835f73fb2903b5c4ff1259786c/app/src/debug/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/debug/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seven332/EhViewer/ba6d41b91f53b0835f73fb2903b5c4ff1259786c/app/src/debug/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/debug/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seven332/EhViewer/ba6d41b91f53b0835f73fb2903b5c4ff1259786c/app/src/debug/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/debug/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seven332/EhViewer/ba6d41b91f53b0835f73fb2903b5c4ff1259786c/app/src/debug/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/debug/res/values-es/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | EhViewer Debug 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/debug/res/values-ja/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | EhViewer Debug 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/debug/res/values-ko/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | EhViewer Debug 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/debug/res/values-zh-rCN/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | EhViewer Debug 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/debug/res/values-zh-rHK/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | EhViewer Debug 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/debug/res/values-zh-rTW/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | EhViewer Debug 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/debug/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | EhViewer Debug 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/annotation/Implemented.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.annotation; 18 | 19 | import java.lang.annotation.ElementType; 20 | import java.lang.annotation.Retention; 21 | import java.lang.annotation.RetentionPolicy; 22 | import java.lang.annotation.Target; 23 | 24 | @Retention(RetentionPolicy.SOURCE) 25 | @Target({ElementType.METHOD}) 26 | public @interface Implemented { 27 | Class value(); 28 | } 29 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/ehviewer/client/EhRequestBuilder.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.ehviewer.client; 18 | 19 | import com.hippo.okhttp.ChromeRequestBuilder; 20 | 21 | public class EhRequestBuilder extends ChromeRequestBuilder { 22 | 23 | public EhRequestBuilder(String url, String referer) { 24 | this(url, referer, null); 25 | } 26 | 27 | public EhRequestBuilder(String url, String referer, String origin) { 28 | super(url); 29 | if (referer != null) { 30 | addHeader("Referer", referer); 31 | } 32 | if (origin != null) { 33 | addHeader("Origin", origin); 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/ehviewer/client/data/PreviewSet.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.ehviewer.client.data; 18 | 19 | import android.os.Parcelable; 20 | 21 | import com.hippo.widget.LoadImageView; 22 | 23 | public abstract class PreviewSet implements Parcelable { 24 | 25 | public abstract int size(); 26 | 27 | public abstract int getPosition(int index); 28 | 29 | public abstract String getPageUrlAt(int index); 30 | 31 | public abstract GalleryPreview getGalleryPreview(long gid, int index); 32 | 33 | public abstract void load(LoadImageView view, long gid, int index); 34 | } 35 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/ehviewer/client/exception/CancelledException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.ehviewer.client.exception; 18 | 19 | public class CancelledException extends Exception { 20 | 21 | public CancelledException() { 22 | super("CANCELED"); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/ehviewer/client/exception/EhException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.ehviewer.client.exception; 18 | 19 | public class EhException extends Exception { 20 | 21 | public EhException(String detailMessage) { 22 | super(detailMessage); 23 | } 24 | 25 | public EhException(String detailMessage, Throwable cause) { 26 | super(detailMessage, cause); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/ehviewer/client/exception/Image509Exception.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.ehviewer.client.exception; 18 | 19 | public class Image509Exception extends EhException { 20 | 21 | public Image509Exception() { 22 | super("509"); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/ehviewer/client/exception/NoHAtHClientException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.ehviewer.client.exception; 18 | 19 | public class NoHAtHClientException extends EhException { 20 | 21 | public NoHAtHClientException(String detailMessage) { 22 | super(detailMessage); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/ehviewer/client/exception/OffensiveException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2015 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.ehviewer.client.exception; 18 | 19 | /** 20 | * It is an exception for get offensive tip for g.e-hentai.org 21 | */ 22 | public class OffensiveException extends EhException { 23 | 24 | public OffensiveException() { 25 | super("OFFENSIVE"); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/ehviewer/client/exception/ParseException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.ehviewer.client.exception; 18 | 19 | public class ParseException extends EhException { 20 | 21 | private String mBody; 22 | 23 | public ParseException(String detailMessage, String body) { 24 | super(detailMessage); 25 | mBody = body; 26 | } 27 | 28 | public ParseException(String detailMessage, String body, Throwable cause) { 29 | super(detailMessage, cause); 30 | mBody = body; 31 | } 32 | 33 | public String getBody() { 34 | return mBody; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/ehviewer/client/exception/PiningException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2015 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.ehviewer.client.exception; 18 | 19 | public class PiningException extends EhException { 20 | 21 | public PiningException() { 22 | super("pining for the fjords"); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/ehviewer/ui/annotation/WholeLifeCircle.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.ehviewer.ui.annotation; 18 | 19 | import android.app.Activity; 20 | import android.app.Fragment; 21 | import android.os.Bundle; 22 | 23 | import java.lang.annotation.ElementType; 24 | import java.lang.annotation.Retention; 25 | import java.lang.annotation.RetentionPolicy; 26 | import java.lang.annotation.Target; 27 | 28 | /** 29 | * Created in {@link Fragment#onCreate(Bundle)} or {@link Activity#onCreate(Bundle)}, 30 | * destroyed in {@link Fragment#onDestroy()} or {@link Activity#onDestroy()}. 31 | */ 32 | @Retention(RetentionPolicy.SOURCE) 33 | @Target({ElementType.FIELD}) 34 | public @interface WholeLifeCircle { 35 | } 36 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/ehviewer/ui/fragment/ReadFragment.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.ehviewer.ui.fragment; 18 | 19 | import android.os.Bundle; 20 | import android.preference.PreferenceFragment; 21 | 22 | import com.hippo.ehviewer.R; 23 | 24 | public class ReadFragment extends PreferenceFragment { 25 | 26 | @Override 27 | public void onCreate(Bundle savedInstanceState) { 28 | super.onCreate(savedInstanceState); 29 | addPreferencesFromResource(R.xml.read_settings); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/ehviewer/ui/scene/TransitionNameFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.ehviewer.ui.scene; 18 | 19 | public final class TransitionNameFactory { 20 | 21 | public static String getThumbTransitionName(long gid) { 22 | return "thumb:" + gid; 23 | } 24 | 25 | public static String getTitleTransitionName(long gid) { 26 | return "title:" + gid; 27 | } 28 | 29 | public static String getUploaderTransitionName(long gid) { 30 | return "uploader:" + gid; 31 | } 32 | 33 | public static String getCategoryTransitionName(long gid) { 34 | return "category:" + gid; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/network/Network.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2014 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.network; 18 | 19 | import android.content.Context; 20 | import android.net.ConnectivityManager; 21 | import android.net.NetworkInfo; 22 | 23 | public final class Network { 24 | private Network() {} 25 | 26 | public static int getActiveNetworkType(Context context) { 27 | ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 28 | NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); 29 | if (activeNetwork != null) { 30 | return activeNetwork.getType(); 31 | } else { 32 | return -1; 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/reveal/Reveal.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.reveal; 18 | 19 | public interface Reveal { 20 | 21 | void setRevealEnable(boolean enable); 22 | 23 | void setReveal(int centerX, int centerY, float radius); 24 | } 25 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/scene/TransitionHelper.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.scene; 18 | 19 | import android.content.Context; 20 | import androidx.fragment.app.Fragment; 21 | import androidx.fragment.app.FragmentTransaction; 22 | 23 | public interface TransitionHelper { 24 | 25 | boolean onTransition(Context context, FragmentTransaction transaction, Fragment exit, Fragment enter); 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/util/HashCodeUtils.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.util; 18 | /* 19 | * Created by Hippo on 2017/9/4. 20 | */ 21 | 22 | public class HashCodeUtils { 23 | 24 | private static final int X = 31; 25 | 26 | /** 27 | *
{@code
28 |    * args[0].hashCode()*31^(n-1) + args[1].hashCode()*31^(n-2) + ... + args[n-1].hashCode()
29 |    * }
30 | * Returns 0 if {@code args == null}. 31 | */ 32 | public static int hashCode(Object... args) { 33 | if (args == null) { 34 | return 0; 35 | } 36 | int hash = 0; 37 | for (Object o: args) { 38 | hash = X * hash + (o != null ? o.hashCode() : 0); 39 | } 40 | return hash; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/util/MutableBoolean.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.util; 18 | 19 | public class MutableBoolean { 20 | 21 | public boolean value; 22 | 23 | public MutableBoolean(boolean value) { 24 | this.value = value; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/res/anim/accelerate_quart.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/anim/decelerate_quart.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/anim/decelerate_quint.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/anim/decelerate_terz.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/anim/scene_close_enter.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 20 | 21 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /app/src/main/res/anim/scene_open_exit.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 20 | 21 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /app/src/main/res/color/content_reactive_black.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/color/content_reactive_dark.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/color/content_reactive_light.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/color/primary_text_material_black.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi-v15/sadpanda_low_poly.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seven332/EhViewer/ba6d41b91f53b0835f73fb2903b5c4ff1259786c/app/src/main/res/drawable-hdpi-v15/sadpanda_low_poly.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/drawer_shadow_left.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seven332/EhViewer/ba6d41b91f53b0835f73fb2903b5c4ff1259786c/app/src/main/res/drawable-hdpi/drawer_shadow_left.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/drawer_shadow_right.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seven332/EhViewer/ba6d41b91f53b0835f73fb2903b5c4ff1259786c/app/src/main/res/drawable-hdpi/drawer_shadow_right.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_fp_40px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seven332/EhViewer/ba6d41b91f53b0835f73fb2903b5c4ff1259786c/app/src/main/res/drawable-hdpi/ic_fp_40px.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_pause_x24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seven332/EhViewer/ba6d41b91f53b0835f73fb2903b5c4ff1259786c/app/src/main/res/drawable-hdpi/ic_pause_x24.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_stat_alert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seven332/EhViewer/ba6d41b91f53b0835f73fb2903b5c4ff1259786c/app/src/main/res/drawable-hdpi/ic_stat_alert.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi-v15/sadpanda_low_poly.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seven332/EhViewer/ba6d41b91f53b0835f73fb2903b5c4ff1259786c/app/src/main/res/drawable-mdpi-v15/sadpanda_low_poly.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/drawer_shadow_left.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seven332/EhViewer/ba6d41b91f53b0835f73fb2903b5c4ff1259786c/app/src/main/res/drawable-mdpi/drawer_shadow_left.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/drawer_shadow_right.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seven332/EhViewer/ba6d41b91f53b0835f73fb2903b5c4ff1259786c/app/src/main/res/drawable-mdpi/drawer_shadow_right.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_fp_40px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seven332/EhViewer/ba6d41b91f53b0835f73fb2903b5c4ff1259786c/app/src/main/res/drawable-mdpi/ic_fp_40px.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_pause_x24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seven332/EhViewer/ba6d41b91f53b0835f73fb2903b5c4ff1259786c/app/src/main/res/drawable-mdpi/ic_pause_x24.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_stat_alert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seven332/EhViewer/ba6d41b91f53b0835f73fb2903b5c4ff1259786c/app/src/main/res/drawable-mdpi/ic_stat_alert.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-v25/ic_shortcut_start.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 11 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v25/ic_shortcut_stop.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 11 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v26/ic_shortcut_start.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v26/ic_shortcut_stop.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi-v15/sadpanda_low_poly.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seven332/EhViewer/ba6d41b91f53b0835f73fb2903b5c4ff1259786c/app/src/main/res/drawable-xhdpi-v15/sadpanda_low_poly.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/drawer_shadow_left.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seven332/EhViewer/ba6d41b91f53b0835f73fb2903b5c4ff1259786c/app/src/main/res/drawable-xhdpi/drawer_shadow_left.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/drawer_shadow_right.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seven332/EhViewer/ba6d41b91f53b0835f73fb2903b5c4ff1259786c/app/src/main/res/drawable-xhdpi/drawer_shadow_right.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_fp_40px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seven332/EhViewer/ba6d41b91f53b0835f73fb2903b5c4ff1259786c/app/src/main/res/drawable-xhdpi/ic_fp_40px.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_pause_x24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seven332/EhViewer/ba6d41b91f53b0835f73fb2903b5c4ff1259786c/app/src/main/res/drawable-xhdpi/ic_pause_x24.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_stat_alert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seven332/EhViewer/ba6d41b91f53b0835f73fb2903b5c4ff1259786c/app/src/main/res/drawable-xhdpi/ic_stat_alert.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi-v15/sadpanda_low_poly.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seven332/EhViewer/ba6d41b91f53b0835f73fb2903b5c4ff1259786c/app/src/main/res/drawable-xxhdpi-v15/sadpanda_low_poly.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/drawer_shadow_left.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seven332/EhViewer/ba6d41b91f53b0835f73fb2903b5c4ff1259786c/app/src/main/res/drawable-xxhdpi/drawer_shadow_left.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/drawer_shadow_right.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seven332/EhViewer/ba6d41b91f53b0835f73fb2903b5c4ff1259786c/app/src/main/res/drawable-xxhdpi/drawer_shadow_right.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_fp_40px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seven332/EhViewer/ba6d41b91f53b0835f73fb2903b5c4ff1259786c/app/src/main/res/drawable-xxhdpi/ic_fp_40px.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_pause_x24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seven332/EhViewer/ba6d41b91f53b0835f73fb2903b5c4ff1259786c/app/src/main/res/drawable-xxhdpi/ic_pause_x24.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_stat_alert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seven332/EhViewer/ba6d41b91f53b0835f73fb2903b5c4ff1259786c/app/src/main/res/drawable-xxhdpi/ic_stat_alert.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/shadow_2dp.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seven332/EhViewer/ba6d41b91f53b0835f73fb2903b5c4ff1259786c/app/src/main/res/drawable-xxhdpi/shadow_2dp.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/shadow_8dp.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seven332/EhViewer/ba6d41b91f53b0835f73fb2903b5c4ff1259786c/app/src/main/res/drawable-xxhdpi/shadow_8dp.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/big_download.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/big_filter.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/big_history.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/big_label.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/big_search.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/divider_gallery_detail_dark.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 20 | 21 | 23 | 24 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/divider_gallery_detail_light.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 20 | 21 | 23 | 24 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_pause_108dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_play_arrow_108dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/image_failed.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/preference_header_background_black.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/preference_header_background_dark.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/preference_header_background_light.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shadow_bottom.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 21 | 22 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shadow_top.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 21 | 22 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/spacer_keyline.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 21 | 22 | 25 | 26 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/spacer_x6.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 21 | 22 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/tile_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_adb_primary_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_alert_red_x48.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_archive_primary_x48.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_arrow_left_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_book_open_primary_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_book_open_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_bug_black_x48.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_chart_accent_x48.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_check_all_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_check_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_clear_all_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_close_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_cookie_brown_x48.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_copy_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_delete_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_delete_red_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_delete_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_dots_vertical_secondary_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_download_black_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_download_box_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_download_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_download_primary_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_download_x16.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_download_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_eh_subscription_black_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_file_find_primary_x48.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_fire_black_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_folder_move_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_go_to_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_heart_black_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_heart_box_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_heart_broken_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_heart_outline_primary_x48.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_heart_primary_x48.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_heart_x16.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_heart_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_help_circle_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_history_black_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_homepage_black_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_info_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_info_outline_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_info_primary_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_magnify_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_magnify_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_pause_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_pause_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_pencil_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_play_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_play_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_plus_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_refresh_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_reorder_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_reply_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_sad_panda_primary_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_sec_primary_x24.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_send_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_settings_black_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_settings_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_share_primary_x48.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_similar_primary_x48.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_slider_bubble.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_star_half_x16.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_star_outline_x16.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_star_x16.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_thumb_up_primary_x48.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_utorrent_primary_x48.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_toolbar.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/layout/button_guide.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 |