From c340a1b2ebc56a23f5204bee8bfcdacf93be71f3 Mon Sep 17 00:00:00 2001 From: Sergey Eremin Date: Fri, 28 Apr 2017 15:34:52 +0300 Subject: [PATCH] Another small refactoring --- .../PreferenceBlacklistFragment.java | 39 ++++++++------- .../yeriomin/yalpstore/UpdatableAppsTask.java | 47 +++++++++---------- 2 files changed, 44 insertions(+), 42 deletions(-) diff --git a/app/src/main/java/com/github/yeriomin/yalpstore/PreferenceBlacklistFragment.java b/app/src/main/java/com/github/yeriomin/yalpstore/PreferenceBlacklistFragment.java index a1a208ce8..8ce66c792 100644 --- a/app/src/main/java/com/github/yeriomin/yalpstore/PreferenceBlacklistFragment.java +++ b/app/src/main/java/com/github/yeriomin/yalpstore/PreferenceBlacklistFragment.java @@ -41,24 +41,7 @@ public class PreferenceBlacklistFragment extends PreferenceFragment { } }); - Preference.OnPreferenceChangeListener listener = new Preference.OnPreferenceChangeListener() { - @Override - public boolean onPreferenceChange(Preference preference, Object newValue) { - String value = (String) newValue; - boolean isBlackList = null != value && value.equals(PreferenceActivity.LIST_BLACK); - appList.setTitle(activity.getString( - isBlackList - ? R.string.pref_update_list_black - : R.string.pref_update_list_white - )); - preference.setSummary(activity.getString( - isBlackList - ? R.string.pref_update_list_white_or_black_black - : R.string.pref_update_list_white_or_black_white - )); - return true; - } - }; + Preference.OnPreferenceChangeListener listener = new BlackListOnPreferenceChangeListener(); blackOrWhite.setOnPreferenceChangeListener(listener); listener.onPreferenceChange(blackOrWhite, blackOrWhite.getValue()); } @@ -76,4 +59,24 @@ public class PreferenceBlacklistFragment extends PreferenceFragment { } return Util.sort(appNames); } + + private class BlackListOnPreferenceChangeListener implements Preference.OnPreferenceChangeListener { + + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + String value = (String) newValue; + boolean isBlackList = null != value && value.equals(PreferenceActivity.LIST_BLACK); + appList.setTitle(activity.getString( + isBlackList + ? R.string.pref_update_list_black + : R.string.pref_update_list_white + )); + preference.setSummary(activity.getString( + isBlackList + ? R.string.pref_update_list_white_or_black_black + : R.string.pref_update_list_white_or_black_white + )); + return true; + } + } } diff --git a/app/src/main/java/com/github/yeriomin/yalpstore/UpdatableAppsTask.java b/app/src/main/java/com/github/yeriomin/yalpstore/UpdatableAppsTask.java index 1b3ac64a5..5588ff480 100644 --- a/app/src/main/java/com/github/yeriomin/yalpstore/UpdatableAppsTask.java +++ b/app/src/main/java/com/github/yeriomin/yalpstore/UpdatableAppsTask.java @@ -46,7 +46,7 @@ class UpdatableAppsTask extends GoogleApiAsyncTask { this.explicitCheck = explicitCheck; } - private List getFilteredInstalledApps(Context context) { + private Map getFilteredInstalledApps(Context context) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); boolean isBlacklist = prefs.getString( PreferenceActivity.PREFERENCE_UPDATE_LIST_WHITE_OR_BLACK, @@ -54,7 +54,7 @@ class UpdatableAppsTask extends GoogleApiAsyncTask { ).equals(PreferenceActivity.LIST_BLACK); BlackWhiteListManager manager = new BlackWhiteListManager(context); - List apps = new ArrayList<>(); + Map apps = new HashMap<>(); for (App app: getInstalledApps(context)) { boolean inList = manager.contains(app.getPackageName()); if ((isBlacklist && inList) || (!isBlacklist && !inList)) { @@ -66,7 +66,7 @@ class UpdatableAppsTask extends GoogleApiAsyncTask { ); continue; } - apps.add(app); + apps.put(app.getPackageName(), app); } return apps; } @@ -74,50 +74,49 @@ class UpdatableAppsTask extends GoogleApiAsyncTask { @Override protected Throwable doInBackground(String... params) { // Building local apps list - List installedAppIds = new ArrayList<>(); - Map appMap = new HashMap<>(); - for (App installedApp: getFilteredInstalledApps(context)) { - String packageName = installedApp.getPackageInfo().packageName; - installedAppIds.add(packageName); - appMap.put(packageName, installedApp); - } + Map installedApps = getFilteredInstalledApps(context); if (PreferenceActivity.getUpdateInterval(context) < 0 && !explicitCheck) { - otherInstalledApps.addAll(appMap.values()); + otherInstalledApps.addAll(installedApps.values()); return null; } // Requesting info from Google Play Market for installed apps PlayStoreApiWrapper wrapper = new PlayStoreApiWrapper(this.context); List appsFromPlayMarket = new ArrayList<>(); try { - appsFromPlayMarket.addAll(wrapper.getDetails(installedAppIds)); + appsFromPlayMarket.addAll(wrapper.getDetails(new ArrayList<>(installedApps.keySet()))); } catch (Throwable e) { - otherInstalledApps.addAll(appMap.values()); + otherInstalledApps.addAll(installedApps.values()); return e; } // Comparing versions and building updatable apps list - for (App appFromMarket : appsFromPlayMarket) { + for (App appFromMarket: appsFromPlayMarket) { String packageName = appFromMarket.getPackageName(); if (TextUtils.isEmpty(packageName)) { continue; } - App installedApp = appMap.get(packageName); - appFromMarket.setPackageInfo(installedApp.getPackageInfo()); - appFromMarket.setVersionName(installedApp.getVersionName()); - appFromMarket.setDisplayName(installedApp.getDisplayName()); - appFromMarket.setIcon(installedApp.getIcon()); - appFromMarket.setSystem(installedApp.isSystem()); - appFromMarket.setInstalled(true); + App installedApp = installedApps.get(packageName); + appFromMarket = addInstalledAppInfo(appFromMarket, installedApp); if (installedApp.getVersionCode() < appFromMarket.getVersionCode()) { - appMap.remove(packageName); + installedApps.remove(packageName); updatableApps.add(appFromMarket); } else { - appMap.put(packageName, appFromMarket); + installedApps.put(packageName, appFromMarket); } } - otherInstalledApps.addAll(appMap.values()); + otherInstalledApps.addAll(installedApps.values()); return null; } + private App addInstalledAppInfo(App appFromMarket, App installedApp) { + appFromMarket.setPackageInfo(installedApp.getPackageInfo()); + appFromMarket.setVersionName(installedApp.getVersionName()); + appFromMarket.setDisplayName(installedApp.getDisplayName()); + appFromMarket.setIcon(installedApp.getIcon()); + appFromMarket.setSystem(installedApp.isSystem()); + appFromMarket.setInstalled(true); + return appFromMarket; + } + @Override protected void processIOException(IOException e) { super.processIOException(e);