Introduce IconProvider.
Bug: 27506625
-Move managing of SystemState to IconProvider
Change-Id: I3417f0b7d0664c2255c7cc2a88f6c65822b5fb98
diff --git a/src/com/android/launcher3/IconProvider.java b/src/com/android/launcher3/IconProvider.java
new file mode 100644
index 0000000..0a273bb
--- /dev/null
+++ b/src/com/android/launcher3/IconProvider.java
@@ -0,0 +1,49 @@
+package com.android.launcher3;
+
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.android.launcher3.compat.LauncherActivityInfoCompat;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Locale;
+
+public class IconProvider {
+
+ private static final boolean DBG = false;
+ private static final String TAG = "IconProvider";
+
+ protected String mSystemState;
+
+ public IconProvider() {
+ updateSystemStateString();
+ }
+
+ public static IconProvider loadByName(String className, Context context) {
+ if (TextUtils.isEmpty(className)) return new IconProvider();
+ if (DBG) Log.d(TAG, "Loading IconProvider: " + className);
+ try {
+ Class<?> cls = Class.forName(className);
+ return (IconProvider) cls.getDeclaredConstructor(Context.class).newInstance(context);
+ } catch (ClassNotFoundException | InstantiationException | IllegalAccessException
+ | ClassCastException | NoSuchMethodException | InvocationTargetException e) {
+ Log.e(TAG, "Bad IconProvider class", e);
+ return new IconProvider();
+ }
+ }
+
+ public void updateSystemStateString() {
+ mSystemState = Locale.getDefault().toString();
+ }
+
+ public String getIconSystemState(String packageName) {
+ return mSystemState;
+ }
+
+
+ public Drawable getIcon(LauncherActivityInfoCompat info, int iconDpi) {
+ return info.getIcon(iconDpi);
+ }
+}