Loading WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java +1 −1 Original line number Diff line number Diff line Loading @@ -925,7 +925,7 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { Partner partner = Partner.get(pm); if (partner != null) { final Resources partnerRes = partner.getResources(); final int resId = partnerRes.getIdentifier(Partner.RESOURCE_WALLPAPERS, "array", final int resId = partnerRes.getIdentifier(Partner.RES_WALLPAPERS, "array", partner.getPackageName()); if (resId != 0) { addWallpapers(bundled, partnerRes, partner.getPackageName(), resId); Loading src/com/android/launcher3/DeviceProfile.java +49 −7 Original line number Diff line number Diff line Loading @@ -69,7 +69,7 @@ public class DeviceProfile { float numRows; float numColumns; float numHotseatIcons; private float iconSize; float iconSize; private float iconTextSize; private int iconDrawablePaddingOriginalPx; private float hotseatIconSize; Loading Loading @@ -130,6 +130,9 @@ public class DeviceProfile { float dragViewScale; int allAppsShortEdgeCount = -1; int allAppsLongEdgeCount = -1; private ArrayList<DeviceProfileCallbacks> mCallbacks = new ArrayList<DeviceProfileCallbacks>(); DeviceProfile(String n, float w, float h, float r, float c, Loading @@ -152,6 +155,9 @@ public class DeviceProfile { defaultNoAllAppsLayoutId = dnalId; } DeviceProfile() { } DeviceProfile(Context context, ArrayList<DeviceProfile> profiles, float minWidth, float minHeight, Loading Loading @@ -218,6 +224,7 @@ public class DeviceProfile { points.add(new DeviceProfileQuery(p, p.iconSize)); } iconSize = invDistWeightedInterpolate(minWidth, minHeight, points); // AllApps uses the original non-scaled icon size allAppsIconSizePx = DynamicGrid.pxFromDp(iconSize, dm); Loading @@ -240,12 +247,42 @@ public class DeviceProfile { // Hotseat hotseatIconSize = invDistWeightedInterpolate(minWidth, minHeight, points); // If the partner customization apk contains any grid overrides, apply them applyPartnerDeviceProfileOverrides(context, dm); // Calculate the remaining vars updateFromConfiguration(context, res, wPx, hPx, awPx, ahPx); updateAvailableDimensions(context); computeAllAppsButtonSize(context); } /** * Apply any Partner customization grid overrides. * * Currently we support: all apps row / column count. */ private void applyPartnerDeviceProfileOverrides(Context ctx, DisplayMetrics dm) { Partner p = Partner.get(ctx.getPackageManager()); if (p != null) { DeviceProfile partnerDp = p.getDeviceProfileOverride(dm); if (partnerDp != null) { if (partnerDp.numRows > 0 && partnerDp.numColumns > 0) { numRows = partnerDp.numRows; numColumns = partnerDp.numColumns; } if (partnerDp.allAppsShortEdgeCount > 0 && partnerDp.allAppsLongEdgeCount > 0) { allAppsShortEdgeCount = partnerDp.allAppsShortEdgeCount; allAppsLongEdgeCount = partnerDp.allAppsLongEdgeCount; } if (partnerDp.iconSize > 0) { iconSize = partnerDp.iconSize; // AllApps uses the original non-scaled icon size allAppsIconSizePx = DynamicGrid.pxFromDp(iconSize, dm); } } } } /** * Determine the exact visual footprint of the all apps button, taking into account scaling * and internal padding of the drawable. Loading Loading @@ -380,6 +417,10 @@ public class DeviceProfile { int maxRows = (isLandscape ? maxShortEdgeCellCount : maxLongEdgeCellCount); int maxCols = (isLandscape ? maxLongEdgeCellCount : maxShortEdgeCellCount); if (allAppsShortEdgeCount > 0 && allAppsLongEdgeCount > 0) { allAppsNumRows = isLandscape ? allAppsShortEdgeCount : allAppsLongEdgeCount; allAppsNumCols = isLandscape ? allAppsLongEdgeCount : allAppsShortEdgeCount; } else { allAppsNumRows = (availableHeightPx - pageIndicatorHeightPx) / (allAppsCellHeightPx + allAppsCellPaddingPx); allAppsNumRows = Math.max(minEdgeCellCount, Math.min(maxRows, allAppsNumRows)); Loading @@ -387,6 +428,7 @@ public class DeviceProfile { (allAppsCellWidthPx + allAppsCellPaddingPx); allAppsNumCols = Math.max(minEdgeCellCount, Math.min(maxCols, allAppsNumCols)); } } void updateFromConfiguration(Context context, Resources resources, int wPx, int hPx, int awPx, int ahPx) { Loading src/com/android/launcher3/LauncherProvider.java +2 −2 Original line number Diff line number Diff line Loading @@ -327,7 +327,7 @@ public class LauncherProvider extends ContentProvider { final Partner partner = Partner.get(getContext().getPackageManager()); if (partner != null && partner.hasDefaultLayout()) { final Resources partnerRes = partner.getResources(); int workspaceResId = partnerRes.getIdentifier(Partner.RESOURCE_DEFAULT_LAYOUT, int workspaceResId = partnerRes.getIdentifier(Partner.RES_DEFAULT_LAYOUT, "xml", partner.getPackageName()); if (workspaceResId != 0) { loader = new SimpleWorkspaceLoader(mOpenHelper, partnerRes, workspaceResId); Loading Loading @@ -1509,7 +1509,7 @@ public class LauncherProvider extends ContentProvider { final Partner partner = Partner.get(mPackageManager); if (partner != null) { final Resources partnerRes = partner.getResources(); final int resId = partnerRes.getIdentifier(Partner.RESOURCE_FOLDER, final int resId = partnerRes.getIdentifier(Partner.RES_FOLDER, "xml", partner.getPackageName()); if (resId != 0) { final XmlResourceParser partnerParser = partnerRes.getXml(resId); Loading WallpaperPicker/src/com/android/launcher3/Partner.java→src/com/android/launcher3/Partner.java +171 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,8 @@ package com.android.launcher3; import android.content.pm.PackageManager; import android.content.res.Resources; import android.util.DisplayMetrics; import android.util.Log; import android.util.Pair; import java.io.File; Loading @@ -28,18 +30,28 @@ import java.io.File; * the system. */ public class Partner { static final String TAG = "Launcher.Partner"; /** Marker action used to discover partner */ private static final String ACTION_PARTNER_CUSTOMIZATION = "com.android.launcher3.action.PARTNER_CUSTOMIZATION"; public static final String RESOURCE_FOLDER = "partner_folder"; public static final String RESOURCE_WALLPAPERS = "partner_wallpapers"; public static final String RESOURCE_DEFAULT_LAYOUT = "partner_default_layout"; public static final String RES_FOLDER = "partner_folder"; public static final String RES_WALLPAPERS = "partner_wallpapers"; public static final String RES_DEFAULT_LAYOUT = "partner_default_layout"; public static final String RES_DEFAULT_WALLPAPER_HIDDEN = "default_wallpapper_hidden"; public static final String RES_SYSTEM_WALLPAPER_DIR = "system_wallpaper_directory"; public static final String RESOURCE_DEFAULT_WALLPAPER_HIDDEN = "default_wallpapper_hidden"; public static final String RESOURCE_SYSTEM_WALLPAPER_DIR = "system_wallpaper_directory"; public static final String RES_REQUIRE_FIRST_RUN_FLOW = "requires_first_run_flow"; public static final String RESOURCE_REQUIRE_FIRST_RUN_FLOW = "requires_first_run_flow"; /** These resources are used to override the device profile */ public static final String RES_GRID_AA_SHORT_EDGE_COUNT = "grid_aa_short_edge_count"; public static final String RES_GRID_AA_LONG_EDGE_COUNT = "grid_aa_long_edge_count"; public static final String RES_GRID_NUM_ROWS = "grid_num_rows"; public static final String RES_GRID_NUM_COLUMNS = "grid_num_columns"; public static final String RES_GRID_ICON_SIZE_DP = "grid_icon_size_dp"; private static boolean sSearched = false; private static Partner sPartner; Loading Loading @@ -75,32 +87,85 @@ public class Partner { } public boolean hasDefaultLayout() { int defaultLayout = getResources().getIdentifier(Partner.RESOURCE_DEFAULT_LAYOUT, int defaultLayout = getResources().getIdentifier(Partner.RES_DEFAULT_LAYOUT, "xml", getPackageName()); return defaultLayout != 0; } public boolean hasFolder() { int folder = getResources().getIdentifier(Partner.RESOURCE_FOLDER, int folder = getResources().getIdentifier(Partner.RES_FOLDER, "xml", getPackageName()); return folder != 0; } public boolean hideDefaultWallpaper() { int resId = getResources().getIdentifier(RESOURCE_DEFAULT_WALLPAPER_HIDDEN, "bool", int resId = getResources().getIdentifier(RES_DEFAULT_WALLPAPER_HIDDEN, "bool", getPackageName()); return resId != 0 && getResources().getBoolean(resId); } public File getWallpaperDirectory() { int resId = getResources().getIdentifier(RESOURCE_SYSTEM_WALLPAPER_DIR, "string", int resId = getResources().getIdentifier(RES_SYSTEM_WALLPAPER_DIR, "string", getPackageName()); return (resId != 0) ? new File(getResources().getString(resId)) : null; } public boolean requiresFirstRunFlow() { int resId = getResources().getIdentifier(RESOURCE_REQUIRE_FIRST_RUN_FLOW, "bool", int resId = getResources().getIdentifier(RES_REQUIRE_FIRST_RUN_FLOW, "bool", getPackageName()); return resId != 0 && getResources().getBoolean(resId); } public DeviceProfile getDeviceProfileOverride(DisplayMetrics dm) { boolean containsProfileOverrides = false; DeviceProfile dp = new DeviceProfile(); // We initialize customizable fields to be invalid dp.numRows = -1; dp.numColumns = -1; dp.allAppsShortEdgeCount = -1; dp.allAppsLongEdgeCount = -1; try { int resId = getResources().getIdentifier(RES_GRID_NUM_ROWS, "integer", getPackageName()); if (resId > 0) { containsProfileOverrides = true; dp.numRows = getResources().getInteger(resId); } resId = getResources().getIdentifier(RES_GRID_NUM_COLUMNS, "integer", getPackageName()); if (resId > 0) { containsProfileOverrides = true; dp.numColumns = getResources().getInteger(resId); } resId = getResources().getIdentifier(RES_GRID_AA_SHORT_EDGE_COUNT, "integer", getPackageName()); if (resId > 0) { containsProfileOverrides = true; dp.allAppsShortEdgeCount = getResources().getInteger(resId); } resId = getResources().getIdentifier(RES_GRID_AA_LONG_EDGE_COUNT, "integer", getPackageName()); if (resId > 0) { containsProfileOverrides = true; dp.allAppsLongEdgeCount = getResources().getInteger(resId); } resId = getResources().getIdentifier(RES_GRID_ICON_SIZE_DP, "dimen", getPackageName()); if (resId > 0) { containsProfileOverrides = true; int px = getResources().getDimensionPixelSize(resId); dp.iconSize = DynamicGrid.dpiFromPx(px, dm); } } catch (Resources.NotFoundException ex) { Log.e(TAG, "Invalid Partner grid resource!", ex); } return containsProfileOverrides ? dp : null; } } Loading
WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java +1 −1 Original line number Diff line number Diff line Loading @@ -925,7 +925,7 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { Partner partner = Partner.get(pm); if (partner != null) { final Resources partnerRes = partner.getResources(); final int resId = partnerRes.getIdentifier(Partner.RESOURCE_WALLPAPERS, "array", final int resId = partnerRes.getIdentifier(Partner.RES_WALLPAPERS, "array", partner.getPackageName()); if (resId != 0) { addWallpapers(bundled, partnerRes, partner.getPackageName(), resId); Loading
src/com/android/launcher3/DeviceProfile.java +49 −7 Original line number Diff line number Diff line Loading @@ -69,7 +69,7 @@ public class DeviceProfile { float numRows; float numColumns; float numHotseatIcons; private float iconSize; float iconSize; private float iconTextSize; private int iconDrawablePaddingOriginalPx; private float hotseatIconSize; Loading Loading @@ -130,6 +130,9 @@ public class DeviceProfile { float dragViewScale; int allAppsShortEdgeCount = -1; int allAppsLongEdgeCount = -1; private ArrayList<DeviceProfileCallbacks> mCallbacks = new ArrayList<DeviceProfileCallbacks>(); DeviceProfile(String n, float w, float h, float r, float c, Loading @@ -152,6 +155,9 @@ public class DeviceProfile { defaultNoAllAppsLayoutId = dnalId; } DeviceProfile() { } DeviceProfile(Context context, ArrayList<DeviceProfile> profiles, float minWidth, float minHeight, Loading Loading @@ -218,6 +224,7 @@ public class DeviceProfile { points.add(new DeviceProfileQuery(p, p.iconSize)); } iconSize = invDistWeightedInterpolate(minWidth, minHeight, points); // AllApps uses the original non-scaled icon size allAppsIconSizePx = DynamicGrid.pxFromDp(iconSize, dm); Loading @@ -240,12 +247,42 @@ public class DeviceProfile { // Hotseat hotseatIconSize = invDistWeightedInterpolate(minWidth, minHeight, points); // If the partner customization apk contains any grid overrides, apply them applyPartnerDeviceProfileOverrides(context, dm); // Calculate the remaining vars updateFromConfiguration(context, res, wPx, hPx, awPx, ahPx); updateAvailableDimensions(context); computeAllAppsButtonSize(context); } /** * Apply any Partner customization grid overrides. * * Currently we support: all apps row / column count. */ private void applyPartnerDeviceProfileOverrides(Context ctx, DisplayMetrics dm) { Partner p = Partner.get(ctx.getPackageManager()); if (p != null) { DeviceProfile partnerDp = p.getDeviceProfileOverride(dm); if (partnerDp != null) { if (partnerDp.numRows > 0 && partnerDp.numColumns > 0) { numRows = partnerDp.numRows; numColumns = partnerDp.numColumns; } if (partnerDp.allAppsShortEdgeCount > 0 && partnerDp.allAppsLongEdgeCount > 0) { allAppsShortEdgeCount = partnerDp.allAppsShortEdgeCount; allAppsLongEdgeCount = partnerDp.allAppsLongEdgeCount; } if (partnerDp.iconSize > 0) { iconSize = partnerDp.iconSize; // AllApps uses the original non-scaled icon size allAppsIconSizePx = DynamicGrid.pxFromDp(iconSize, dm); } } } } /** * Determine the exact visual footprint of the all apps button, taking into account scaling * and internal padding of the drawable. Loading Loading @@ -380,6 +417,10 @@ public class DeviceProfile { int maxRows = (isLandscape ? maxShortEdgeCellCount : maxLongEdgeCellCount); int maxCols = (isLandscape ? maxLongEdgeCellCount : maxShortEdgeCellCount); if (allAppsShortEdgeCount > 0 && allAppsLongEdgeCount > 0) { allAppsNumRows = isLandscape ? allAppsShortEdgeCount : allAppsLongEdgeCount; allAppsNumCols = isLandscape ? allAppsLongEdgeCount : allAppsShortEdgeCount; } else { allAppsNumRows = (availableHeightPx - pageIndicatorHeightPx) / (allAppsCellHeightPx + allAppsCellPaddingPx); allAppsNumRows = Math.max(minEdgeCellCount, Math.min(maxRows, allAppsNumRows)); Loading @@ -387,6 +428,7 @@ public class DeviceProfile { (allAppsCellWidthPx + allAppsCellPaddingPx); allAppsNumCols = Math.max(minEdgeCellCount, Math.min(maxCols, allAppsNumCols)); } } void updateFromConfiguration(Context context, Resources resources, int wPx, int hPx, int awPx, int ahPx) { Loading
src/com/android/launcher3/LauncherProvider.java +2 −2 Original line number Diff line number Diff line Loading @@ -327,7 +327,7 @@ public class LauncherProvider extends ContentProvider { final Partner partner = Partner.get(getContext().getPackageManager()); if (partner != null && partner.hasDefaultLayout()) { final Resources partnerRes = partner.getResources(); int workspaceResId = partnerRes.getIdentifier(Partner.RESOURCE_DEFAULT_LAYOUT, int workspaceResId = partnerRes.getIdentifier(Partner.RES_DEFAULT_LAYOUT, "xml", partner.getPackageName()); if (workspaceResId != 0) { loader = new SimpleWorkspaceLoader(mOpenHelper, partnerRes, workspaceResId); Loading Loading @@ -1509,7 +1509,7 @@ public class LauncherProvider extends ContentProvider { final Partner partner = Partner.get(mPackageManager); if (partner != null) { final Resources partnerRes = partner.getResources(); final int resId = partnerRes.getIdentifier(Partner.RESOURCE_FOLDER, final int resId = partnerRes.getIdentifier(Partner.RES_FOLDER, "xml", partner.getPackageName()); if (resId != 0) { final XmlResourceParser partnerParser = partnerRes.getXml(resId); Loading
WallpaperPicker/src/com/android/launcher3/Partner.java→src/com/android/launcher3/Partner.java +171 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,8 @@ package com.android.launcher3; import android.content.pm.PackageManager; import android.content.res.Resources; import android.util.DisplayMetrics; import android.util.Log; import android.util.Pair; import java.io.File; Loading @@ -28,18 +30,28 @@ import java.io.File; * the system. */ public class Partner { static final String TAG = "Launcher.Partner"; /** Marker action used to discover partner */ private static final String ACTION_PARTNER_CUSTOMIZATION = "com.android.launcher3.action.PARTNER_CUSTOMIZATION"; public static final String RESOURCE_FOLDER = "partner_folder"; public static final String RESOURCE_WALLPAPERS = "partner_wallpapers"; public static final String RESOURCE_DEFAULT_LAYOUT = "partner_default_layout"; public static final String RES_FOLDER = "partner_folder"; public static final String RES_WALLPAPERS = "partner_wallpapers"; public static final String RES_DEFAULT_LAYOUT = "partner_default_layout"; public static final String RES_DEFAULT_WALLPAPER_HIDDEN = "default_wallpapper_hidden"; public static final String RES_SYSTEM_WALLPAPER_DIR = "system_wallpaper_directory"; public static final String RESOURCE_DEFAULT_WALLPAPER_HIDDEN = "default_wallpapper_hidden"; public static final String RESOURCE_SYSTEM_WALLPAPER_DIR = "system_wallpaper_directory"; public static final String RES_REQUIRE_FIRST_RUN_FLOW = "requires_first_run_flow"; public static final String RESOURCE_REQUIRE_FIRST_RUN_FLOW = "requires_first_run_flow"; /** These resources are used to override the device profile */ public static final String RES_GRID_AA_SHORT_EDGE_COUNT = "grid_aa_short_edge_count"; public static final String RES_GRID_AA_LONG_EDGE_COUNT = "grid_aa_long_edge_count"; public static final String RES_GRID_NUM_ROWS = "grid_num_rows"; public static final String RES_GRID_NUM_COLUMNS = "grid_num_columns"; public static final String RES_GRID_ICON_SIZE_DP = "grid_icon_size_dp"; private static boolean sSearched = false; private static Partner sPartner; Loading Loading @@ -75,32 +87,85 @@ public class Partner { } public boolean hasDefaultLayout() { int defaultLayout = getResources().getIdentifier(Partner.RESOURCE_DEFAULT_LAYOUT, int defaultLayout = getResources().getIdentifier(Partner.RES_DEFAULT_LAYOUT, "xml", getPackageName()); return defaultLayout != 0; } public boolean hasFolder() { int folder = getResources().getIdentifier(Partner.RESOURCE_FOLDER, int folder = getResources().getIdentifier(Partner.RES_FOLDER, "xml", getPackageName()); return folder != 0; } public boolean hideDefaultWallpaper() { int resId = getResources().getIdentifier(RESOURCE_DEFAULT_WALLPAPER_HIDDEN, "bool", int resId = getResources().getIdentifier(RES_DEFAULT_WALLPAPER_HIDDEN, "bool", getPackageName()); return resId != 0 && getResources().getBoolean(resId); } public File getWallpaperDirectory() { int resId = getResources().getIdentifier(RESOURCE_SYSTEM_WALLPAPER_DIR, "string", int resId = getResources().getIdentifier(RES_SYSTEM_WALLPAPER_DIR, "string", getPackageName()); return (resId != 0) ? new File(getResources().getString(resId)) : null; } public boolean requiresFirstRunFlow() { int resId = getResources().getIdentifier(RESOURCE_REQUIRE_FIRST_RUN_FLOW, "bool", int resId = getResources().getIdentifier(RES_REQUIRE_FIRST_RUN_FLOW, "bool", getPackageName()); return resId != 0 && getResources().getBoolean(resId); } public DeviceProfile getDeviceProfileOverride(DisplayMetrics dm) { boolean containsProfileOverrides = false; DeviceProfile dp = new DeviceProfile(); // We initialize customizable fields to be invalid dp.numRows = -1; dp.numColumns = -1; dp.allAppsShortEdgeCount = -1; dp.allAppsLongEdgeCount = -1; try { int resId = getResources().getIdentifier(RES_GRID_NUM_ROWS, "integer", getPackageName()); if (resId > 0) { containsProfileOverrides = true; dp.numRows = getResources().getInteger(resId); } resId = getResources().getIdentifier(RES_GRID_NUM_COLUMNS, "integer", getPackageName()); if (resId > 0) { containsProfileOverrides = true; dp.numColumns = getResources().getInteger(resId); } resId = getResources().getIdentifier(RES_GRID_AA_SHORT_EDGE_COUNT, "integer", getPackageName()); if (resId > 0) { containsProfileOverrides = true; dp.allAppsShortEdgeCount = getResources().getInteger(resId); } resId = getResources().getIdentifier(RES_GRID_AA_LONG_EDGE_COUNT, "integer", getPackageName()); if (resId > 0) { containsProfileOverrides = true; dp.allAppsLongEdgeCount = getResources().getInteger(resId); } resId = getResources().getIdentifier(RES_GRID_ICON_SIZE_DP, "dimen", getPackageName()); if (resId > 0) { containsProfileOverrides = true; int px = getResources().getDimensionPixelSize(resId); dp.iconSize = DynamicGrid.dpiFromPx(px, dm); } } catch (Resources.NotFoundException ex) { Log.e(TAG, "Invalid Partner grid resource!", ex); } return containsProfileOverrides ? dp : null; } }