├── .codebeatignore
├── .github
├── ISSUE_TEMPLATE
│ ├── bug_report.md
│ ├── feature_request.md
│ ├── question.md
│ └── translation.md
└── stale.yml
├── .gitignore
├── .travis.yml
├── Android.mk
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── app
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ ├── contemporary
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── com
│ │ │ └── github
│ │ │ └── yeriomin
│ │ │ └── yalpstore
│ │ │ ├── BaseActivity.java
│ │ │ ├── OnAppClickListener.java
│ │ │ ├── PreferenceActivity.java
│ │ │ ├── SearchActivity.java
│ │ │ ├── ThemeManager.java
│ │ │ ├── fragment
│ │ │ ├── details
│ │ │ │ └── Background.java
│ │ │ └── preference
│ │ │ │ └── PreferenceFragment.java
│ │ │ ├── task
│ │ │ ├── LoadCircularImageTask.java
│ │ │ └── playstore
│ │ │ │ ├── NavHeaderUpdateTask.java
│ │ │ │ └── SearchSuggestionTask.java
│ │ │ └── view
│ │ │ ├── DialogWrapper.java
│ │ │ ├── InstalledAppsMainButtonAdapter.java
│ │ │ └── UpdatableAppsButtonAdapter.java
│ └── res
│ │ ├── drawable-v21
│ │ └── ic_menu.xml
│ │ ├── drawable
│ │ ├── button_border.xml
│ │ └── ic_menu.xml
│ │ ├── layout
│ │ ├── applist_main_button.xml
│ │ ├── base_activity_layout.xml
│ │ ├── details_activity_layout.xml
│ │ ├── details_beta.xml
│ │ ├── details_button_bar.xml
│ │ ├── details_content_layout.xml
│ │ ├── details_permissions.xml
│ │ ├── details_reviews.xml
│ │ ├── details_screenshots.xml
│ │ ├── nav_header.xml
│ │ ├── preferences_layout.xml
│ │ ├── search_view_layout.xml
│ │ └── suggestion_list_item.xml
│ │ ├── menu
│ │ ├── menu_accounts.xml
│ │ ├── menu_bar.xml
│ │ └── menu_drawer.xml
│ │ ├── values-v21
│ │ └── style.xml
│ │ └── values
│ │ ├── colors.xml
│ │ └── style.xml
│ ├── legacy
│ ├── AndroidManifest.xml
│ ├── java
│ │ ├── android
│ │ │ ├── preference
│ │ │ │ └── MultiSelectListPreference.java
│ │ │ ├── support
│ │ │ │ └── v4
│ │ │ │ │ └── content
│ │ │ │ │ └── FileProvider.java
│ │ │ └── util
│ │ │ │ └── LruCache.java
│ │ └── com
│ │ │ └── github
│ │ │ └── yeriomin
│ │ │ └── yalpstore
│ │ │ ├── BaseActivity.java
│ │ │ ├── OnAppClickListener.java
│ │ │ ├── PreferenceActivity.java
│ │ │ ├── SearchActivity.java
│ │ │ ├── ThemeManager.java
│ │ │ ├── fragment
│ │ │ └── details
│ │ │ │ └── Background.java
│ │ │ └── view
│ │ │ ├── DialogWrapper.java
│ │ │ ├── InstalledAppsMainButtonAdapter.java
│ │ │ └── UpdatableAppsButtonAdapter.java
│ └── res
│ │ ├── drawable-v21
│ │ └── ic_accounts.xml
│ │ ├── drawable
│ │ └── ic_accounts.png
│ │ ├── layout
│ │ ├── applist_main_button.xml
│ │ ├── details_activity_layout.xml
│ │ ├── details_beta.xml
│ │ ├── details_button_bar.xml
│ │ ├── details_content_layout.xml
│ │ ├── details_permissions.xml
│ │ ├── details_reviews.xml
│ │ └── details_screenshots.xml
│ │ ├── menu
│ │ └── menu_bar.xml
│ │ ├── values
│ │ └── donottranslate.xml
│ │ └── xml
│ │ └── searchable.xml
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ ├── android
│ │ └── content
│ │ │ └── pm
│ │ │ └── IPackageInstallObserver.java
│ └── com
│ │ └── github
│ │ └── yeriomin
│ │ ├── util
│ │ └── StringExtractor.java
│ │ └── yalpstore
│ │ ├── AboutActivity.java
│ │ ├── AppListActivity.java
│ │ ├── AppListInstallReceiver.java
│ │ ├── AppListIterator.java
│ │ ├── BitmapManager.java
│ │ ├── BlackWhiteListManager.java
│ │ ├── BootReceiver.java
│ │ ├── BugReportActivity.java
│ │ ├── CategoryAppsActivity.java
│ │ ├── CategoryListActivity.java
│ │ ├── CategoryManager.java
│ │ ├── ClusterActivity.java
│ │ ├── ConnectivityChangeReceiver.java
│ │ ├── ContextUtil.java
│ │ ├── CredentialsEmptyException.java
│ │ ├── DebugHttpClientAdapter.java
│ │ ├── DetailsActivity.java
│ │ ├── DetailsInstallReceiver.java
│ │ ├── DeveloperActivity.java
│ │ ├── DeviceInfoActivity.java
│ │ ├── DirectDownloadActivity.java
│ │ ├── EglExtensionRetriever.java
│ │ ├── EndlessScrollActivity.java
│ │ ├── FirstLaunchChecker.java
│ │ ├── FullscreenImageActivity.java
│ │ ├── FullscreenImageAdapter.java
│ │ ├── GlobalInstallReceiver.java
│ │ ├── HistoryActivity.java
│ │ ├── ImageAdapter.java
│ │ ├── InstalledApkCopier.java
│ │ ├── InstalledAppsActivity.java
│ │ ├── ListActivity.java
│ │ ├── ListAdapter.java
│ │ ├── ManualDownloadActivity.java
│ │ ├── NativeDeviceInfoProvider.java
│ │ ├── NativeGsfVersionProvider.java
│ │ ├── NativeHttpClientAdapter.java
│ │ ├── NetworkUtil.java
│ │ ├── NotPurchasedException.java
│ │ ├── OnListPreferenceChangeListener.java
│ │ ├── PackageSpecificReceiver.java
│ │ ├── Paths.java
│ │ ├── PermissionsComparator.java
│ │ ├── PlayStoreApiAuthenticator.java
│ │ ├── PreferenceUtil.java
│ │ ├── ReviewIterator.java
│ │ ├── ReviewRetrieverIterator.java
│ │ ├── ReviewStorageIterator.java
│ │ ├── ScrollEdgeListener.java
│ │ ├── SearchActivityAbstract.java
│ │ ├── SharedPreferencesCachedSet.java
│ │ ├── SharedPreferencesTranslator.java
│ │ ├── SpoofDeviceManager.java
│ │ ├── SqliteHelper.java
│ │ ├── ThemeManagerAbstract.java
│ │ ├── TokenDispenserMirrors.java
│ │ ├── UpdatableAppsActivity.java
│ │ ├── UpdateAllReceiver.java
│ │ ├── UpdateChecker.java
│ │ ├── Util.java
│ │ ├── VersionIgnoreManager.java
│ │ ├── WishlistActivity.java
│ │ ├── YalpStoreActivity.java
│ │ ├── YalpStoreApplication.java
│ │ ├── YalpStorePermissionManager.java
│ │ ├── YalpStoreSuggestionProvider.java
│ │ ├── YalpStoreUncaughtExceptionHandler.java
│ │ ├── bugreport
│ │ ├── BugReportBuilder.java
│ │ ├── BugReportDeviceInfoBuilder.java
│ │ ├── BugReportLogBuilder.java
│ │ ├── BugReportMessageBuilder.java
│ │ ├── BugReportPreferencesBuilder.java
│ │ ├── BugReportPropertiesBuilder.java
│ │ ├── BugReportSender.java
│ │ ├── BugReportSenderEmail.java
│ │ ├── BugReportSenderFtp.java
│ │ └── BugReportService.java
│ │ ├── delta
│ │ ├── BSDiff.java
│ │ ├── GDiff.java
│ │ ├── Patcher.java
│ │ └── PatcherFactory.java
│ │ ├── download
│ │ ├── AppListProgressListener.java
│ │ ├── DetailsProgressListener.java
│ │ ├── DownloadManager.java
│ │ ├── ProgressListenerFactory.java
│ │ ├── ProgressNotificationListener.java
│ │ ├── Request.java
│ │ ├── RequestApk.java
│ │ ├── RequestBuilder.java
│ │ ├── RequestDelta.java
│ │ ├── RequestObb.java
│ │ ├── RequestSplit.java
│ │ └── State.java
│ │ ├── fragment
│ │ ├── Abstract.java
│ │ ├── Button.java
│ │ ├── ButtonCancel.java
│ │ ├── ButtonDownload.java
│ │ ├── ButtonInstall.java
│ │ ├── ButtonRun.java
│ │ ├── ButtonUninstall.java
│ │ ├── DownloadMenu.java
│ │ ├── FilterMenu.java
│ │ ├── details
│ │ │ ├── AllFragments.java
│ │ │ ├── AppLists.java
│ │ │ ├── BackToPlayStore.java
│ │ │ ├── Beta.java
│ │ │ ├── Exodus.java
│ │ │ ├── Fdroid.java
│ │ │ ├── GeneralDetails.java
│ │ │ ├── GoogleDependency.java
│ │ │ ├── InstantAppLink.java
│ │ │ ├── Permissions.java
│ │ │ ├── Review.java
│ │ │ ├── Screenshot.java
│ │ │ ├── Share.java
│ │ │ ├── SystemAppPage.java
│ │ │ ├── Video.java
│ │ │ └── Wishlist.java
│ │ └── preference
│ │ │ ├── Abstract.java
│ │ │ ├── AllPreferences.java
│ │ │ ├── Blacklist.java
│ │ │ ├── CheckUpdates.java
│ │ │ ├── DownloadDirectory.java
│ │ │ ├── InstallationMethod.java
│ │ │ ├── InternalStorage.java
│ │ │ ├── List.java
│ │ │ ├── OnInstallationMethodChangeListener.java
│ │ │ ├── Proxy.java
│ │ │ └── Theme.java
│ │ ├── install
│ │ ├── ApkSignatureVerifier.java
│ │ ├── InstallationState.java
│ │ ├── InstallerAbstract.java
│ │ ├── InstallerBackground.java
│ │ ├── InstallerDefault.java
│ │ ├── InstallerFactory.java
│ │ ├── InstallerPrivileged.java
│ │ ├── InstallerPrivilegedReflection.java
│ │ ├── InstallerPrivilegedSession.java
│ │ └── InstallerRoot.java
│ │ ├── model
│ │ ├── App.java
│ │ ├── AppBuilder.java
│ │ ├── Dao.java
│ │ ├── Event.java
│ │ ├── EventDao.java
│ │ ├── Filter.java
│ │ ├── ImageSource.java
│ │ ├── LoginInfo.java
│ │ ├── LoginInfoDao.java
│ │ ├── Rating.java
│ │ ├── Review.java
│ │ └── ReviewBuilder.java
│ │ ├── notification
│ │ ├── CancelDownloadReceiver.java
│ │ ├── IgnoreUpdatesReceiver.java
│ │ ├── NotificationBuilder.java
│ │ ├── NotificationBuilderHoneycomb.java
│ │ ├── NotificationBuilderIcs.java
│ │ ├── NotificationBuilderJellybean.java
│ │ ├── NotificationBuilderKitkatWatch.java
│ │ ├── NotificationBuilderLegacy.java
│ │ ├── NotificationBuilderO.java
│ │ ├── NotificationManagerWrapper.java
│ │ └── SignatureCheckReceiver.java
│ │ ├── selfupdate
│ │ ├── Signature.java
│ │ ├── Updater.java
│ │ ├── UpdaterFactory.java
│ │ ├── UpdaterFdroid.java
│ │ └── UpdaterGithub.java
│ │ ├── task
│ │ ├── AppListValidityCheckTask.java
│ │ ├── BitmapCacheCleanupTask.java
│ │ ├── CheckShellTask.java
│ │ ├── CheckSuTask.java
│ │ ├── CleanupTask.java
│ │ ├── ConvertToNormalTask.java
│ │ ├── ConvertToSystemTask.java
│ │ ├── CopyApkTask.java
│ │ ├── DownloadTask.java
│ │ ├── ExodusCsrfTask.java
│ │ ├── ExodusSearchTask.java
│ │ ├── ExodusSubmitTask.java
│ │ ├── ExodusTask.java
│ │ ├── FdroidListTask.java
│ │ ├── HistoryTask.java
│ │ ├── HttpTask.java
│ │ ├── InstallTask.java
│ │ ├── InstalledAppsTask.java
│ │ ├── LoadImageTask.java
│ │ ├── LowCpuIntensityTask.java
│ │ ├── OldApkCleanupTask.java
│ │ ├── PatchTask.java
│ │ ├── RebootTask.java
│ │ ├── SystemRemountTask.java
│ │ ├── TaskWithProgress.java
│ │ ├── UninstallSystemAppTask.java
│ │ └── playstore
│ │ │ ├── AppProvidedCredentialsTask.java
│ │ │ ├── BackgroundCategoryTask.java
│ │ │ ├── BackgroundPurchaseTask.java
│ │ │ ├── BackgroundUpdatableAppsTask.java
│ │ │ ├── BetaToggleTask.java
│ │ │ ├── CategoryAppsTask.java
│ │ │ ├── CategoryListTask.java
│ │ │ ├── CategoryTask.java
│ │ │ ├── ChangelogTask.java
│ │ │ ├── CheckCredentialsTask.java
│ │ │ ├── CheckLoginTask.java
│ │ │ ├── CloneableTask.java
│ │ │ ├── ClusterTask.java
│ │ │ ├── DeliveryDataTask.java
│ │ │ ├── DependencyTranslationTask.java
│ │ │ ├── DetailsCategoryTask.java
│ │ │ ├── DetailsTask.java
│ │ │ ├── DownloadLinkTask.java
│ │ │ ├── EndlessScrollTask.java
│ │ │ ├── FlagTask.java
│ │ │ ├── ForegroundUpdatableAppsTask.java
│ │ │ ├── LoginTask.java
│ │ │ ├── PlayStorePayloadTask.java
│ │ │ ├── PlayStoreTask.java
│ │ │ ├── PurchaseCheckTask.java
│ │ │ ├── PurchaseTask.java
│ │ │ ├── RefreshTokenTask.java
│ │ │ ├── RemoteAppListTask.java
│ │ │ ├── ReviewAddTask.java
│ │ │ ├── ReviewDeleteTask.java
│ │ │ ├── ReviewLoadTask.java
│ │ │ ├── SearchTask.java
│ │ │ ├── UpdatableAppsTask.java
│ │ │ ├── UserProfileTask.java
│ │ │ ├── WishlistToggleTask.java
│ │ │ └── WishlistUpdateTask.java
│ │ ├── view
│ │ ├── AppBadge.java
│ │ ├── ButtonAdapter.java
│ │ ├── CredentialsDialogBuilder.java
│ │ ├── DialogWrapperAbstract.java
│ │ ├── FlagDialogBuilder.java
│ │ ├── HistoryItem.java
│ │ ├── HttpTaskOnClickListener.java
│ │ ├── InstalledAppBadge.java
│ │ ├── InstalledAppsMainButtonAdapterAbstract.java
│ │ ├── IntentOnClickListener.java
│ │ ├── ListItem.java
│ │ ├── LoginDialogBuilder.java
│ │ ├── ProgressIndicator.java
│ │ ├── PurchaseDialogBuilder.java
│ │ ├── SearchResultAppBadge.java
│ │ ├── SystemRemountDialogBuilder.java
│ │ ├── UpdatableAppBadge.java
│ │ ├── UpdatableAppsButtonAdapterAbstract.java
│ │ ├── UriOnClickListener.java
│ │ └── UserReviewDialogBuilder.java
│ │ └── widget
│ │ ├── Badge.java
│ │ ├── ExpansionPanel.java
│ │ └── PermissionGroup.java
│ └── res
│ ├── drawable-anydpi-v21
│ ├── ic_about.xml
│ ├── ic_add.xml
│ ├── ic_apps.xml
│ ├── ic_arrow_drop_down.xml
│ ├── ic_bug_report.xml
│ ├── ic_cancel.xml
│ ├── ic_categories.xml
│ ├── ic_check.xml
│ ├── ic_chevron_left.xml
│ ├── ic_chevron_right.xml
│ ├── ic_circle.xml
│ ├── ic_delete.xml
│ ├── ic_download.xml
│ ├── ic_edit.xml
│ ├── ic_events.xml
│ ├── ic_exodus.xml
│ ├── ic_expand_less.xml
│ ├── ic_expand_more.xml
│ ├── ic_fdroid.xml
│ ├── ic_filter.xml
│ ├── ic_google_play.xml
│ ├── ic_instant_app.xml
│ ├── ic_link.xml
│ ├── ic_logout.xml
│ ├── ic_more.xml
│ ├── ic_more_vert.xml
│ ├── ic_notification.xml
│ ├── ic_permission_android.xml
│ ├── ic_permission_google.xml
│ ├── ic_permission_unknown.xml
│ ├── ic_placeholder.xml
│ ├── ic_refresh.xml
│ ├── ic_search.xml
│ ├── ic_settings.xml
│ ├── ic_share.xml
│ ├── ic_star.xml
│ ├── ic_storage.xml
│ ├── ic_video.xml
│ ├── ic_visibility_off.xml
│ ├── ic_visibility_on.xml
│ ├── ic_wishlist_plus.xml
│ └── ic_wishlist_tick.xml
│ ├── drawable
│ ├── ic_about.png
│ ├── ic_add.png
│ ├── ic_apps.png
│ ├── ic_arrow_drop_down.png
│ ├── ic_bug_report.png
│ ├── ic_cancel.png
│ ├── ic_categories.png
│ ├── ic_check.png
│ ├── ic_chevron_left.png
│ ├── ic_chevron_right.png
│ ├── ic_circle.png
│ ├── ic_delete.png
│ ├── ic_download.png
│ ├── ic_download_animation.xml
│ ├── ic_download_animation_1.png
│ ├── ic_download_animation_2.png
│ ├── ic_download_animation_3.png
│ ├── ic_download_animation_4.png
│ ├── ic_download_animation_5.png
│ ├── ic_download_animation_6.png
│ ├── ic_edit.png
│ ├── ic_events.png
│ ├── ic_exodus.png
│ ├── ic_expand_less.png
│ ├── ic_expand_more.png
│ ├── ic_fdroid.png
│ ├── ic_filter.png
│ ├── ic_google_play.png
│ ├── ic_instant_app.png
│ ├── ic_launcher_foreground.xml
│ ├── ic_link.png
│ ├── ic_logout.png
│ ├── ic_more.png
│ ├── ic_more_vert.png
│ ├── ic_notification.png
│ ├── ic_permission_android.png
│ ├── ic_permission_google.png
│ ├── ic_permission_unknown.png
│ ├── ic_placeholder.png
│ ├── ic_refresh.png
│ ├── ic_search.png
│ ├── ic_settings.png
│ ├── ic_share.png
│ ├── ic_star.png
│ ├── ic_storage.png
│ ├── ic_video.png
│ ├── ic_visibility_off.png
│ ├── ic_visibility_on.png
│ ├── ic_wishlist_plus.png
│ └── ic_wishlist_tick.png
│ ├── layout-v21
│ ├── permission_group_widget_layout.xml
│ └── two_line_list_item_with_icon.xml
│ ├── layout
│ ├── about_activity_layout.xml
│ ├── applist_activity_layout.xml
│ ├── badge_widget_layout.xml
│ ├── bugreport_activity_layout.xml
│ ├── details_general.xml
│ ├── deviceinfo_activity_layout.xml
│ ├── event_list_item.xml
│ ├── expansion_panel_widget_layout.xml
│ ├── fullscreen_image_activity_layout.xml
│ ├── list_activity_layout.xml
│ ├── login_dialog_layout.xml
│ ├── manual_download_activity_layout.xml
│ ├── permission_group_widget_layout.xml
│ ├── review_dialog_layout.xml
│ ├── review_list_item.xml
│ └── two_line_list_item_with_icon.xml
│ ├── menu
│ └── menu_download.xml
│ ├── mipmap-anydpi-v26
│ └── ic_launcher.xml
│ ├── mipmap-hdpi-v24
│ └── ic_launcher.png
│ ├── mipmap-hdpi
│ └── ic_launcher.png
│ ├── mipmap-mdpi-v24
│ └── ic_launcher.png
│ ├── mipmap-xhdpi-v24
│ └── ic_launcher.png
│ ├── mipmap-xhdpi
│ └── ic_launcher.png
│ ├── mipmap-xxhdpi-v24
│ └── ic_launcher.png
│ ├── mipmap-xxhdpi
│ └── ic_launcher.png
│ ├── mipmap-xxxhdpi-v24
│ └── ic_launcher.png
│ ├── mipmap-xxxhdpi
│ └── ic_launcher.png
│ ├── mipmap
│ └── ic_launcher.png
│ ├── values-ar
│ └── strings.xml
│ ├── values-ast
│ └── strings.xml
│ ├── values-bg
│ └── strings.xml
│ ├── values-cs
│ └── strings.xml
│ ├── values-de
│ └── strings.xml
│ ├── values-el
│ └── strings.xml
│ ├── values-es
│ └── strings.xml
│ ├── values-eu
│ └── strings.xml
│ ├── values-fr-rBE
│ └── strings.xml
│ ├── values-fr
│ └── strings.xml
│ ├── values-in
│ └── strings.xml
│ ├── values-it
│ └── strings.xml
│ ├── values-ja
│ └── strings.xml
│ ├── values-kk
│ └── strings.xml
│ ├── values-ko
│ └── strings.xml
│ ├── values-nl
│ └── strings.xml
│ ├── values-pl
│ └── strings.xml
│ ├── values-pt-rBR
│ └── strings.xml
│ ├── values-pt
│ └── strings.xml
│ ├── values-ru
│ └── strings.xml
│ ├── values-sk
│ └── strings.xml
│ ├── values-uk
│ └── strings.xml
│ ├── values-zh-rTW
│ └── strings.xml
│ ├── values-zh
│ └── strings.xml
│ ├── values
│ ├── array.xml
│ ├── attrs.xml
│ ├── donottranslate.xml
│ ├── ic_launcher_background.xml
│ └── strings.xml
│ └── xml
│ ├── paths.xml
│ └── settings.xml
├── build.gradle
├── drawable-source
├── ic_bug_report.svg
├── ic_categories.svg
├── ic_chevron_left.svg
├── ic_chevron_right.svg
├── ic_circle.svg
├── ic_delete.svg
├── ic_download.svg
├── ic_edit.svg
├── ic_events.svg
├── ic_exodus.svg
├── ic_expand_less.svg
├── ic_expand_more.svg
├── ic_fdroid.svg
├── ic_google_play.svg
├── ic_ignore.svg
├── ic_instant_app.svg
├── ic_launcher.svg
├── ic_launcher_borderless.svg
├── ic_logout.svg
├── ic_notification.svg
├── ic_notification_round.svg
├── ic_notification_square.svg
├── ic_permission_android.svg
├── ic_permission_google.svg
├── ic_permission_unknown.svg
├── ic_placeholder.svg
├── ic_refresh.svg
├── ic_search.svg
├── ic_settings.svg
├── ic_star.svg
├── ic_storage.svg
├── ic_video.svg
├── ic_wishlist_plus.svg
└── ic_wishlist_tick.svg
├── fastlane
└── metadata
│ └── android
│ └── en-US
│ └── phoneScreenshots
│ ├── details.png
│ ├── search.png
│ └── updates.png
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
├── yalp-store-ota-zip
├── 81-YalpStore.sh
├── META-INF
│ └── com
│ │ └── google
│ │ └── android
│ │ └── update-binary
└── privapp-permissions-YalpStore.xml
└── yeriomin-keystore.jks.enc
/.codebeatignore:
--------------------------------------------------------------------------------
1 | /app/src/legacy/java/android/support/v4/content/FileProvider.java
2 | /app/src/legacy/java/android/util/LruCache.java
3 | /app/src/legacy/java/android/preference/MultiSelectListPreference.java
4 | /app/src/main/java/com/github/yeriomin/yalpstore/EglExtensionRetriever.java
5 | /app/src/main/java/com/github/yeriomin/yalpstore/model/App.java
6 | /app/src/main/java/com/github/yeriomin/yalpstore/model/LoginInfo.java
7 | /app/src/main/java/com/github/yeriomin/yalpstore/model/AppBuilder.java
8 | /app/src/main/java/com/github/yeriomin/yalpstore/model/Filter.java
9 | /app/src/main/java/com/github/yeriomin/yalpstore/model/Review.java
10 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: There is a problem with Yalp Store
4 |
5 | ---
6 |
7 | **Before creating an issue**
8 | 1. Make sure you are running the latest version of Yalp Store. Check [here](https://github.com/yeriomin/YalpStore/releases/latest).
9 | 2. Search for similar issues [here](https://github.com/yeriomin/YalpStore/issues?q=is%3Aissue).
10 | 3. Send developer a bug report using Yalp's built-in crash tool. Please identify yourself - the reports are anonymous by default.
11 | 4. Number 3 is important. Please do it. It helps a lot.
12 | 5. Use the following template to write the text of your issue.
13 |
14 | **Expected behavior**
15 | Tell us what should happen
16 |
17 | **Actual behavior**
18 | Tell us what happens instead
19 |
20 | **Steps to reproduce**
21 | 1.
22 | 2.
23 | 3.
24 |
25 | **Your setup**
26 | Device model, android falvor, Yalp Store version
27 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 |
5 | ---
6 |
7 | **Is your feature request related to a problem? Please describe.**
8 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
9 |
10 | **Describe the solution you'd like**
11 | A clear and concise description of what you want to happen.
12 |
13 | **Describe alternatives you've considered**
14 | A clear and concise description of any alternative solutions or features you've considered.
15 |
16 | **Additional context**
17 | Add any other context or screenshots about the feature request here.
18 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/question.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Question
3 | about: You have something to ask
4 |
5 | ---
6 |
7 | If you have a question or want to discuss something which is not a bug or a feature request, please use [the gitter chat room](https://gitter.im/YalpStore/Lobby).
8 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/translation.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Translation
3 | about: You are contributing a translation
4 |
5 | ---
6 |
7 | I appreciate your effort!
8 |
9 | Please use POEditor to contribute translations:
10 |
11 | https://poeditor.com/projects/view?id=95185
12 |
13 | I (obviously) cannot speak every language, so I cannot blindly overwrite someone else's translation with yours. POEditor lets you collaborate with other translators.
14 |
--------------------------------------------------------------------------------
/.github/stale.yml:
--------------------------------------------------------------------------------
1 | # Number of days of inactivity before an issue becomes stale
2 | daysUntilStale: 30
3 | # Number of days of inactivity before a stale issue is closed
4 | daysUntilClose: 7
5 | # Issues with these labels will never be considered stale
6 | exemptLabels:
7 | - pinned
8 | - security
9 | - enhancement
10 | # Label to use when marking an issue as stale
11 | staleLabel: stale
12 | # Comment to post when marking an issue as stale. Set to `false` to disable
13 | markComment: >
14 | This issue has been automatically marked as stale because it has not had
15 | recent activity. It will be closed if no further activity occurs. Thank you
16 | for your contributions.
17 | # Comment to post when closing a stale issue. Set to `false` to disable
18 | closeComment: false
19 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Built application files
2 | *.apk
3 | *.ap_
4 |
5 | # Files for the Dalvik VM
6 | *.dex
7 |
8 | # Java class files
9 | *.class
10 |
11 | # Generated files
12 | bin/
13 | gen/
14 |
15 | # Gradle files
16 | .gradle/
17 | build/
18 | /*/build/
19 |
20 | # Local configuration file (sdk path, etc)
21 | local.properties
22 |
23 | # Proguard folder generated by Eclipse
24 | proguard/
25 |
26 | # Log Files
27 | *.log
28 |
29 | # From .gitignore generated by Android Studio
30 | *.iml
31 | .DS_Store
32 | /captures
33 | /.idea
34 | /.gradle*
35 | gradle-app.setting
36 | *.zip
37 |
38 | *.jar
39 | *.json
40 |
--------------------------------------------------------------------------------
/Android.mk:
--------------------------------------------------------------------------------
1 | LOCAL_PATH:= $(call my-dir)
2 |
3 | include $(CLEAR_VARS)
4 | LOCAL_MODULE := privapp-permissions-YalpStore.xml
5 | LOCAL_MODULE_CLASS := ETC
6 | LOCAL_MODULE_TAGS := optional
7 | LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/permissions
8 | LOCAL_SRC_FILES := $(LOCAL_PATH)/yalp-store-ota-zip/$(LOCAL_MODULE)
9 | include $(BUILD_PREBUILT)
10 |
11 | include $(CLEAR_VARS)
12 |
13 | LOCAL_MODULE := YalpStore
14 | LOCAL_MODULE_TAGS := optional
15 | LOCAL_PACKAGE_NAME := YalpStore
16 |
17 | yalpstore_root := $(LOCAL_PATH)
18 | yalpstore_dir := app
19 | yalpstore_out := $(OUT_DIR)/target/common/obj/APPS/$(LOCAL_MODULE)_intermediates
20 | yalpstore_build := $(yalpstore_root)/$(yalpstore)/build
21 | yalpstore_apk := build/outputs/apk/release/app-release-unsigned.apk
22 |
23 | $(yalpstore_root)/$(yalpstore_dir)/$(yalpstore_apk):
24 | rm -Rf $(yalpstore_build)
25 | mkdir -p $(yalpstore_out)
26 | ln -s $(yalpstore_out) $(yalpstore_build)
27 | echo "sdk.dir=$(ANDROID_HOME)" > $(yalpstore_root)/local.properties
28 | cd $(yalpstore_root) && git submodule update --recursive --init
29 | cd $(yalpstore_root)/$(yalpstore_dir) && JAVA_TOOL_OPTIONS="$(JAVA_TOOL_OPTIONS) -Dfile.encoding=UTF8" ../gradlew assembleLegacyRelease
30 |
31 | LOCAL_CERTIFICATE := platform
32 | LOCAL_SRC_FILES := $(yalpstore_dir)/$(yalpstore_apk)
33 | LOCAL_MODULE_CLASS := APPS
34 | LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
35 |
36 | include $(BUILD_PREBUILT)
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Thank you for considering to contribute!
2 |
3 | ### Questions
4 |
5 | If you have a question or want to discuss something which is not a bug or a feature request, please use [the gitter chat room](https://gitter.im/YalpStore/Lobby).
6 |
7 | ### Bugs and feature requests
8 |
9 | Please, [search the closed issues](https://github.com/yeriomin/YalpStore/issues?q=is%3Aissue) before creating a bug or a feature request.
10 |
11 | Also, please make sure you are using the [latest version available](https://github.com/yeriomin/YalpStore/releases/latest).
12 |
13 | Keep in mind that naming an issue is important for future searches. Naming it "Bug" or "A request" is unhelpful.
14 |
15 | ### Translations
16 |
17 | Please, check out project's POEditor page:
18 |
19 | https://poeditor.com/join/project/LUPUijv2Cs
20 |
21 | POEditor is a web service for managing opensource translations. Don't hesitate to try it, you don't have to be technically adept to use it.
22 |
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/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 F:\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 | -dontobfuscate
19 | -keep public interface android.content.pm.IPackageInstallObserver { *; }
20 | -keep class android.content.pm.IPackageInstallObserver$Stub { *; }
21 | -keep public class android.preference.MultiSelectListPreference { *; }
22 | -keep public class com.google.protobuf.ExtensionRegistryLite { *; }
23 | -keep public class com.google.protobuf.ExtensionRegistry { *; }
24 | -keep final class com.google.protobuf.ExtensionRegistryFactory { *; }
25 | -keep public class android.support.v4.content.FileProvider { *; }
26 | -keep public class android.util.LruCache { *; }
27 | -keep public class com.github.yeriomin.yalpstore.install.InstallerPrivilegedReflection$* { *; }
28 | -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*,!code/allocation/variable
29 | -dontwarn sun.misc.Unsafe
30 | -optimizationpasses 5
31 | -allowaccessmodification
32 | -dontskipnonpubliclibraryclasses
33 | -renamesourcefileattribute SourceFile
34 | -keepattributes SourceFile,LineNumberTable
--------------------------------------------------------------------------------
/app/src/contemporary/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/contemporary/java/com/github/yeriomin/yalpstore/SearchActivity.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore;
21 |
22 | import android.support.v7.widget.SearchView;
23 | import android.view.Menu;
24 |
25 | public class SearchActivity extends SearchActivityAbstract {
26 |
27 | @Override
28 | protected void search(String query, boolean isPackageName) {
29 | if (isPackageName) {
30 | startActivity(DetailsActivity.getDetailsIntent(this, query));
31 | finish();
32 | } else {
33 | onNewIntent(getSearchIntent(query));
34 | }
35 | }
36 |
37 | @Override
38 | public boolean onCreateOptionsMenu(Menu menu) {
39 | boolean result = super.onCreateOptionsMenu(menu);
40 | ((SearchView) menu.findItem(R.id.action_search).getActionView()).setQuery(query,false);
41 | return result;
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/app/src/contemporary/java/com/github/yeriomin/yalpstore/fragment/preference/PreferenceFragment.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.fragment.preference;
21 |
22 | import android.os.Bundle;
23 | import android.support.annotation.Nullable;
24 |
25 | import com.github.yeriomin.yalpstore.PreferenceActivity;
26 | import com.github.yeriomin.yalpstore.R;
27 |
28 | public class PreferenceFragment extends android.preference.PreferenceFragment {
29 |
30 | @Override
31 | public void onCreate(@Nullable Bundle savedInstanceState) {
32 | super.onCreate(savedInstanceState);
33 | addPreferencesFromResource(R.xml.settings);
34 | new AllPreferences((PreferenceActivity) getActivity()).draw();
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/app/src/contemporary/java/com/github/yeriomin/yalpstore/task/LoadCircularImageTask.java:
--------------------------------------------------------------------------------
1 | package com.github.yeriomin.yalpstore.task;
2 |
3 | import android.graphics.Bitmap;
4 | import android.graphics.drawable.Drawable;
5 | import android.support.v4.graphics.drawable.RoundedBitmapDrawable;
6 | import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory;
7 | import android.widget.ImageView;
8 |
9 | public class LoadCircularImageTask extends LoadImageTask {
10 |
11 | private boolean cropCircle = false;
12 |
13 | public LoadImageTask setCropCircle(boolean cropCircle) {
14 | this.cropCircle = cropCircle;
15 | return this;
16 | }
17 |
18 | public LoadCircularImageTask(ImageView imageView) {
19 | super(imageView);
20 | }
21 |
22 | @Override
23 | protected Drawable getDrawable(Bitmap bitmap) {
24 | if (cropCircle) {
25 | RoundedBitmapDrawable roundedBitmapDrawable = RoundedBitmapDrawableFactory.create(imageView.getResources(), bitmap);
26 | roundedBitmapDrawable.setCircular(true);
27 | roundedBitmapDrawable.setAntiAlias(true);
28 | return roundedBitmapDrawable;
29 | } else {
30 | return super.getDrawable(bitmap);
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/app/src/contemporary/java/com/github/yeriomin/yalpstore/view/InstalledAppsMainButtonAdapter.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.view;
21 |
22 | import android.support.design.widget.FloatingActionButton;
23 | import android.view.View;
24 |
25 | import com.github.yeriomin.yalpstore.R;
26 |
27 | public class InstalledAppsMainButtonAdapter extends InstalledAppsMainButtonAdapterAbstract {
28 |
29 | public InstalledAppsMainButtonAdapter(View button) {
30 | super(button);
31 | }
32 |
33 | @Override
34 | public InstalledAppsMainButtonAdapterAbstract init() {
35 | ((FloatingActionButton) button).setImageResource(R.drawable.ic_refresh);
36 | return super.init();
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/app/src/contemporary/java/com/github/yeriomin/yalpstore/view/UpdatableAppsButtonAdapter.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.view;
21 |
22 | import android.support.design.widget.FloatingActionButton;
23 | import android.view.View;
24 |
25 | import com.github.yeriomin.yalpstore.R;
26 |
27 | public class UpdatableAppsButtonAdapter extends UpdatableAppsButtonAdapterAbstract {
28 |
29 | public UpdatableAppsButtonAdapter(View button) {
30 | super(button);
31 | }
32 |
33 | @Override
34 | public UpdatableAppsButtonAdapterAbstract setReady() {
35 | ((FloatingActionButton) button).setImageResource(R.drawable.ic_download);
36 | return super.setReady();
37 | }
38 |
39 | @Override
40 | public UpdatableAppsButtonAdapterAbstract setUpdating() {
41 | ((FloatingActionButton) button).setImageResource(R.drawable.ic_cancel);
42 | return super.setUpdating();
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/app/src/contemporary/res/drawable-v21/ic_menu.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/contemporary/res/drawable/button_border.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/contemporary/res/drawable/ic_menu.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/contemporary/res/layout/applist_main_button.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/contemporary/res/layout/details_permissions.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
18 |
19 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/contemporary/res/layout/details_screenshots.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
19 |
20 |
--------------------------------------------------------------------------------
/app/src/contemporary/res/layout/preferences_layout.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/contemporary/res/layout/search_view_layout.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
--------------------------------------------------------------------------------
/app/src/contemporary/res/layout/suggestion_list_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
13 |
14 |
20 |
21 |
--------------------------------------------------------------------------------
/app/src/contemporary/res/menu/menu_accounts.xml:
--------------------------------------------------------------------------------
1 |
2 |
20 |
--------------------------------------------------------------------------------
/app/src/contemporary/res/menu/menu_drawer.xml:
--------------------------------------------------------------------------------
1 |
37 |
--------------------------------------------------------------------------------
/app/src/contemporary/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #357ec7
4 | #7f7f7f
5 |
--------------------------------------------------------------------------------
/app/src/contemporary/res/values/style.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
12 |
15 |
21 |
25 |
28 |
31 |
--------------------------------------------------------------------------------
/app/src/legacy/java/com/github/yeriomin/yalpstore/OnAppClickListener.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore;
21 |
22 | import android.view.View;
23 | import android.widget.AdapterView;
24 |
25 | import com.github.yeriomin.yalpstore.model.App;
26 |
27 | class OnAppClickListener implements AdapterView.OnItemClickListener {
28 |
29 | private AppListActivity activity;
30 |
31 | public OnAppClickListener(AppListActivity activity) {
32 | this.activity = activity;
33 | }
34 |
35 | @Override
36 | public void onItemClick(AdapterView> parent, View view, int position, long id) {
37 | App app = activity.getAppByListPosition(position);
38 | if (null == app) {
39 | return;
40 | }
41 | DetailsActivity.app = app;
42 | activity.startActivity(DetailsActivity.getDetailsIntent(activity, DetailsActivity.app.getPackageName()));
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/app/src/legacy/java/com/github/yeriomin/yalpstore/PreferenceActivity.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore;
21 |
22 | import android.os.Bundle;
23 |
24 | import com.github.yeriomin.yalpstore.fragment.preference.AllPreferences;
25 |
26 | public class PreferenceActivity extends android.preference.PreferenceActivity {
27 |
28 | @Override
29 | public void onCreate(Bundle savedInstanceState) {
30 | new ThemeManager().setTheme(this);
31 | super.onCreate(savedInstanceState);
32 | PreferenceUtil.putStringSet(this, PreferenceUtil.PREFERENCE_UPDATE_LIST, PreferenceUtil.getStringSet(this, PreferenceUtil.PREFERENCE_UPDATE_LIST));
33 | addPreferencesFromResource(R.xml.settings);
34 | new AllPreferences(this).draw();
35 | }
36 |
37 | @Override
38 | public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
39 | if (!YalpStorePermissionManager.isGranted(requestCode, permissions, grantResults)) {
40 | finish();
41 | }
42 | }
43 | }
--------------------------------------------------------------------------------
/app/src/legacy/java/com/github/yeriomin/yalpstore/SearchActivity.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore;
21 |
22 | public class SearchActivity extends SearchActivityAbstract {
23 | }
24 |
--------------------------------------------------------------------------------
/app/src/legacy/java/com/github/yeriomin/yalpstore/fragment/details/Background.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.fragment.details;
21 |
22 | import com.github.yeriomin.yalpstore.DetailsActivity;
23 | import com.github.yeriomin.yalpstore.fragment.Abstract;
24 | import com.github.yeriomin.yalpstore.model.App;
25 |
26 | public class Background extends Abstract {
27 |
28 | public Background(DetailsActivity activity, App app) {
29 | super(activity, app);
30 | }
31 |
32 | @Override
33 | public void draw() {
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/app/src/legacy/java/com/github/yeriomin/yalpstore/view/InstalledAppsMainButtonAdapter.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.view;
21 |
22 | import android.view.View;
23 | import android.widget.Button;
24 |
25 | import com.github.yeriomin.yalpstore.R;
26 |
27 | public class InstalledAppsMainButtonAdapter extends InstalledAppsMainButtonAdapterAbstract {
28 |
29 | public InstalledAppsMainButtonAdapter(View button) {
30 | super(button);
31 | }
32 |
33 | @Override
34 | public InstalledAppsMainButtonAdapterAbstract init() {
35 | ((Button) button).setText(R.string.list_check_updates);
36 | return super.init();
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/app/src/legacy/java/com/github/yeriomin/yalpstore/view/UpdatableAppsButtonAdapter.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.view;
21 |
22 | import android.view.View;
23 | import android.widget.Button;
24 |
25 | import com.github.yeriomin.yalpstore.R;
26 |
27 | public class UpdatableAppsButtonAdapter extends UpdatableAppsButtonAdapterAbstract {
28 |
29 | public UpdatableAppsButtonAdapter(View button) {
30 | super(button);
31 | }
32 |
33 | @Override
34 | public UpdatableAppsButtonAdapterAbstract setReady() {
35 | ((Button) button).setText(R.string.list_update_all);
36 | return super.setReady();
37 | }
38 |
39 | @Override
40 | public UpdatableAppsButtonAdapterAbstract setUpdating() {
41 | ((Button) button).setText(android.R.string.cancel);
42 | return super.setUpdating();
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/app/src/legacy/res/drawable-v21/ic_accounts.xml:
--------------------------------------------------------------------------------
1 |
19 |
20 |
25 |
28 |
29 |
--------------------------------------------------------------------------------
/app/src/legacy/res/drawable/ic_accounts.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/legacy/res/drawable/ic_accounts.png
--------------------------------------------------------------------------------
/app/src/legacy/res/layout/applist_main_button.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/legacy/res/layout/details_button_bar.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/legacy/res/layout/details_permissions.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
18 |
19 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/legacy/res/layout/details_screenshots.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
19 |
20 |
--------------------------------------------------------------------------------
/app/src/legacy/res/values/donottranslate.xml:
--------------------------------------------------------------------------------
1 |
2 | Yalp Store
3 |
--------------------------------------------------------------------------------
/app/src/legacy/res/xml/searchable.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/java/android/content/pm/IPackageInstallObserver.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2015-2016 Dominik Schürmann
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 android.content.pm;
18 |
19 | import android.os.Binder;
20 | import android.os.IBinder;
21 | import android.os.IInterface;
22 | import android.os.Parcel;
23 | import android.os.RemoteException;
24 |
25 | /**
26 | * Just a non-working implementation of this Stub to satisfy compiler!
27 | */
28 | public interface IPackageInstallObserver extends IInterface {
29 |
30 | abstract class Stub extends Binder implements android.content.pm.IPackageInstallObserver {
31 |
32 | public Stub() {
33 | throw new RuntimeException("Stub!");
34 | }
35 |
36 | public static android.content.pm.IPackageInstallObserver asInterface(IBinder obj) {
37 | throw new RuntimeException("Stub!");
38 | }
39 |
40 | public IBinder asBinder() {
41 | throw new RuntimeException("Stub!");
42 | }
43 |
44 | public boolean onTransact(int code, Parcel data, Parcel reply, int flags)
45 | throws RemoteException {
46 | throw new RuntimeException("Stub!");
47 | }
48 | }
49 |
50 | void packageInstalled(String packageName, int returnCode) throws RemoteException;
51 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/AppListInstallReceiver.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore;
21 |
22 | import android.content.BroadcastReceiver;
23 | import android.content.Context;
24 | import android.content.Intent;
25 | import android.content.IntentFilter;
26 |
27 | import java.lang.ref.WeakReference;
28 |
29 | public class AppListInstallReceiver extends BroadcastReceiver {
30 |
31 | private WeakReference activityRef;
32 |
33 | public AppListInstallReceiver(AppListActivity activity) {
34 | super();
35 | activityRef = new WeakReference<>(activity);
36 | IntentFilter filter = new IntentFilter();
37 | filter.addAction(GlobalInstallReceiver.ACTION_INSTALL_UI_UPDATE);
38 | activity.registerReceiver(this, filter);
39 | }
40 |
41 | @Override
42 | public void onReceive(Context context, Intent intent) {
43 | activityRef.get().onResume();
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/BootReceiver.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore;
21 |
22 | import android.content.BroadcastReceiver;
23 | import android.content.Context;
24 | import android.content.Intent;
25 |
26 | public class BootReceiver extends BroadcastReceiver {
27 |
28 | @Override
29 | public void onReceive(Context context, Intent intent) {
30 | if (!Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
31 | return;
32 | }
33 | UpdateChecker.enable(context.getApplicationContext(), getUpdateInterval(context));
34 | }
35 |
36 | static private int getUpdateInterval(Context context) {
37 | return Util.parseInt(
38 | PreferenceUtil.getDefaultSharedPreferences(context).getString(
39 | PreferenceUtil.PREFERENCE_BACKGROUND_UPDATE_INTERVAL,
40 | "-1"
41 | ),
42 | -1
43 | );
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/ConnectivityChangeReceiver.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore;
21 |
22 | import android.content.BroadcastReceiver;
23 | import android.content.Context;
24 | import android.content.Intent;
25 | import android.util.Log;
26 |
27 | import com.github.yeriomin.yalpstore.download.DownloadManager;
28 |
29 | import static android.net.ConnectivityManager.EXTRA_NO_CONNECTIVITY;
30 |
31 | public class ConnectivityChangeReceiver extends BroadcastReceiver {
32 |
33 | @Override
34 | public void onReceive(Context context, Intent intent) {
35 | if (!intent.getBooleanExtra(EXTRA_NO_CONNECTIVITY, false)) {
36 | Log.i(getClass().getSimpleName(), "Resuming downloads");
37 | DownloadManager.resumeAll();
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/CredentialsEmptyException.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore;
21 |
22 | import com.github.yeriomin.playstoreapi.AuthException;
23 |
24 | public class CredentialsEmptyException extends AuthException {
25 |
26 | public CredentialsEmptyException() {
27 | super("CredentialsEmptyException");
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/FirstLaunchChecker.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore;
21 |
22 | import android.content.Context;
23 | import android.content.SharedPreferences;
24 |
25 | public class FirstLaunchChecker {
26 |
27 | static private final String FIRST_LOGIN = "FIRST_LOGIN";
28 |
29 | private SharedPreferences prefs;
30 |
31 | public FirstLaunchChecker(Context context) {
32 | prefs = PreferenceUtil.getDefaultSharedPreferences(context);
33 | }
34 |
35 | public boolean isFirstLogin() {
36 | return prefs.getBoolean(FIRST_LOGIN, true);
37 | }
38 |
39 | public void setLoggedIn() {
40 | prefs.edit()
41 | .putBoolean(FIRST_LOGIN, false)
42 | .commit()
43 | ;
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/NotPurchasedException.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore;
21 |
22 | import java.io.IOException;
23 |
24 | public class NotPurchasedException extends IOException {
25 | }
26 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/ReviewIterator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore;
21 |
22 | import android.content.Context;
23 |
24 | import com.github.yeriomin.yalpstore.model.Review;
25 |
26 | import java.util.Iterator;
27 | import java.util.List;
28 |
29 | abstract public class ReviewIterator implements Iterator> {
30 |
31 | protected String packageName;
32 | protected Context context;
33 |
34 | protected int page = -1;
35 |
36 | public void setPackageName(String packageName) {
37 | this.packageName = packageName;
38 | }
39 |
40 | public void setContext(Context context) {
41 | this.context = context;
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/ScrollEdgeListener.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore;
21 |
22 | import android.widget.AbsListView;
23 | import android.widget.ListView;
24 |
25 | abstract public class ScrollEdgeListener implements ListView.OnScrollListener {
26 |
27 | private int lastLastitem;
28 |
29 | abstract protected void loadMore();
30 |
31 | @Override
32 | public void onScrollStateChanged(AbsListView view, int scrollState) {}
33 |
34 | @Override
35 | public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
36 | int lastItem = firstVisibleItem + visibleItemCount;
37 | boolean loadMore = lastItem >= totalItemCount;
38 | if (totalItemCount > 0 && loadMore && lastLastitem != lastItem) {
39 | lastLastitem = lastItem;
40 | loadMore();
41 | }
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/SharedPreferencesTranslator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore;
21 |
22 | import android.content.Context;
23 | import android.content.SharedPreferences;
24 |
25 | import java.util.Locale;
26 |
27 | public class SharedPreferencesTranslator {
28 |
29 | private static final String PREFIX = "translation";
30 | private SharedPreferences prefs;
31 |
32 | public SharedPreferencesTranslator(Context context) {
33 | this.prefs = context.getSharedPreferences(getClass().getName(), Context.MODE_PRIVATE);
34 | }
35 |
36 | public String getString(String id, Object... params) {
37 | return String.format(prefs.getString(getFullId(id), id), params);
38 | }
39 |
40 | public void putString(String id, String value) {
41 | prefs.edit().putString(getFullId(id), value).commit();
42 | }
43 |
44 | static private String getFullId(String partId) {
45 | return PREFIX + "_" + Locale.getDefault().getLanguage() + "_" + partId;
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/TokenDispenserMirrors.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore;
21 |
22 | public class TokenDispenserMirrors {
23 |
24 | private int n = 0;
25 |
26 | static private String[] mirrors = new String[] {
27 | "https://token-dispenser.herokuapp.com",
28 | "https://token-dispenser-mirror.herokuapp.com",
29 | "http://route-token-dispenser.193b.starter-ca-central-1.openshiftapps.com",
30 | "http://token-dispenser.duckdns.org:8080"
31 | };
32 |
33 | public void reset() {
34 | n = 0;
35 | }
36 |
37 | public String get() {
38 | if (n >= mirrors.length) {
39 | reset();
40 | }
41 | return mirrors[n++];
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/bugreport/BugReportPropertiesBuilder.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.bugreport;
21 |
22 | import android.content.Context;
23 |
24 | import java.util.Map;
25 |
26 | public class BugReportPropertiesBuilder extends BugReportBuilder {
27 |
28 | public BugReportPropertiesBuilder(Context context) {
29 | super(context);
30 | }
31 |
32 | static protected String buildProperties(Map properties) {
33 | StringBuilder stringBuilder = new StringBuilder();
34 | for (String key: properties.keySet()) {
35 | stringBuilder
36 | .append(key)
37 | .append(" = ")
38 | .append(String.valueOf(properties.get(key)))
39 | .append("\n")
40 | ;
41 | }
42 | return stringBuilder.toString();
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/delta/GDiff.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.delta;
21 |
22 | import android.content.Context;
23 |
24 | import com.github.yeriomin.yalpstore.model.App;
25 |
26 | import java.io.IOException;
27 |
28 | public class GDiff extends Patcher {
29 |
30 | public GDiff(Context context, App app) {
31 | super(context, app);
32 | }
33 |
34 | @Override
35 | protected boolean patchSpecific() throws IOException {
36 | new com.nothome.delta.GDiffPatcher().patch(originalApk, patch, destinationApk);
37 | return true;
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/delta/PatcherFactory.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.delta;
21 |
22 | import android.content.Context;
23 |
24 | import com.github.yeriomin.playstoreapi.GooglePlayAPI;
25 | import com.github.yeriomin.yalpstore.model.App;
26 |
27 | public class PatcherFactory {
28 |
29 | static public Patcher get(Context context, App app, GooglePlayAPI.PATCH_FORMAT patchFormat) {
30 | switch (patchFormat) {
31 | case GZIPPED_BSDIFF:
32 | return new BSDiff(context, app);
33 | default:
34 | return new GDiff(context, app);
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/download/RequestApk.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.download;
21 |
22 | class RequestApk extends Request {
23 |
24 | public Type getType() {
25 | return Type.APK;
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/download/RequestDelta.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.download;
21 |
22 | import com.github.yeriomin.playstoreapi.GooglePlayAPI;
23 |
24 | public class RequestDelta extends Request {
25 |
26 | private byte[] baseHash;
27 | private GooglePlayAPI.PATCH_FORMAT patchFormat;
28 |
29 | public byte[] getBaseHash() {
30 | return baseHash;
31 | }
32 |
33 | public void setBaseHash(byte[] baseHash) {
34 | this.baseHash = baseHash;
35 | }
36 |
37 | public GooglePlayAPI.PATCH_FORMAT getPatchFormat() {
38 | return patchFormat;
39 | }
40 |
41 | public void setPatchFormat(GooglePlayAPI.PATCH_FORMAT patchFormat) {
42 | this.patchFormat = patchFormat;
43 | }
44 |
45 | @Override
46 | public Type getType() {
47 | return Type.DELTA;
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/download/RequestObb.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.download;
21 |
22 | public class RequestObb extends Request {
23 |
24 | private boolean main;
25 | private int versionCode;
26 |
27 | public boolean isMain() {
28 | return main;
29 | }
30 |
31 | public void setMain(boolean main) {
32 | this.main = main;
33 | }
34 |
35 | public int getVersionCode() {
36 | return versionCode;
37 | }
38 |
39 | public void setVersionCode(int versionCode) {
40 | this.versionCode = versionCode;
41 | }
42 |
43 | @Override
44 | public Type getType() {
45 | return main ? Type.OBB_MAIN : Type.OBB_PATCH;
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/download/RequestSplit.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.download;
21 |
22 | public class RequestSplit extends Request {
23 |
24 | private String name;
25 |
26 | public String getName() {
27 | return name;
28 | }
29 |
30 | public void setName(String name) {
31 | this.name = name;
32 | }
33 |
34 | @Override
35 | public Type getType() {
36 | return Type.SPLIT;
37 | }
38 |
39 | @Override
40 | public String getTypeName() {
41 | return Type.SPLIT + "_" + name;
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/fragment/Abstract.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.fragment;
21 |
22 | import android.widget.TextView;
23 |
24 | import com.github.yeriomin.yalpstore.YalpStoreActivity;
25 | import com.github.yeriomin.yalpstore.model.App;
26 |
27 | public abstract class Abstract {
28 |
29 | protected YalpStoreActivity activity;
30 | protected App app;
31 |
32 | abstract public void draw();
33 |
34 | public Abstract(YalpStoreActivity activity, App app) {
35 | this.activity = activity;
36 | this.app = app;
37 | }
38 |
39 | protected void setText(int viewId, String text) {
40 | ((TextView) activity.findViewById(viewId)).setText(text);
41 | }
42 |
43 | protected void setText(int viewId, int stringId, Object... text) {
44 | setText(viewId, activity.getString(stringId, text));
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/fragment/preference/Abstract.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.fragment.preference;
21 |
22 | import com.github.yeriomin.yalpstore.PreferenceActivity;
23 |
24 | public abstract class Abstract {
25 |
26 | protected PreferenceActivity activity;
27 |
28 | abstract public void draw();
29 |
30 | public Abstract(PreferenceActivity activity) {
31 | this.activity = activity;
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/fragment/preference/InstallationMethod.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.fragment.preference;
21 |
22 | import android.preference.ListPreference;
23 | import android.preference.Preference;
24 |
25 | import com.github.yeriomin.yalpstore.PreferenceActivity;
26 |
27 | public class InstallationMethod extends Abstract {
28 |
29 | private ListPreference installationMethod;
30 |
31 | public InstallationMethod(PreferenceActivity activity) {
32 | super(activity);
33 | }
34 |
35 | public void setInstallationMethodPreference(ListPreference installationMethod) {
36 | this.installationMethod = installationMethod;
37 | }
38 |
39 | @Override
40 | public void draw() {
41 | Preference.OnPreferenceChangeListener listener = new OnInstallationMethodChangeListener(activity);
42 | listener.onPreferenceChange(installationMethod, installationMethod.getValue());
43 | installationMethod.setOnPreferenceChangeListener(listener);
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/model/Dao.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.model;
21 |
22 | import android.database.sqlite.SQLiteDatabase;
23 |
24 | public class Dao {
25 |
26 | protected SQLiteDatabase db;
27 |
28 | public Dao(SQLiteDatabase db) {
29 | this.db = db;
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/model/ImageSource.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.model;
21 |
22 | import android.content.pm.ApplicationInfo;
23 |
24 | public class ImageSource {
25 |
26 | private String url;
27 | private ApplicationInfo applicationInfo;
28 | private boolean fullSize;
29 |
30 | public ImageSource() {
31 | }
32 |
33 | public ImageSource(String url) {
34 | setUrl(url);
35 | }
36 |
37 | public void setUrl(String url) {
38 | this.url = url;
39 | }
40 |
41 | public void setApplicationInfo(ApplicationInfo applicationInfo) {
42 | this.applicationInfo = applicationInfo;
43 | }
44 |
45 | public String getUrl() {
46 | return url;
47 | }
48 |
49 | public ApplicationInfo getApplicationInfo() {
50 | return applicationInfo;
51 | }
52 |
53 | public boolean isFullSize() {
54 | return fullSize;
55 | }
56 |
57 | public ImageSource setFullSize(boolean fullSize) {
58 | this.fullSize = fullSize;
59 | return this;
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/model/Rating.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.model;
21 |
22 | public class Rating {
23 |
24 | private float average;
25 | private int[] stars = new int[5];
26 |
27 | public float getAverage() {
28 | return average;
29 | }
30 |
31 | public void setAverage(float average) {
32 | this.average = average;
33 | }
34 |
35 | public int getStars(int starNum) {
36 | return stars[starNum - 1];
37 | }
38 |
39 | public void setStars(int starNum, int ratings) {
40 | stars[starNum - 1] = ratings;
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/model/ReviewBuilder.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.model;
21 |
22 | import com.github.yeriomin.playstoreapi.GooglePlayAPI;
23 | import com.github.yeriomin.playstoreapi.Image;
24 |
25 | public class ReviewBuilder {
26 |
27 | public static Review build(com.github.yeriomin.playstoreapi.Review reviewProto) {
28 | Review review = new Review();
29 | review.setComment(reviewProto.getComment());
30 | review.setTitle(reviewProto.getTitle());
31 | review.setRating(reviewProto.getStarRating());
32 | review.setUserName(reviewProto.getUserProfile().getName());
33 | for (Image image: reviewProto.getUserProfile().getImageList()) {
34 | if (image.getImageType() == GooglePlayAPI.IMAGE_TYPE_APP_ICON) {
35 | review.setUserPhotoUrl(image.getImageUrl());
36 | }
37 | }
38 | review.setGooglePlusUrl(reviewProto.getUserProfile().getGooglePlusUrl());
39 | return review;
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/notification/CancelDownloadReceiver.java:
--------------------------------------------------------------------------------
1 | package com.github.yeriomin.yalpstore.notification;
2 |
3 | import android.content.Context;
4 | import android.content.Intent;
5 | import android.text.TextUtils;
6 |
7 | import com.github.yeriomin.yalpstore.PackageSpecificReceiver;
8 | import com.github.yeriomin.yalpstore.download.DownloadManager;
9 |
10 | public class CancelDownloadReceiver extends PackageSpecificReceiver {
11 |
12 | public static final String ACTION_CANCEL_DOWNLOAD = "ACTION_CANCEL_DOWNLOAD";
13 |
14 | @Override
15 | public void onReceive(Context context, Intent intent) {
16 | super.onReceive(context, intent);
17 | if (TextUtils.isEmpty(packageName)) {
18 | return;
19 | }
20 | new DownloadManager(context).cancel(packageName);
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/notification/NotificationBuilderIcs.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.notification;
21 |
22 | import android.annotation.TargetApi;
23 | import android.content.Context;
24 | import android.os.Build;
25 |
26 | @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
27 | class NotificationBuilderIcs extends NotificationBuilderHoneycomb {
28 |
29 | @Override
30 | public NotificationBuilder setProgress(int max, int progress) {
31 | super.setProgress(max, progress);
32 | builder.setProgress(max, progress, false);
33 | return this;
34 | }
35 |
36 | public NotificationBuilderIcs(Context context) {
37 | super(context);
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/notification/NotificationBuilderJellybean.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.notification;
21 |
22 | import android.annotation.TargetApi;
23 | import android.app.PendingIntent;
24 | import android.content.Context;
25 | import android.os.Build;
26 |
27 | @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
28 | class NotificationBuilderJellybean extends NotificationBuilderIcs {
29 |
30 | @Override
31 | public NotificationBuilder addAction(int iconId, int stringId, PendingIntent pendingIntent) {
32 | builder.addAction(iconId, context.getString(stringId), pendingIntent);
33 | return this;
34 | }
35 |
36 | public NotificationBuilderJellybean(Context context) {
37 | super(context);
38 | }
39 |
40 | @Override
41 | public NotificationBuilder setTitle(String title) {
42 | builder.setPriority(title.hashCode());
43 | return super.setTitle(title);
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/notification/NotificationBuilderKitkatWatch.java:
--------------------------------------------------------------------------------
1 | package com.github.yeriomin.yalpstore.notification;
2 |
3 | import android.annotation.TargetApi;
4 | import android.content.Context;
5 | import android.os.Build;
6 |
7 | @TargetApi(Build.VERSION_CODES.KITKAT_WATCH)
8 | class NotificationBuilderKitkatWatch extends NotificationBuilderJellybean {
9 |
10 | public NotificationBuilderKitkatWatch(Context context) {
11 | super(context);
12 | }
13 |
14 | @Override
15 | public NotificationBuilder setTitle(String title) {
16 | builder.setSortKey(title);
17 | return super.setTitle(title);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/notification/SignatureCheckReceiver.java:
--------------------------------------------------------------------------------
1 | package com.github.yeriomin.yalpstore.notification;
2 |
3 | import android.content.Context;
4 | import android.content.Intent;
5 | import android.text.TextUtils;
6 | import android.util.Log;
7 |
8 | import com.github.yeriomin.yalpstore.PackageSpecificReceiver;
9 | import com.github.yeriomin.yalpstore.download.DownloadManager;
10 | import com.github.yeriomin.yalpstore.install.InstallerDefault;
11 | import com.github.yeriomin.yalpstore.task.InstallTask;
12 |
13 | public class SignatureCheckReceiver extends PackageSpecificReceiver {
14 |
15 | static public final String ACTION_CHECK_APK = "ACTION_CHECK_APK";
16 |
17 | @Override
18 | public void onReceive(Context context, Intent intent) {
19 | super.onReceive(context, intent);
20 | if (TextUtils.isEmpty(packageName)) {
21 | return;
22 | }
23 | Log.i(getClass().getSimpleName(), "Launching installer for " + packageName);
24 | InstallerDefault installerDefault = new InstallerDefault(context);
25 | installerDefault.setBackground(false);
26 | new InstallTask(installerDefault, DownloadManager.getApp(packageName)).execute();
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/selfupdate/UpdaterFactory.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.selfupdate;
21 |
22 | import android.content.Context;
23 |
24 | public class UpdaterFactory {
25 |
26 | static public Updater get(Context context) {
27 | return Signature.isFdroid(context) ? new UpdaterFdroid(context) : new UpdaterGithub(context);
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/selfupdate/UpdaterFdroid.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.selfupdate;
21 |
22 | import android.content.Context;
23 |
24 | class UpdaterFdroid extends Updater {
25 |
26 | public UpdaterFdroid(Context context) {
27 | super(context);
28 | }
29 |
30 | @Override
31 | public String getUrlString(int versionCode) {
32 | return "https://f-droid.org/repo/com.github.yeriomin.yalpstore_" + versionCode + ".apk";
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/selfupdate/UpdaterGithub.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.selfupdate;
21 |
22 | import android.content.Context;
23 |
24 | class UpdaterGithub extends Updater {
25 |
26 | public UpdaterGithub(Context context) {
27 | super(context);
28 | }
29 |
30 | @Override
31 | public String getUrlString(int versionCode) {
32 | return "https://github.com/yeriomin/YalpStore/releases/download/0." + versionCode + "/com.github.yeriomin.yalpstore_" + versionCode + ".apk";
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/task/BitmapCacheCleanupTask.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.task;
21 |
22 | import android.content.Context;
23 |
24 | import com.github.yeriomin.yalpstore.BitmapManager;
25 |
26 | import java.io.File;
27 |
28 | public class BitmapCacheCleanupTask extends CleanupTask {
29 |
30 | public BitmapCacheCleanupTask(Context context) {
31 | super(context);
32 | }
33 |
34 | @Override
35 | protected boolean shouldDelete(File file) {
36 | return file.getName().endsWith(".png")
37 | && file.lastModified() + BitmapManager.VALID_MILLIS < System.currentTimeMillis()
38 | ;
39 | }
40 |
41 | @Override
42 | protected File[] getFiles() {
43 | return contextRef.get().getCacheDir().listFiles();
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/task/CleanupTask.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.task;
21 |
22 | import android.content.Context;
23 |
24 | import java.io.File;
25 | import java.lang.ref.WeakReference;
26 |
27 | abstract public class CleanupTask extends LowCpuIntensityTask {
28 |
29 | protected WeakReference contextRef;
30 |
31 | public CleanupTask(Context context) {
32 | this.contextRef = new WeakReference<>(context);
33 | }
34 |
35 | abstract protected boolean shouldDelete(File file);
36 | abstract protected File[] getFiles();
37 |
38 | @Override
39 | protected Void doInBackground(Void... voids) {
40 | if (null == contextRef.get()) {
41 | return null;
42 | }
43 | File[] files = getFiles();
44 | if (null == files) {
45 | return null;
46 | }
47 | for (File file: files) {
48 | if (shouldDelete(file)) {
49 | file.delete();
50 | }
51 | }
52 | return null;
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/task/ConvertToNormalTask.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.task;
21 |
22 | import android.app.Activity;
23 |
24 | import com.github.yeriomin.yalpstore.model.App;
25 |
26 | import java.util.ArrayList;
27 | import java.util.List;
28 |
29 | public class ConvertToNormalTask extends SystemRemountTask {
30 |
31 | public ConvertToNormalTask(Activity activity, App app) {
32 | super(activity, app);
33 | }
34 |
35 | @Override
36 | protected List getCommands() {
37 | List commands = new ArrayList<>();
38 | String from = app.getPackageInfo().applicationInfo.sourceDir;
39 | commands.add(getBusyboxCommand("mv " + from + " /data/app"));
40 | return commands;
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/task/InstallTask.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.task;
21 |
22 | import android.content.Context;
23 | import android.os.AsyncTask;
24 |
25 | import com.github.yeriomin.yalpstore.install.InstallerAbstract;
26 | import com.github.yeriomin.yalpstore.install.InstallerFactory;
27 | import com.github.yeriomin.yalpstore.model.App;
28 |
29 | public class InstallTask extends AsyncTask {
30 |
31 | private App app;
32 | private InstallerAbstract installer;
33 |
34 | public InstallTask(Context context, App app) {
35 | this(InstallerFactory.get(context), app);
36 | }
37 |
38 | public InstallTask(InstallerAbstract installer, App app) {
39 | this.installer = installer;
40 | this.app = app;
41 | }
42 |
43 | @Override
44 | protected Void doInBackground(Void... voids) {
45 | installer.verifyAndInstall(app);
46 | return null;
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/task/OldApkCleanupTask.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.task;
21 |
22 | import android.content.Context;
23 |
24 | import java.io.File;
25 |
26 | public class OldApkCleanupTask extends CleanupTask {
27 |
28 | static public final long VALID_MILLIS = 1000*60*60*24;
29 |
30 | private boolean deleteAll;
31 |
32 | public void setDeleteAll(boolean deleteAll) {
33 | this.deleteAll = deleteAll;
34 | }
35 |
36 | public OldApkCleanupTask(Context context) {
37 | super(context);
38 | }
39 |
40 | @Override
41 | protected boolean shouldDelete(File file) {
42 | return file.getName().endsWith(".apk")
43 | && (deleteAll || file.lastModified() + VALID_MILLIS < System.currentTimeMillis())
44 | ;
45 | }
46 |
47 | @Override
48 | protected File[] getFiles() {
49 | return contextRef.get().getFilesDir().listFiles();
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/task/RebootTask.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.task;
21 |
22 | import android.os.AsyncTask;
23 |
24 | import eu.chainfire.libsuperuser.Shell;
25 |
26 | public class RebootTask extends AsyncTask {
27 |
28 | @Override
29 | protected Void doInBackground(Void... params) {
30 | Shell.SU.run("reboot");
31 | return null;
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/task/UninstallSystemAppTask.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.task;
21 |
22 | import android.app.Activity;
23 |
24 | import com.github.yeriomin.yalpstore.model.App;
25 |
26 | import java.util.ArrayList;
27 | import java.util.List;
28 |
29 | public class UninstallSystemAppTask extends SystemRemountTask {
30 |
31 | public UninstallSystemAppTask(Activity activity, App app) {
32 | super(activity, app);
33 | }
34 |
35 | @Override
36 | protected List getCommands() {
37 | List commands = new ArrayList<>();
38 | String from = app.getPackageInfo().applicationInfo.sourceDir;
39 | commands.add("am force-stop " + app.getPackageName());
40 | commands.add(getBusyboxCommand("rm -rf " + from));
41 | return commands;
42 | }
43 |
44 | @Override
45 | protected void onPostExecute(List output) {
46 | super.onPostExecute(output);
47 | app.setInstalled(false);
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/task/playstore/AppProvidedCredentialsTask.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.task.playstore;
21 |
22 | import android.app.Activity;
23 |
24 | import com.github.yeriomin.yalpstore.view.CredentialsDialogBuilder;
25 | import com.github.yeriomin.yalpstore.view.LoginDialogBuilder;
26 |
27 | import java.io.IOException;
28 |
29 | public abstract class AppProvidedCredentialsTask extends CheckCredentialsTask {
30 |
31 | abstract protected void payload() throws IOException;
32 |
33 | @Override
34 | protected CredentialsDialogBuilder getDialogBuilder() {
35 | return new LoginDialogBuilder((Activity) context);
36 | }
37 |
38 | @Override
39 | protected Void doInBackground(String[] params) {
40 | try {
41 | payload();
42 | } catch (IOException e) {
43 | exception = e;
44 | }
45 | return null;
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/task/playstore/BackgroundCategoryTask.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.task.playstore;
21 |
22 | import android.os.Build;
23 |
24 | import com.github.yeriomin.yalpstore.YalpStoreActivity;
25 |
26 | public class BackgroundCategoryTask extends CategoryTask {
27 |
28 | @Override
29 | protected void fill() {
30 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB && context instanceof YalpStoreActivity) {
31 | ((YalpStoreActivity) context).invalidateOptionsMenu();
32 | }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/task/playstore/BackgroundPurchaseTask.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.task.playstore;
21 |
22 | import com.github.yeriomin.playstoreapi.AndroidAppDeliveryData;
23 | import com.github.yeriomin.yalpstore.DetailsActivity;
24 | import com.github.yeriomin.yalpstore.R;
25 | import com.github.yeriomin.yalpstore.notification.NotificationManagerWrapper;
26 |
27 | class BackgroundPurchaseTask extends PurchaseTask {
28 |
29 | @Override
30 | protected void onPostExecute(AndroidAppDeliveryData deliveryData) {
31 | super.onPostExecute(deliveryData);
32 | if (!success()) {
33 | new NotificationManagerWrapper(context).show(
34 | app.getPackageName(),
35 | DetailsActivity.getDetailsIntent(context, app.getPackageName()),
36 | app.getDisplayName(),
37 | context.getString(R.string.error_could_not_download)
38 | );
39 | }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/task/playstore/BetaToggleTask.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.task.playstore;
21 |
22 | import com.github.yeriomin.playstoreapi.GooglePlayAPI;
23 | import com.github.yeriomin.yalpstore.model.App;
24 |
25 | import java.io.IOException;
26 |
27 | public class BetaToggleTask extends PlayStorePayloadTask {
28 |
29 | private App app;
30 |
31 | public BetaToggleTask(App app) {
32 | this.app = app;
33 | }
34 |
35 | @Override
36 | protected Void getResult(GooglePlayAPI api, String... arguments) throws IOException {
37 | api.testingProgram(app.getPackageName(), !app.isTestingProgramOptedIn());
38 | return null;
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/task/playstore/CloneableTask.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.task.playstore;
21 |
22 | public interface CloneableTask {
23 |
24 | CloneableTask clone();
25 | }
26 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/task/playstore/DependencyTranslationTask.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.task.playstore;
21 |
22 | import com.github.yeriomin.playstoreapi.GooglePlayAPI;
23 | import com.github.yeriomin.yalpstore.model.App;
24 |
25 | import java.io.IOException;
26 | import java.util.HashMap;
27 | import java.util.List;
28 | import java.util.Map;
29 |
30 | public class DependencyTranslationTask extends RemoteAppListTask {
31 |
32 | protected Map translated = new HashMap<>();
33 |
34 | @Override
35 | protected List getResult(GooglePlayAPI api, String... packageNames) throws IOException {
36 | List result = super.getResult(api, packageNames);
37 | for (App app: result) {
38 | translated.put(app.getPackageName(), app.getDisplayName());
39 | }
40 | return result;
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/task/playstore/DetailsCategoryTask.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.task.playstore;
21 |
22 | import com.github.yeriomin.yalpstore.widget.Badge;
23 |
24 | import java.lang.ref.WeakReference;
25 |
26 | public class DetailsCategoryTask extends CategoryTask {
27 |
28 | private String categoryId;
29 | private WeakReference categoryViewRef = new WeakReference<>(null);
30 |
31 | public void setCategoryId(String categoryId) {
32 | this.categoryId = categoryId;
33 | }
34 |
35 | public void setCategoryView(Badge categoryView) {
36 | this.categoryViewRef = new WeakReference<>(categoryView);
37 | }
38 |
39 | @Override
40 | protected void fill() {
41 | Badge categoryView = categoryViewRef.get();
42 | if (null != categoryView) {
43 | categoryView.setLabel(manager.getCategoryName(categoryId));
44 | }
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/task/playstore/LoginTask.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.task.playstore;
21 |
22 | import com.github.yeriomin.yalpstore.PlayStoreApiAuthenticator;
23 |
24 | import java.io.IOException;
25 |
26 | public class LoginTask extends AppProvidedCredentialsTask {
27 |
28 | @Override
29 | protected void payload() throws IOException {
30 | new PlayStoreApiAuthenticator(context).login();
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/task/playstore/RefreshTokenTask.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.task.playstore;
21 |
22 | import com.github.yeriomin.yalpstore.PlayStoreApiAuthenticator;
23 |
24 | import java.io.IOException;
25 |
26 | public class RefreshTokenTask extends AppProvidedCredentialsTask {
27 |
28 | @Override
29 | public void setCaller(PlayStoreTask caller) {
30 | super.setCaller(caller);
31 | setProgressIndicator(caller.getProgressIndicator());
32 | }
33 |
34 | @Override
35 | protected void payload() throws IOException {
36 | new PlayStoreApiAuthenticator(context).refreshToken();
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/view/ButtonAdapter.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.view;
21 |
22 | import android.view.View;
23 |
24 | public abstract class ButtonAdapter {
25 |
26 | protected View button;
27 |
28 | public ButtonAdapter(View button) {
29 | this.button = button;
30 | }
31 |
32 | public ButtonAdapter show() {
33 | button.setVisibility(View.VISIBLE);
34 | return this;
35 | }
36 |
37 | public ButtonAdapter hide() {
38 | button.setVisibility(View.GONE);
39 | return this;
40 | }
41 |
42 | public ButtonAdapter enable() {
43 | button.setEnabled(true);
44 | return this;
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/view/CredentialsDialogBuilder.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.view;
21 |
22 | import android.app.Activity;
23 |
24 | import com.github.yeriomin.yalpstore.task.playstore.PlayStoreTask;
25 |
26 | abstract public class CredentialsDialogBuilder extends DialogWrapper {
27 |
28 | protected PlayStoreTask caller;
29 |
30 | public CredentialsDialogBuilder(Activity activity) {
31 | super(activity);
32 | }
33 |
34 | public void setCaller(PlayStoreTask caller) {
35 | this.caller = caller;
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/view/HttpTaskOnClickListener.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.view;
21 |
22 | import android.view.View;
23 |
24 | import com.github.yeriomin.yalpstore.ContextUtil;
25 | import com.github.yeriomin.yalpstore.NetworkUtil;
26 | import com.github.yeriomin.yalpstore.R;
27 | import com.github.yeriomin.yalpstore.task.HttpTask;
28 |
29 | public class HttpTaskOnClickListener implements View.OnClickListener {
30 |
31 | private HttpTask task;
32 |
33 | public HttpTaskOnClickListener(HttpTask task) {
34 | this.task = task;
35 | }
36 |
37 | @Override
38 | public void onClick(View v) {
39 | if (NetworkUtil.isNetworkAvailable(v.getContext())) {
40 | task.executeOnExecutorIfPossible();
41 | } else {
42 | ContextUtil.toast(v.getContext(), R.string.error_no_network);
43 | }
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/view/InstalledAppsMainButtonAdapterAbstract.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.view;
21 |
22 | import android.content.Intent;
23 | import android.view.View;
24 |
25 | import com.github.yeriomin.yalpstore.UpdatableAppsActivity;
26 |
27 | public class InstalledAppsMainButtonAdapterAbstract extends ButtonAdapter {
28 |
29 | public InstalledAppsMainButtonAdapterAbstract(final View button) {
30 | super(button);
31 | }
32 |
33 | public InstalledAppsMainButtonAdapterAbstract init() {
34 | enable();
35 | show();
36 | button.setOnClickListener(new View.OnClickListener() {
37 | @Override
38 | public void onClick(View view) {
39 | button.getContext().startActivity(new Intent(button.getContext(), UpdatableAppsActivity.class));
40 | }
41 | });
42 | return this;
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/view/ProgressIndicator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.view;
21 |
22 | import android.view.View;
23 |
24 | import com.github.yeriomin.yalpstore.R;
25 |
26 | public class ProgressIndicator extends ListItem {
27 |
28 | @Override
29 | public void draw() {
30 | view.findViewById(R.id.more).setVisibility(View.GONE);
31 | view.findViewById(R.id.app).setVisibility(View.GONE);
32 | view.findViewById(R.id.progress).setVisibility(View.VISIBLE);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/view/UpdatableAppBadge.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.view;
21 |
22 | import android.content.Context;
23 | import android.text.TextUtils;
24 |
25 | import com.github.yeriomin.yalpstore.R;
26 |
27 | public class UpdatableAppBadge extends AppBadge {
28 |
29 | @Override
30 | public void draw() {
31 | if (null == view) {
32 | return;
33 | }
34 | line2.clear();
35 | line3.clear();
36 | Context c = view.getContext();
37 | String updated = app.getUpdated();
38 | if (!TextUtils.isEmpty(updated)) {
39 | line2.add(c.getString(R.string.list_line_2_updatable, updated));
40 | }
41 | if (app.isSystem()) {
42 | line3.add(c.getString(R.string.list_app_system));
43 | }
44 | super.draw();
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/yeriomin/yalpstore/view/UriOnClickListener.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Yalp Store
3 | * Copyright (C) 2018 Sergey Yeriomin
4 | *
5 | * This program is free software; you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation; either version 2 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License along
16 | * with this program; if not, write to the Free Software Foundation, Inc.,
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 | */
19 |
20 | package com.github.yeriomin.yalpstore.view;
21 |
22 | import android.content.ActivityNotFoundException;
23 | import android.content.Context;
24 | import android.content.Intent;
25 | import android.net.Uri;
26 | import android.util.Log;
27 |
28 | public class UriOnClickListener extends IntentOnClickListener {
29 |
30 | private String uriString;
31 |
32 | public UriOnClickListener(Context context, String uriString) {
33 | super(context);
34 | this.uriString = uriString;
35 | }
36 |
37 | @Override
38 | protected Intent buildIntent() {
39 | return new Intent(Intent.ACTION_VIEW, Uri.parse(uriString));
40 | }
41 |
42 | @Override
43 | protected void onActivityNotFound(ActivityNotFoundException e) {
44 | Log.e(getClass().getSimpleName(), "Could not find activity for uri " + uriString);
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_about.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_add.xml:
--------------------------------------------------------------------------------
1 |
19 |
20 |
25 |
28 |
29 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_apps.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_arrow_drop_down.xml:
--------------------------------------------------------------------------------
1 |
19 |
20 |
25 |
28 |
29 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_bug_report.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_cancel.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_categories.xml:
--------------------------------------------------------------------------------
1 |
19 |
20 |
25 |
28 |
31 |
34 |
35 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_check.xml:
--------------------------------------------------------------------------------
1 |
19 |
20 |
25 |
28 |
29 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_chevron_left.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_chevron_right.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_circle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_delete.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_download.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_edit.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_events.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_expand_less.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_expand_more.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_filter.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_google_play.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_instant_app.xml:
--------------------------------------------------------------------------------
1 |
6 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_link.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_logout.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_more.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_more_vert.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_notification.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_permission_android.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_permission_google.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_permission_unknown.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_placeholder.xml:
--------------------------------------------------------------------------------
1 |
3 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_refresh.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_search.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_settings.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_share.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_star.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_storage.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_video.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_visibility_off.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_visibility_on.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_wishlist_plus.xml:
--------------------------------------------------------------------------------
1 |
6 |
10 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_wishlist_tick.xml:
--------------------------------------------------------------------------------
1 |
6 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_about.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_about.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_add.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_apps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_apps.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_arrow_drop_down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_arrow_drop_down.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_bug_report.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_bug_report.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_cancel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_cancel.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_categories.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_categories.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_check.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_check.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_chevron_left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_chevron_left.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_chevron_right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_chevron_right.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_circle.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_delete.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_download.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_download.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_download_animation.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_download_animation_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_download_animation_1.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_download_animation_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_download_animation_2.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_download_animation_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_download_animation_3.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_download_animation_4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_download_animation_4.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_download_animation_5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_download_animation_5.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_download_animation_6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_download_animation_6.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_edit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_edit.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_events.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_events.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_exodus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_exodus.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_expand_less.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_expand_less.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_expand_more.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_expand_more.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_fdroid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_fdroid.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_filter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_filter.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_google_play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_google_play.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_instant_app.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_instant_app.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
6 |
8 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_link.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_link.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_logout.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_logout.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_more.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_more.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_more_vert.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_more_vert.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_notification.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_notification.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_permission_android.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_permission_android.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_permission_google.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_permission_google.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_permission_unknown.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_permission_unknown.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_placeholder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_placeholder.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_refresh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_refresh.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_search.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_settings.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_share.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_share.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_star.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_storage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_storage.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_video.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_video.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_visibility_off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_visibility_off.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_visibility_on.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_visibility_on.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_wishlist_plus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_wishlist_plus.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_wishlist_tick.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/drawable/ic_wishlist_tick.png
--------------------------------------------------------------------------------
/app/src/main/res/layout-v21/permission_group_widget_layout.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
22 |
23 |
26 |
27 |
37 |
38 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/applist_activity_layout.xml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
11 |
12 |
21 |
22 |
26 |
27 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/badge_widget_layout.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 |
12 |
13 |
19 |
20 |
21 |
22 |
27 |
28 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/deviceinfo_activity_layout.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/expansion_panel_widget_layout.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
17 |
18 |
27 |
28 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fullscreen_image_activity_layout.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/list_activity_layout.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
19 |
20 |
24 |
25 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/permission_group_widget_layout.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
22 |
23 |
26 |
27 |
37 |
38 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/review_dialog_layout.xml:
--------------------------------------------------------------------------------
1 |
8 |
9 |
15 |
16 |
23 |
24 |
31 |
32 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi-v24/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/mipmap-hdpi-v24/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi-v24/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/mipmap-mdpi-v24/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi-v24/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/mipmap-xhdpi-v24/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi-v24/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/mipmap-xxhdpi-v24/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi-v24/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/mipmap-xxxhdpi-v24/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/app/src/main/res/mipmap/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/values/attrs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/values/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFFFFF
4 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/paths.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | repositories {
5 | google()
6 | jcenter()
7 | }
8 | dependencies {
9 | classpath 'com.android.tools.build:gradle:3.2.1'
10 | }
11 | }
12 |
13 | allprojects {
14 | repositories {
15 | maven { url 'https://jitpack.io' }
16 | google()
17 | jcenter()
18 | }
19 | }
--------------------------------------------------------------------------------
/drawable-source/ic_chevron_left.svg:
--------------------------------------------------------------------------------
1 |
2 |
60 |
--------------------------------------------------------------------------------
/drawable-source/ic_chevron_right.svg:
--------------------------------------------------------------------------------
1 |
2 |
60 |
--------------------------------------------------------------------------------
/drawable-source/ic_delete.svg:
--------------------------------------------------------------------------------
1 |
2 |
60 |
--------------------------------------------------------------------------------
/drawable-source/ic_download.svg:
--------------------------------------------------------------------------------
1 |
2 |
60 |
--------------------------------------------------------------------------------
/drawable-source/ic_expand_less.svg:
--------------------------------------------------------------------------------
1 |
2 |
60 |
--------------------------------------------------------------------------------
/drawable-source/ic_expand_more.svg:
--------------------------------------------------------------------------------
1 |
2 |
60 |
--------------------------------------------------------------------------------
/drawable-source/ic_logout.svg:
--------------------------------------------------------------------------------
1 |
2 |
55 |
--------------------------------------------------------------------------------
/drawable-source/ic_storage.svg:
--------------------------------------------------------------------------------
1 |
2 |
60 |
--------------------------------------------------------------------------------
/drawable-source/ic_video.svg:
--------------------------------------------------------------------------------
1 |
2 |
55 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/phoneScreenshots/details.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/fastlane/metadata/android/en-US/phoneScreenshots/details.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/phoneScreenshots/search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/fastlane/metadata/android/en-US/phoneScreenshots/search.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/phoneScreenshots/updates.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/fastlane/metadata/android/en-US/phoneScreenshots/updates.png
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | android.enableAapt2=false
2 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Thu Oct 04 21:55:13 MSK 2018
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-4.6-all.zip
7 |
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
--------------------------------------------------------------------------------
/yalp-store-ota-zip/81-YalpStore.sh:
--------------------------------------------------------------------------------
1 | #!/sbin/sh
2 |
3 | . /tmp/backuptool.functions
4 |
5 | PACKAGE_NAME=YalpStore
6 |
7 | list_files() {
8 | cat <
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/yeriomin-keystore.jks.enc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeriomin/YalpStore/37f24c2fc2078cefc141d03c1379a650298ee2a8/yeriomin-keystore.jks.enc
--------------------------------------------------------------------------------