Move category helper functions to CategoryProvider
Don't change anything yet, just move them.
This commit is contained in:
parent
a7a7f77b42
commit
634fe1084a
@ -10,7 +10,6 @@ import android.text.TextUtils;
|
|||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import org.fdroid.fdroid.Preferences;
|
import org.fdroid.fdroid.Preferences;
|
||||||
import org.fdroid.fdroid.R;
|
|
||||||
import org.fdroid.fdroid.Utils;
|
import org.fdroid.fdroid.Utils;
|
||||||
import org.fdroid.fdroid.data.Schema.ApkTable;
|
import org.fdroid.fdroid.data.Schema.ApkTable;
|
||||||
import org.fdroid.fdroid.data.Schema.AppPrefsTable;
|
import org.fdroid.fdroid.data.Schema.AppPrefsTable;
|
||||||
@ -24,7 +23,6 @@ import org.fdroid.fdroid.data.Schema.RepoTable;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@ -94,51 +92,6 @@ public class AppProvider extends FDroidProvider {
|
|||||||
return apps;
|
return apps;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getCategoryAll(Context context) {
|
|
||||||
return context.getString(R.string.category_All);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getCategoryWhatsNew(Context context) {
|
|
||||||
return context.getString(R.string.category_Whats_New);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getCategoryRecentlyUpdated(Context context) {
|
|
||||||
return context.getString(R.string.category_Recently_Updated);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static List<String> categories(Context context) {
|
|
||||||
final ContentResolver resolver = context.getContentResolver();
|
|
||||||
final Uri uri = getContentUri();
|
|
||||||
final String[] projection = {Cols.Categories.CATEGORIES};
|
|
||||||
final Cursor cursor = resolver.query(uri, projection, null, null, null);
|
|
||||||
final Set<String> categorySet = new HashSet<>();
|
|
||||||
if (cursor != null) {
|
|
||||||
if (cursor.getCount() > 0) {
|
|
||||||
cursor.moveToFirst();
|
|
||||||
while (!cursor.isAfterLast()) {
|
|
||||||
final String categoriesString = cursor.getString(0);
|
|
||||||
String[] categoriesList = Utils.parseCommaSeparatedString(categoriesString);
|
|
||||||
if (categoriesList != null) {
|
|
||||||
Collections.addAll(categorySet, categoriesList);
|
|
||||||
}
|
|
||||||
cursor.moveToNext();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
cursor.close();
|
|
||||||
}
|
|
||||||
final List<String> categories = new ArrayList<>(categorySet);
|
|
||||||
Collections.sort(categories);
|
|
||||||
|
|
||||||
// Populate the category list with the real categories, and the
|
|
||||||
// locally generated meta-categories for "What's New", "Recently
|
|
||||||
// Updated" and "All"...
|
|
||||||
categories.add(0, getCategoryAll(context));
|
|
||||||
categories.add(0, getCategoryRecentlyUpdated(context));
|
|
||||||
categories.add(0, getCategoryWhatsNew(context));
|
|
||||||
|
|
||||||
return categories;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static App findHighestPriorityMetadata(ContentResolver resolver, String packageName) {
|
public static App findHighestPriorityMetadata(ContentResolver resolver, String packageName) {
|
||||||
final Uri uri = getHighestPriorityMetadataUri(packageName);
|
final Uri uri = getHighestPriorityMetadataUri(packageName);
|
||||||
return cursorToApp(resolver.query(uri, Cols.ALL, null, null, null));
|
return cursorToApp(resolver.query(uri, Cols.ALL, null, null, null));
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package org.fdroid.fdroid.data;
|
package org.fdroid.fdroid.data;
|
||||||
|
|
||||||
|
import android.content.ContentResolver;
|
||||||
import android.content.ContentValues;
|
import android.content.ContentValues;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.UriMatcher;
|
import android.content.UriMatcher;
|
||||||
@ -7,8 +8,16 @@ import android.database.Cursor;
|
|||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
|
|
||||||
|
import org.fdroid.fdroid.R;
|
||||||
|
import org.fdroid.fdroid.Utils;
|
||||||
import org.fdroid.fdroid.data.Schema.CategoryTable.Cols;
|
import org.fdroid.fdroid.data.Schema.CategoryTable.Cols;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
public class CategoryProvider extends FDroidProvider {
|
public class CategoryProvider extends FDroidProvider {
|
||||||
|
|
||||||
public static final class Helper {
|
public static final class Helper {
|
||||||
@ -43,6 +52,51 @@ public class CategoryProvider extends FDroidProvider {
|
|||||||
cursor.close();
|
cursor.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String getCategoryAll(Context context) {
|
||||||
|
return context.getString(R.string.category_All);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getCategoryWhatsNew(Context context) {
|
||||||
|
return context.getString(R.string.category_Whats_New);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getCategoryRecentlyUpdated(Context context) {
|
||||||
|
return context.getString(R.string.category_Recently_Updated);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<String> categories(Context context) {
|
||||||
|
final ContentResolver resolver = context.getContentResolver();
|
||||||
|
final Uri uri = AppProvider.getContentUri();
|
||||||
|
final String[] projection = {Schema.AppMetadataTable.Cols.Categories.CATEGORIES};
|
||||||
|
final Cursor cursor = resolver.query(uri, projection, null, null, null);
|
||||||
|
final Set<String> categorySet = new HashSet<>();
|
||||||
|
if (cursor != null) {
|
||||||
|
if (cursor.getCount() > 0) {
|
||||||
|
cursor.moveToFirst();
|
||||||
|
while (!cursor.isAfterLast()) {
|
||||||
|
final String categoriesString = cursor.getString(0);
|
||||||
|
String[] categoriesList = Utils.parseCommaSeparatedString(categoriesString);
|
||||||
|
if (categoriesList != null) {
|
||||||
|
Collections.addAll(categorySet, categoriesList);
|
||||||
|
}
|
||||||
|
cursor.moveToNext();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cursor.close();
|
||||||
|
}
|
||||||
|
final List<String> categories = new ArrayList<>(categorySet);
|
||||||
|
Collections.sort(categories);
|
||||||
|
|
||||||
|
// Populate the category list with the real categories, and the
|
||||||
|
// locally generated meta-categories for "What's New", "Recently
|
||||||
|
// Updated" and "All"...
|
||||||
|
categories.add(0, getCategoryAll(context));
|
||||||
|
categories.add(0, getCategoryRecentlyUpdated(context));
|
||||||
|
categories.add(0, getCategoryWhatsNew(context));
|
||||||
|
|
||||||
|
return categories;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class Query extends QueryBuilder {
|
private class Query extends QueryBuilder {
|
||||||
|
@ -26,6 +26,7 @@ import org.fdroid.fdroid.Utils;
|
|||||||
import org.fdroid.fdroid.compat.ArrayAdapterCompat;
|
import org.fdroid.fdroid.compat.ArrayAdapterCompat;
|
||||||
import org.fdroid.fdroid.compat.CursorAdapterCompat;
|
import org.fdroid.fdroid.compat.CursorAdapterCompat;
|
||||||
import org.fdroid.fdroid.data.AppProvider;
|
import org.fdroid.fdroid.data.AppProvider;
|
||||||
|
import org.fdroid.fdroid.data.CategoryProvider;
|
||||||
import org.fdroid.fdroid.views.AppListAdapter;
|
import org.fdroid.fdroid.views.AppListAdapter;
|
||||||
import org.fdroid.fdroid.views.AvailableAppListAdapter;
|
import org.fdroid.fdroid.views.AvailableAppListAdapter;
|
||||||
|
|
||||||
@ -94,7 +95,7 @@ public class AvailableAppsFragment extends AppListFragment implements
|
|||||||
new AsyncTask<Void, Void, List<String>>() {
|
new AsyncTask<Void, Void, List<String>>() {
|
||||||
@Override
|
@Override
|
||||||
protected List<String> doInBackground(Void... params) {
|
protected List<String> doInBackground(Void... params) {
|
||||||
return AppProvider.Helper.categories(activity);
|
return CategoryProvider.Helper.categories(activity);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -132,7 +133,7 @@ public class AvailableAppsFragment extends AppListFragment implements
|
|||||||
categorySpinner = spinner;
|
categorySpinner = spinner;
|
||||||
categorySpinner.setId(R.id.category_spinner);
|
categorySpinner.setId(R.id.category_spinner);
|
||||||
|
|
||||||
categories = AppProvider.Helper.categories(getActivity());
|
categories = CategoryProvider.Helper.categories(getActivity());
|
||||||
|
|
||||||
ArrayAdapter<String> adapter = new ArrayAdapter<>(
|
ArrayAdapter<String> adapter = new ArrayAdapter<>(
|
||||||
getActivity(), android.R.layout.simple_spinner_item, translateCategories(getActivity(), categories));
|
getActivity(), android.R.layout.simple_spinner_item, translateCategories(getActivity(), categories));
|
||||||
@ -163,20 +164,20 @@ public class AvailableAppsFragment extends AppListFragment implements
|
|||||||
|
|
||||||
categoryWrapper = view.findViewById(R.id.category_wrapper);
|
categoryWrapper = view.findViewById(R.id.category_wrapper);
|
||||||
setupCategorySpinner((Spinner) view.findViewById(R.id.category_spinner));
|
setupCategorySpinner((Spinner) view.findViewById(R.id.category_spinner));
|
||||||
defaultCategory = AppProvider.Helper.getCategoryWhatsNew(getActivity());
|
defaultCategory = CategoryProvider.Helper.getCategoryWhatsNew(getActivity());
|
||||||
|
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Uri getDataUri() {
|
protected Uri getDataUri() {
|
||||||
if (currentCategory == null || currentCategory.equals(AppProvider.Helper.getCategoryAll(getActivity()))) {
|
if (currentCategory == null || currentCategory.equals(CategoryProvider.Helper.getCategoryAll(getActivity()))) {
|
||||||
return AppProvider.getContentUri();
|
return AppProvider.getContentUri();
|
||||||
}
|
}
|
||||||
if (currentCategory.equals(AppProvider.Helper.getCategoryRecentlyUpdated(getActivity()))) {
|
if (currentCategory.equals(CategoryProvider.Helper.getCategoryRecentlyUpdated(getActivity()))) {
|
||||||
return AppProvider.getRecentlyUpdatedUri();
|
return AppProvider.getRecentlyUpdatedUri();
|
||||||
}
|
}
|
||||||
if (currentCategory.equals(AppProvider.Helper.getCategoryWhatsNew(getActivity()))) {
|
if (currentCategory.equals(CategoryProvider.Helper.getCategoryWhatsNew(getActivity()))) {
|
||||||
return AppProvider.getNewlyAddedUri();
|
return AppProvider.getNewlyAddedUri();
|
||||||
}
|
}
|
||||||
return AppProvider.getCategoryUri(currentCategory);
|
return AppProvider.getCategoryUri(currentCategory);
|
||||||
|
@ -93,7 +93,7 @@ public class CategoryProviderTest extends FDroidProviderTest {
|
|||||||
insertAppWithCategory("com.rock", "Rock", "Mineral");
|
insertAppWithCategory("com.rock", "Rock", "Mineral");
|
||||||
insertAppWithCategory("com.banana", "Banana", "Vegetable");
|
insertAppWithCategory("com.banana", "Banana", "Vegetable");
|
||||||
|
|
||||||
List<String> categories = AppProvider.Helper.categories(context);
|
List<String> categories = CategoryProvider.Helper.categories(context);
|
||||||
String[] expected = new String[] {
|
String[] expected = new String[] {
|
||||||
context.getResources().getString(R.string.category_Whats_New),
|
context.getResources().getString(R.string.category_Whats_New),
|
||||||
context.getResources().getString(R.string.category_Recently_Updated),
|
context.getResources().getString(R.string.category_Recently_Updated),
|
||||||
@ -111,7 +111,7 @@ public class CategoryProviderTest extends FDroidProviderTest {
|
|||||||
insertAppWithCategory("com.dog.rock.apple", "Dog-Rock-Apple", "Animal,Mineral,Vegetable");
|
insertAppWithCategory("com.dog.rock.apple", "Dog-Rock-Apple", "Animal,Mineral,Vegetable");
|
||||||
insertAppWithCategory("com.banana.apple", "Banana", "Vegetable,Vegetable");
|
insertAppWithCategory("com.banana.apple", "Banana", "Vegetable,Vegetable");
|
||||||
|
|
||||||
List<String> categories = AppProvider.Helper.categories(context);
|
List<String> categories = CategoryProvider.Helper.categories(context);
|
||||||
String[] expected = new String[] {
|
String[] expected = new String[] {
|
||||||
context.getResources().getString(R.string.category_Whats_New),
|
context.getResources().getString(R.string.category_Whats_New),
|
||||||
context.getResources().getString(R.string.category_Recently_Updated),
|
context.getResources().getString(R.string.category_Recently_Updated),
|
||||||
@ -127,7 +127,7 @@ public class CategoryProviderTest extends FDroidProviderTest {
|
|||||||
"Running,Shooting,Jumping,Bleh,Sneh,Pleh,Blah,Test category," +
|
"Running,Shooting,Jumping,Bleh,Sneh,Pleh,Blah,Test category," +
|
||||||
"The quick brown fox jumps over the lazy dog,With apostrophe's");
|
"The quick brown fox jumps over the lazy dog,With apostrophe's");
|
||||||
|
|
||||||
List<String> categoriesLonger = AppProvider.Helper.categories(context);
|
List<String> categoriesLonger = CategoryProvider.Helper.categories(context);
|
||||||
String[] expectedLonger = new String[] {
|
String[] expectedLonger = new String[] {
|
||||||
context.getResources().getString(R.string.category_Whats_New),
|
context.getResources().getString(R.string.category_Whats_New),
|
||||||
context.getResources().getString(R.string.category_Recently_Updated),
|
context.getResources().getString(R.string.category_Recently_Updated),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user