Merge "Removing wallpapers tab, adding shop icon back."
This commit is contained in:
commit
045dca8b11
|
@ -94,9 +94,7 @@
|
|||
launcher:widgetCellWidthGap="@dimen/apps_customize_widget_cell_width_gap"
|
||||
launcher:widgetCellHeightGap="@dimen/apps_customize_widget_cell_height_gap"
|
||||
launcher:widgetCountX="@integer/apps_customize_widget_cell_count_x"
|
||||
launcher:widgetCountY="@integer/apps_customize_widget_cell_count_y"
|
||||
launcher:wallpaperCountX="@integer/apps_customize_wallpaper_cell_count_x"
|
||||
launcher:wallpaperCountY="@integer/apps_customize_wallpaper_cell_count_y" />
|
||||
launcher:widgetCountY="@integer/apps_customize_widget_cell_count_y" />
|
||||
</FrameLayout>
|
||||
</LinearLayout>
|
||||
</com.android.launcher2.AppsCustomizeTabHost>
|
||||
|
|
|
@ -120,10 +120,6 @@
|
|||
<attr name="widgetCountX" format="integer" />
|
||||
<!-- Number of widgets vertically -->
|
||||
<attr name="widgetCountY" format="integer" />
|
||||
<!-- Number of wallpaper pickers horizontally -->
|
||||
<attr name="wallpaperCountX" format="integer" />
|
||||
<!-- Number of wallpaper pickers vertically -->
|
||||
<attr name="wallpaperCountY" format="integer" />
|
||||
</declare-styleable>
|
||||
|
||||
<!-- CustomizePagedView specific attributes. These attributes are used to customize
|
||||
|
|
|
@ -103,8 +103,8 @@
|
|||
</style>
|
||||
|
||||
<style name="MarketButton">
|
||||
<item name="android:paddingRight">20dp</item>
|
||||
<item name="android:text">@string/market</item>
|
||||
<item name="android:paddingLeft">5dp</item>
|
||||
<item name="android:paddingRight">5dp</item>
|
||||
<item name="android:textColor">@color/workspace_all_apps_and_delete_zone_text_color</item>
|
||||
<item name="android:textSize">18sp</item>
|
||||
<item name="android:shadowColor">@color/workspace_all_apps_and_delete_zone_text_shadow_color</item>
|
||||
|
|
|
@ -28,8 +28,6 @@ import android.animation.AnimatorListenerAdapter;
|
|||
import android.animation.AnimatorSet;
|
||||
import android.animation.ObjectAnimator;
|
||||
import android.animation.PropertyValuesHolder;
|
||||
import android.animation.ValueAnimator;
|
||||
import android.app.WallpaperManager;
|
||||
import android.appwidget.AppWidgetManager;
|
||||
import android.appwidget.AppWidgetProviderInfo;
|
||||
import android.content.ComponentName;
|
||||
|
@ -73,8 +71,7 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
|
|||
*/
|
||||
public enum ContentType {
|
||||
Applications,
|
||||
Widgets,
|
||||
Wallpapers
|
||||
Widgets
|
||||
}
|
||||
|
||||
// Refs
|
||||
|
@ -87,7 +84,6 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
|
|||
private ContentType mContentType;
|
||||
private ArrayList<ApplicationInfo> mApps;
|
||||
private List<Object> mWidgets;
|
||||
private List<ResolveInfo> mWallpapers;
|
||||
|
||||
// Caching
|
||||
private Drawable mDefaultWidgetBackground;
|
||||
|
@ -100,7 +96,6 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
|
|||
private int mMaxWidgetSpan, mMinWidgetSpan;
|
||||
private int mCellWidthGap, mCellHeightGap;
|
||||
private int mWidgetCountX, mWidgetCountY;
|
||||
private int mWallpaperCountX, mWallpaperCountY;
|
||||
private final int mWidgetPreviewIconPaddedDimension;
|
||||
private final float sWidgetPreviewIconPaddingPercentage = 0.25f;
|
||||
private PagedViewCellLayout mWidgetSpacingLayout;
|
||||
|
@ -117,7 +112,6 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
|
|||
mContentType = ContentType.Applications;
|
||||
mApps = new ArrayList<ApplicationInfo>();
|
||||
mWidgets = new ArrayList<Object>();
|
||||
mWallpapers = new ArrayList<ResolveInfo>();
|
||||
mIconCache = ((LauncherApplication) context.getApplicationContext()).getIconCache();
|
||||
mWidgetPreviewCache = new LruCache<Object, Bitmap>(sWidgetPreviewCacheSize) {
|
||||
protected int sizeOf(Object key, Bitmap value) {
|
||||
|
@ -140,8 +134,6 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
|
|||
a.getDimensionPixelSize(R.styleable.AppsCustomizePagedView_widgetCellHeightGap, 10);
|
||||
mWidgetCountX = a.getInt(R.styleable.AppsCustomizePagedView_widgetCountX, 2);
|
||||
mWidgetCountY = a.getInt(R.styleable.AppsCustomizePagedView_widgetCountY, 2);
|
||||
mWallpaperCountX = a.getInt(R.styleable.AppsCustomizePagedView_wallpaperCountX, 2);
|
||||
mWallpaperCountY = a.getInt(R.styleable.AppsCustomizePagedView_wallpaperCountY, 2);
|
||||
a.recycle();
|
||||
|
||||
// Create a dummy page that we can use to approximate the cell dimensions of widgets and
|
||||
|
@ -196,27 +188,6 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
|
|||
mWidgets.addAll(mPackageManager.queryIntentActivities(shortcutsIntent, 0));
|
||||
Collections.sort(mWidgets,
|
||||
new LauncherModel.WidgetAndShortcutNameComparator(mPackageManager));
|
||||
|
||||
// Get the list of wallpapers
|
||||
Intent wallpapersIntent = new Intent(Intent.ACTION_SET_WALLPAPER);
|
||||
mWallpapers = mPackageManager.queryIntentActivities(wallpapersIntent,
|
||||
PackageManager.GET_META_DATA);
|
||||
Collections.sort(mWallpapers,
|
||||
new LauncherModel.ShortcutNameComparator(mPackageManager));
|
||||
// Move Live Wallpapers to the front of the list
|
||||
Context c = getContext();
|
||||
ResolveInfo liveWallpapers = removeResolveInfoWithComponentName(mWallpapers,
|
||||
new ComponentName(c.getString(R.string.live_wallpaper_picker_package_name),
|
||||
c.getString(R.string.live_wallpaper_picker_class_name)));
|
||||
if (liveWallpapers != null) {
|
||||
mWallpapers.add(0, liveWallpapers);
|
||||
}
|
||||
// Move Wallpapers to the front of the list
|
||||
ResolveInfo wallpapers = removeResolveInfoWithComponentName(mWallpapers,
|
||||
new ComponentName(c.getPackageName(), WallpaperChooser.class.getName()));
|
||||
if (wallpapers != null) {
|
||||
mWallpapers.add(0, wallpapers);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -328,39 +299,31 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
|
|||
}
|
||||
});
|
||||
} else if (v instanceof PagedViewWidget) {
|
||||
if (v.getTag() instanceof ResolveInfo) {
|
||||
final ResolveInfo info = (ResolveInfo) v.getTag();
|
||||
if (mWallpapers.contains(info)) {
|
||||
// Start the wallpaper picker
|
||||
animateClickFeedback(v, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
// add the shortcut
|
||||
Intent createWallpapersIntent = new Intent(Intent.ACTION_SET_WALLPAPER);
|
||||
ComponentName name = new ComponentName(info.activityInfo.packageName,
|
||||
info.activityInfo.name);
|
||||
createWallpapersIntent.setComponent(name);
|
||||
mLauncher.processWallpaper(createWallpapersIntent);
|
||||
// Add the widget to the current workspace screen
|
||||
Workspace w = mLauncher.getWorkspace();
|
||||
int currentWorkspaceScreen = mLauncher.getCurrentWorkspaceScreen();
|
||||
final CellLayout cl = (CellLayout) w.getChildAt(currentWorkspaceScreen);
|
||||
final View dragView = v.findViewById(R.id.widget_preview);
|
||||
final ItemInfo itemInfo = (ItemInfo) v.getTag();
|
||||
animateClickFeedback(v, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
cl.calculateSpans(itemInfo);
|
||||
if (cl.findCellForSpan(null, itemInfo.spanX, itemInfo.spanY)) {
|
||||
if (LauncherApplication.isScreenLarge()) {
|
||||
animateItemOntoScreen(dragView, cl, itemInfo);
|
||||
} else {
|
||||
mLauncher.addExternalItemToScreen(itemInfo, cl);
|
||||
itemInfo.dropPos = null;
|
||||
}
|
||||
});
|
||||
}
|
||||
} else {
|
||||
// Let the user know that they have to long press to add a widget
|
||||
Toast.makeText(getContext(), R.string.long_press_widget_to_add,
|
||||
Toast.LENGTH_SHORT).show();
|
||||
|
||||
// Create a little animation to show that the widget can move
|
||||
float offsetY = getResources().getDimensionPixelSize(R.dimen.dragViewOffsetY);
|
||||
final ImageView p = (ImageView) v.findViewById(R.id.widget_preview);
|
||||
AnimatorSet bounce = new AnimatorSet();
|
||||
ValueAnimator tyuAnim = ObjectAnimator.ofFloat(p, "translationY", offsetY);
|
||||
tyuAnim.setDuration(125);
|
||||
ValueAnimator tydAnim = ObjectAnimator.ofFloat(p, "translationY", 0f);
|
||||
tydAnim.setDuration(100);
|
||||
bounce.play(tyuAnim).before(tydAnim);
|
||||
bounce.setInterpolator(new AccelerateInterpolator());
|
||||
bounce.start();
|
||||
}
|
||||
// Hide the pane so we can see the workspace we dropped on
|
||||
mLauncher.showWorkspace(true);
|
||||
} else {
|
||||
mLauncher.showOutOfSpaceMessage();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -797,160 +760,6 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* This method fetches an xml file specified in the manifest identified by
|
||||
* WallpaperManager.WALLPAPER_PREVIEW_META_DATA). The xml file specifies
|
||||
* an image which will be used as the wallpaper preview for an activity
|
||||
* which responds to ACTION_SET_WALLPAPER. This image is returned and used
|
||||
* in the customize drawer.
|
||||
*/
|
||||
private Drawable parseWallpaperPreviewXml(ResolveInfo ri) {
|
||||
ActivityInfo activityInfo = ri.activityInfo;
|
||||
XmlResourceParser parser = null;
|
||||
ComponentName component = new ComponentName(ri.activityInfo.packageName,
|
||||
ri.activityInfo.name);
|
||||
try {
|
||||
parser = activityInfo.loadXmlMetaData(mPackageManager,
|
||||
WallpaperManager.WALLPAPER_PREVIEW_META_DATA);
|
||||
if (parser == null) {
|
||||
Slog.w(LOG_TAG, "No " + WallpaperManager.WALLPAPER_PREVIEW_META_DATA
|
||||
+ " meta-data for " + "wallpaper provider '" + component + '\'');
|
||||
return null;
|
||||
}
|
||||
|
||||
AttributeSet attrs = Xml.asAttributeSet(parser);
|
||||
|
||||
int type;
|
||||
while ((type=parser.next()) != XmlPullParser.END_DOCUMENT
|
||||
&& type != XmlPullParser.START_TAG) {
|
||||
// drain whitespace, comments, etc.
|
||||
}
|
||||
|
||||
String nodeName = parser.getName();
|
||||
if (!"wallpaper-preview".equals(nodeName)) {
|
||||
Slog.w(LOG_TAG, "Meta-data does not start with wallpaper-preview tag for "
|
||||
+ "wallpaper provider '" + component + '\'');
|
||||
return null;
|
||||
}
|
||||
|
||||
// If metaData was null, we would have returned earlier when getting
|
||||
// the parser No need to do the check here
|
||||
Resources res = mPackageManager.getResourcesForApplication(
|
||||
activityInfo.applicationInfo);
|
||||
|
||||
TypedArray sa = res.obtainAttributes(attrs,
|
||||
com.android.internal.R.styleable.WallpaperPreviewInfo);
|
||||
|
||||
TypedValue value = sa.peekValue(
|
||||
com.android.internal.R.styleable.WallpaperPreviewInfo_staticWallpaperPreview);
|
||||
if (value == null) return null;
|
||||
|
||||
return res.getDrawable(value.resourceId);
|
||||
} catch (Exception e) {
|
||||
Slog.w(LOG_TAG, "XML parsing failed for wallpaper provider '" + component + '\'', e);
|
||||
return null;
|
||||
} finally {
|
||||
if (parser != null) parser.close();
|
||||
}
|
||||
}
|
||||
private FastBitmapDrawable getWallpaperPreview(ResolveInfo info, int cellWidth, int cellHeight){
|
||||
// Return the cached version if necessary
|
||||
Bitmap cachedBitmap = mWidgetPreviewCache.get(info);
|
||||
if (cachedBitmap != null) {
|
||||
return new FastBitmapDrawable(cachedBitmap);
|
||||
}
|
||||
|
||||
// Get the preview
|
||||
Resources resources = getContext().getResources();
|
||||
Drawable wallpaperPreview = parseWallpaperPreviewXml(info);
|
||||
Drawable wallpaperIcon = null;
|
||||
int expectedWidth;
|
||||
int expectedHeight;
|
||||
if (wallpaperPreview != null) {
|
||||
expectedWidth = wallpaperPreview.getIntrinsicWidth();
|
||||
expectedHeight = wallpaperPreview.getIntrinsicHeight();
|
||||
} else {
|
||||
wallpaperPreview = mDefaultWidgetBackground;
|
||||
expectedWidth = expectedHeight = Math.min(cellWidth, cellHeight);
|
||||
|
||||
// Draw the icon in the top left corner
|
||||
String packageName = info.activityInfo.packageName;
|
||||
try {
|
||||
if (info.icon > 0) {
|
||||
wallpaperIcon = mPackageManager.getDrawable(packageName, info.icon, null);
|
||||
}
|
||||
if (wallpaperIcon == null) {
|
||||
wallpaperIcon = resources.getDrawable(R.drawable.ic_launcher_application);
|
||||
}
|
||||
} catch (Resources.NotFoundException e) {}
|
||||
}
|
||||
|
||||
// Create the bitmap
|
||||
Bitmap preview = Bitmap.createBitmap(expectedWidth, expectedHeight, Config.ARGB_8888);
|
||||
renderDrawableToBitmap(wallpaperPreview, preview, 0, 0, expectedWidth, expectedHeight,
|
||||
1f, 1f);
|
||||
if (wallpaperIcon != null) {
|
||||
int iconSize = resources.getDimensionPixelSize(R.dimen.app_icon_size);
|
||||
int offset = (int) (iconSize * sWidgetPreviewIconPaddingPercentage);
|
||||
renderDrawableToBitmap(wallpaperIcon, preview, offset, offset, iconSize, iconSize,
|
||||
1f, 1f);
|
||||
}
|
||||
|
||||
FastBitmapDrawable previewDrawable = new FastBitmapDrawable(preview);
|
||||
previewDrawable.setBounds(0, 0, expectedWidth, expectedHeight);
|
||||
mWidgetPreviewCache.put(info, preview);
|
||||
return previewDrawable;
|
||||
}
|
||||
/*
|
||||
* Wallpapers PagedView implementation
|
||||
*/
|
||||
public void syncWallpaperPages() {
|
||||
// Ensure that we have the right number of pages
|
||||
Context context = getContext();
|
||||
int numWidgetsPerPage = mWallpaperCountX * mWallpaperCountY;
|
||||
int numPages = (int) Math.ceil(mWallpapers.size() / (float) numWidgetsPerPage);
|
||||
for (int i = 0; i < numPages; ++i) {
|
||||
PagedViewGridLayout layout = new PagedViewGridLayout(context, mWallpaperCountX,
|
||||
mWallpaperCountY);
|
||||
setupPage(layout);
|
||||
addView(layout);
|
||||
}
|
||||
}
|
||||
public void syncWallpaperPageItems(int page) {
|
||||
PagedViewGridLayout layout = (PagedViewGridLayout) getChildAt(page);
|
||||
layout.removeAllViews();
|
||||
|
||||
// Calculate the dimensions of each cell we are giving to each widget
|
||||
int numWidgetsPerPage = mWallpaperCountX * mWallpaperCountY;
|
||||
int offset = page * numWidgetsPerPage;
|
||||
int cellWidth = ((mWidgetSpacingLayout.getContentWidth() - mPageLayoutWidthGap
|
||||
- ((mWallpaperCountX - 1) * mCellWidthGap)) / mWallpaperCountX);
|
||||
int cellHeight = ((mWidgetSpacingLayout.getContentHeight() - mPageLayoutHeightGap
|
||||
- ((mWallpaperCountY - 1) * mCellHeightGap)) / mWallpaperCountY);
|
||||
for (int i = 0; i < Math.min(numWidgetsPerPage, mWallpapers.size() - offset); ++i) {
|
||||
ResolveInfo info = mWallpapers.get(offset + i);
|
||||
PagedViewWidget widget = (PagedViewWidget) mLayoutInflater.inflate(
|
||||
R.layout.apps_customize_wallpaper, layout, false);
|
||||
|
||||
// Fill in the shortcuts information
|
||||
FastBitmapDrawable preview = getWallpaperPreview(info, cellWidth, cellHeight);
|
||||
widget.applyFromResolveInfo(mPackageManager, info, preview, null, false);
|
||||
widget.setTag(info);
|
||||
widget.setOnClickListener(this);
|
||||
widget.setOnLongClickListener(this);
|
||||
widget.setOnTouchListener(this);
|
||||
|
||||
// Layout each widget
|
||||
int ix = i % mWallpaperCountX;
|
||||
int iy = i / mWallpaperCountX;
|
||||
PagedViewGridLayout.LayoutParams lp = new PagedViewGridLayout.LayoutParams(cellWidth,
|
||||
cellHeight);
|
||||
lp.leftMargin = (ix * cellWidth) + (ix * mCellWidthGap);
|
||||
lp.topMargin = (iy * cellHeight) + (iy * mCellHeightGap);
|
||||
layout.addView(widget, lp);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void syncPages() {
|
||||
removeAllViews();
|
||||
|
@ -961,9 +770,6 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
|
|||
case Widgets:
|
||||
syncWidgetPages();
|
||||
break;
|
||||
case Wallpapers:
|
||||
syncWallpaperPages();
|
||||
break;
|
||||
}
|
||||
}
|
||||
@Override
|
||||
|
@ -975,9 +781,6 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
|
|||
case Widgets:
|
||||
syncWidgetPageItems(page);
|
||||
break;
|
||||
case Wallpapers:
|
||||
syncWallpaperPageItems(page);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -33,7 +33,6 @@ public class AppsCustomizeTabHost extends TabHost implements LauncherTransitiona
|
|||
|
||||
private static final String APPS_TAB_TAG = "APPS";
|
||||
private static final String WIDGETS_TAB_TAG = "WIDGETS";
|
||||
private static final String WALLPAPERS_TAB_TAG = "WALLPAPERS";
|
||||
|
||||
private final LayoutInflater mLayoutInflater;
|
||||
|
||||
|
@ -78,9 +77,6 @@ public class AppsCustomizeTabHost extends TabHost implements LauncherTransitiona
|
|||
tabView = (TextView) mLayoutInflater.inflate(R.layout.tab_widget_indicator, tabs, false);
|
||||
tabView.setText(mContext.getString(R.string.widgets_tab_label));
|
||||
addTab(newTabSpec(WIDGETS_TAB_TAG).setIndicator(tabView).setContent(contentFactory));
|
||||
tabView = (TextView) mLayoutInflater.inflate(R.layout.tab_widget_indicator, tabs, false);
|
||||
tabView.setText(mContext.getString(R.string.wallpapers_tab_label));
|
||||
addTab(newTabSpec(WALLPAPERS_TAB_TAG).setIndicator(tabView).setContent(contentFactory));
|
||||
setOnTabChangedListener(this);
|
||||
|
||||
// Set the width of the tab bar to match the content (for now)
|
||||
|
@ -102,8 +98,6 @@ public class AppsCustomizeTabHost extends TabHost implements LauncherTransitiona
|
|||
return AppsCustomizePagedView.ContentType.Applications;
|
||||
} else if (tag.equals(WIDGETS_TAB_TAG)) {
|
||||
return AppsCustomizePagedView.ContentType.Widgets;
|
||||
} else if (tag.equals(WALLPAPERS_TAB_TAG)) {
|
||||
return AppsCustomizePagedView.ContentType.Wallpapers;
|
||||
}
|
||||
return AppsCustomizePagedView.ContentType.Applications;
|
||||
}
|
||||
|
@ -116,8 +110,6 @@ public class AppsCustomizeTabHost extends TabHost implements LauncherTransitiona
|
|||
return APPS_TAB_TAG;
|
||||
} else if (type == AppsCustomizePagedView.ContentType.Widgets) {
|
||||
return WIDGETS_TAB_TAG;
|
||||
} else if (type == AppsCustomizePagedView.ContentType.Wallpapers) {
|
||||
return WALLPAPERS_TAB_TAG;
|
||||
}
|
||||
return APPS_TAB_TAG;
|
||||
}
|
||||
|
|
|
@ -3217,7 +3217,7 @@ public final class Launcher extends Activity
|
|||
// Find the app market activity by resolving an intent.
|
||||
// (If multiple app markets are installed, it will return the ResolverActivity.)
|
||||
ComponentName activityName = intent.resolveActivity(getPackageManager());
|
||||
if (activityName != null && LauncherApplication.isScreenLarge()) {
|
||||
if (activityName != null) {
|
||||
mAppMarketIntent = intent;
|
||||
sAppMarketIcon = updateTextButtonWithIconFromExternalActivity(
|
||||
R.id.market_button, activityName, R.drawable.app_market_generic);
|
||||
|
|
Loading…
Reference in New Issue