diff options
author | Adam Cohen <adamcohen@google.com> | 2011-08-29 10:32:22 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-08-29 10:32:22 -0700 |
commit | 63feae2ca9473426897d64c60349f113fb7231b9 (patch) | |
tree | 557587c8ecae408a2b45e6a0ed49444d289ad20d /src/com/android/launcher2 | |
parent | 3359793e96542614eabfa8197a7ce9f05a159d91 (diff) | |
parent | 50370f325748c7bddbe91f6a2ea49065f584f14f (diff) | |
download | android_packages_apps_Trebuchet-63feae2ca9473426897d64c60349f113fb7231b9.tar.gz android_packages_apps_Trebuchet-63feae2ca9473426897d64c60349f113fb7231b9.tar.bz2 android_packages_apps_Trebuchet-63feae2ca9473426897d64c60349f113fb7231b9.zip |
Merge "Automatically padding widgets based on target API level"
Diffstat (limited to 'src/com/android/launcher2')
-rw-r--r-- | src/com/android/launcher2/Launcher.java | 48 | ||||
-rw-r--r-- | src/com/android/launcher2/LauncherAppWidgetHostView.java | 19 |
2 files changed, 50 insertions, 17 deletions
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java index 22a34e6c7..6c446a2bb 100644 --- a/src/com/android/launcher2/Launcher.java +++ b/src/com/android/launcher2/Launcher.java @@ -52,6 +52,7 @@ import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.AsyncTask; +import android.os.Build; import android.os.Bundle; import android.os.Environment; import android.os.Handler; @@ -74,8 +75,8 @@ import android.view.MenuItem; import android.view.MotionEvent; import android.view.Surface; import android.view.View; -import android.view.View.OnLongClickListener; import android.view.ViewGroup; +import android.view.View.OnLongClickListener; import android.view.accessibility.AccessibilityEvent; import android.view.animation.DecelerateInterpolator; import android.view.inputmethod.InputMethodManager; @@ -729,8 +730,6 @@ public final class Launcher extends Activity } } - - /** * Creates a view representing a shortcut. * @@ -845,6 +844,39 @@ public final class Launcher extends Activity } } + class Padding { + int left = 0; + int right = 0; + int top = 0; + int bottom = 0; + } + + Padding getPaddingForWidget(AppWidgetProviderInfo widgetInfo) { + PackageManager packageManager = getPackageManager(); + Padding p = new Padding(); + android.content.pm.ApplicationInfo appInfo; + + try { + appInfo = packageManager.getApplicationInfo( + widgetInfo.provider.getPackageName(), 0); + } catch (Exception e) { + // if we can't find the package, return 0 padding + return p; + } + + // TODO: This should be ICE_CREAM_SANDWICH, but since the unbundled apps + // may not have updated their targetSdkVersion yet, we've bumped it down for now. + if (appInfo.targetSdkVersion >= Build.VERSION_CODES.HONEYCOMB_MR2) { + Resources r = getResources(); + p.left = r.getDimensionPixelSize(R.dimen.app_widget_padding_left); + p.right = r.getDimensionPixelSize(R.dimen.app_widget_padding_right); + p.top = r.getDimensionPixelSize(R.dimen.app_widget_padding_top); + p.bottom = r.getDimensionPixelSize(R.dimen.app_widget_padding_bottom); + } + + return p; + } + /** * Add a widget to the workspace. * @@ -857,15 +889,11 @@ public final class Launcher extends Activity // Calculate the grid spans needed to fit this widget CellLayout layout = getCellLayout(container, screen); + Padding padding = getPaddingForWidget(appWidgetInfo); // We want to account for the extra amount of padding that we are adding to the widget // to ensure that it gets the full amount of space that it has requested - Resources r = getResources(); - int requiredWidth = appWidgetInfo.minWidth + - r.getDimensionPixelSize(R.dimen.app_widget_padding_left) + - r.getDimensionPixelSize(R.dimen.app_widget_padding_right); - int requiredHeight = appWidgetInfo.minHeight + - r.getDimensionPixelSize(R.dimen.app_widget_padding_top) + - r.getDimensionPixelSize(R.dimen.app_widget_padding_bottom); + int requiredWidth = appWidgetInfo.minWidth + padding.left + padding.right; + int requiredHeight = appWidgetInfo.minHeight + padding.top + padding.bottom; int[] spanXY = layout.rectToCell(requiredWidth, requiredHeight, null); // Try finding open space on Launcher screen diff --git a/src/com/android/launcher2/LauncherAppWidgetHostView.java b/src/com/android/launcher2/LauncherAppWidgetHostView.java index 7c3b993ce..a84ced671 100644 --- a/src/com/android/launcher2/LauncherAppWidgetHostView.java +++ b/src/com/android/launcher2/LauncherAppWidgetHostView.java @@ -17,6 +17,7 @@ package com.android.launcher2; import android.appwidget.AppWidgetHostView; +import android.appwidget.AppWidgetProviderInfo; import android.content.Context; import android.content.res.Resources; import android.view.LayoutInflater; @@ -26,6 +27,7 @@ import android.view.ViewConfiguration; import android.view.ViewGroup; import com.android.launcher.R; +import com.android.launcher2.Launcher.Padding; /** * {@inheritDoc} @@ -34,17 +36,12 @@ public class LauncherAppWidgetHostView extends AppWidgetHostView { private boolean mHasPerformedLongPress; private CheckForLongPress mPendingCheckForLongPress; private LayoutInflater mInflater; + private Launcher mLauncher; public LauncherAppWidgetHostView(Context context) { super(context); mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); - - Resources r = context.getResources(); - // We add necessary padding to the AppWidgetHostView - setPadding(r.getDimensionPixelSize(R.dimen.app_widget_padding_left), - r.getDimensionPixelSize(R.dimen.app_widget_padding_top), - r.getDimensionPixelSize(R.dimen.app_widget_padding_right), - r.getDimensionPixelSize(R.dimen.app_widget_padding_bottom)); + mLauncher = (Launcher) context; } @Override @@ -119,6 +116,14 @@ public class LauncherAppWidgetHostView extends AppWidgetHostView { } @Override + public void setAppWidget(int appWidgetId, AppWidgetProviderInfo info) { + super.setAppWidget(appWidgetId, info); + // We add necessary padding to the AppWidgetHostView + Launcher.Padding padding = mLauncher.getPaddingForWidget(info); + setPadding(padding.left, padding.top, padding.right, padding.bottom); + } + + @Override public int getDescendantFocusability() { return ViewGroup.FOCUS_BLOCK_DESCENDANTS; } |