OSDN Git Service

Merge "Adding market search." into ub-launcher3-burnaby
authorWinson Chung <winsonc@google.com>
Mon, 10 Aug 2015 22:55:40 +0000 (22:55 +0000)
committerAndroid (Google) Code Review <android-gerrit@google.com>
Mon, 10 Aug 2015 22:55:40 +0000 (22:55 +0000)
WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java
src/com/android/launcher3/AutoInstallsLayout.java
src/com/android/launcher3/BaseContainerView.java
src/com/android/launcher3/Launcher.java
src/com/android/launcher3/WidgetPreviewLoader.java
src/com/android/launcher3/compat/UserManagerCompatV17.java
src/com/android/launcher3/compat/UserManagerCompatVL.java

index c723b39..069638f 100644 (file)
@@ -551,6 +551,10 @@ public class WallpaperPickerActivity extends WallpaperCropActivity {
                     @Override
                     public void onClick(View v) {
                         if (mSelectedTile != null) {
+                            // Prevent user from selecting any new tile.
+                            mWallpaperStrip.setVisibility(View.GONE);
+                            actionBar.hide();
+
                             WallpaperTileInfo info = (WallpaperTileInfo) mSelectedTile.getTag();
                             info.onSave(WallpaperPickerActivity.this);
                         } else {
index 99a98dd..440e4e7 100644 (file)
@@ -355,7 +355,7 @@ public class AutoInstallsLayout {
                     return addShortcut(info.loadLabel(mPackageManager).toString(),
                             intent, Favorites.ITEM_TYPE_APPLICATION);
                 } catch (PackageManager.NameNotFoundException e) {
-                    if (LOGD) Log.w(TAG, "Unable to add favorite: " + packageName + "/" + className, e);
+                    Log.e(TAG, "Unable to add favorite: " + packageName + "/" + className, e);
                 }
                 return -1;
             } else {
@@ -367,7 +367,7 @@ public class AutoInstallsLayout {
          * Helper method to allow extending the parser capabilities
          */
         protected long invalidPackageOrClass(XmlResourceParser parser) {
-            if (LOGD) Log.d(TAG, "Skipping invalid <favorite> with no component");
+            Log.w(TAG, "Skipping invalid <favorite> with no component");
             return -1;
         }
     }
index c8de9df..c118240 100644 (file)
@@ -34,10 +34,12 @@ public abstract class BaseContainerView extends LinearLayout implements Insettab
     // The bounds of the search bar.  Only the left, top, right are used to inset the
     // search bar and the height is determined by the measurement of the layout
     private Rect mFixedSearchBarBounds = new Rect();
-    // The bounds of the container
+    // The computed bounds of the search bar
+    private Rect mSearchBarBounds = new Rect();
+    // The computed bounds of the container
     protected Rect mContentBounds = new Rect();
-    // The padding to apply to the container to achieve the bounds
-    protected Rect mContentPadding = new Rect();
+    // The computed padding to apply to the container to achieve the container bounds
+    private Rect mContentPadding = new Rect();
     // The inset to apply to the edges and between the search bar and the container
     private int mContainerBoundsInset;
     private boolean mHasSearchBar;
@@ -90,7 +92,7 @@ public abstract class BaseContainerView extends LinearLayout implements Insettab
      */
     protected void updateBackgroundAndPaddings() {
         Rect padding;
-        Rect searchBarBounds = new Rect(mFixedSearchBarBounds);
+        Rect searchBarBounds = new Rect();
         if (!isValidSearchBarBounds(mFixedSearchBarBounds)) {
             // Use the default bounds
             padding = new Rect(mInsets.left + mContainerBoundsInset,
@@ -110,14 +112,20 @@ public abstract class BaseContainerView extends LinearLayout implements Insettab
                     (mHasSearchBar ? 0 : (mInsets.top + mContainerBoundsInset)),
                     getMeasuredWidth() - mFixedSearchBarBounds.right,
                     mInsets.bottom + mContainerBoundsInset);
+
+            // Use the search bounds
+            searchBarBounds.set(mFixedSearchBarBounds);
         }
-        if (!padding.equals(mContentPadding) || !searchBarBounds.equals(mFixedSearchBarBounds)) {
+
+        // If either the computed container padding has changed, or the computed search bar bounds
+        // has changed, then notify the container
+        if (!padding.equals(mContentPadding) || !searchBarBounds.equals(mSearchBarBounds)) {
             mContentPadding.set(padding);
             mContentBounds.set(padding.left, padding.top,
                     getMeasuredWidth() - padding.right,
                     getMeasuredHeight() - padding.bottom);
-            mFixedSearchBarBounds.set(searchBarBounds);
-            onUpdateBackgroundAndPaddings(mFixedSearchBarBounds, padding);
+            mSearchBarBounds.set(searchBarBounds);
+            onUpdateBackgroundAndPaddings(mSearchBarBounds, padding);
         }
     }
 
index 2d338e3..298b2c4 100644 (file)
@@ -742,6 +742,7 @@ public class Launcher extends Activity
         };
 
         if (requestCode == REQUEST_BIND_APPWIDGET) {
+            // This is called only if the user did not previously have permissions to bind widgets
             final int appWidgetId = data != null ?
                     data.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, -1) : -1;
             if (resultCode == RESULT_CANCELED) {
@@ -751,6 +752,10 @@ public class Launcher extends Activity
             } else if (resultCode == RESULT_OK) {
                 addAppWidgetImpl(appWidgetId, mPendingAddInfo, null,
                         mPendingAddWidgetInfo, ON_ACTIVITY_RESULT_ANIMATION_DELAY);
+
+                // When the user has granted permission to bind widgets, we should check to see if
+                // we can inflate the default search bar widget.
+                getOrCreateQsbBar();
             }
             return;
         } else if (requestCode == REQUEST_PICK_WALLPAPER) {
index 1fb795a..3d50587 100644 (file)
@@ -212,7 +212,6 @@ public class WidgetPreviewLoader {
     public void removeObsoletePreviews(ArrayList<Object> list) {
         Utilities.assertWorkerThread();
 
-        LongSparseArray<UserHandleCompat> userIdCache = new LongSparseArray<>();
         LongSparseArray<HashSet<String>> validPackages = new LongSparseArray<>();
 
         for (Object obj : list) {
@@ -227,15 +226,7 @@ public class WidgetPreviewLoader {
                 pkg = info.provider.getPackageName();
             }
 
-            int userIdIndex = userIdCache.indexOfValue(user);
-            final long userId;
-            if (userIdIndex < 0) {
-                userId = mUserManager.getSerialNumberForUser(user);
-                userIdCache.put(userId, user);
-            } else {
-                userId = userIdCache.keyAt(userIdIndex);
-            }
-
+            final long userId = mUserManager.getSerialNumberForUser(user);
             HashSet<String> packages = validPackages.get(userId);
             if (packages == null) {
                 packages = new HashSet<>();
index 1687569..75203b7 100644 (file)
@@ -23,10 +23,16 @@ import android.os.UserManager;
 
 import com.android.launcher3.util.LongArrayMap;
 
+import java.util.HashMap;
+
 @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
 public class UserManagerCompatV17 extends UserManagerCompatV16 {
 
     protected LongArrayMap<UserHandleCompat> mUsers;
+    // Create a separate reverse map as LongArrayMap.indexOfValue checks if objects are same
+    // and not {@link Object#equals}
+    protected HashMap<UserHandleCompat, Long> mUserToSerialMap;
+
     protected UserManager mUserManager;
 
     UserManagerCompatV17(Context context) {
@@ -35,9 +41,9 @@ public class UserManagerCompatV17 extends UserManagerCompatV16 {
 
     public long getSerialNumberForUser(UserHandleCompat user) {
         synchronized (this) {
-            if (mUsers != null) {
-                int index = mUsers.indexOfValue(user);
-                return (index >= 0) ? mUsers.keyAt(index) : 0;
+            if (mUserToSerialMap != null) {
+                Long serial = mUserToSerialMap.get(user);
+                return serial == null ? 0 : serial;
             }
         }
         return mUserManager.getSerialNumberForUser(user.getUser());
@@ -55,9 +61,12 @@ public class UserManagerCompatV17 extends UserManagerCompatV16 {
     @Override
     public void enableAndResetCache() {
         synchronized (this) {
-            mUsers = new LongArrayMap<UserHandleCompat>();
+            mUsers = new LongArrayMap<>();
+            mUserToSerialMap = new HashMap<>();
             UserHandleCompat myUser = UserHandleCompat.myUserHandle();
-            mUsers.put(mUserManager.getSerialNumberForUser(myUser.getUser()), myUser);
+            long serial = mUserManager.getSerialNumberForUser(myUser.getUser());
+            mUsers.put(serial, myUser);
+            mUserToSerialMap.put(myUser, serial);
         }
     }
 }
index 04cd0fd..4d404db 100644 (file)
@@ -30,6 +30,7 @@ import com.android.launcher3.util.LongArrayMap;
 
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
 
 @TargetApi(Build.VERSION_CODES.LOLLIPOP)
@@ -48,12 +49,15 @@ public class UserManagerCompatVL extends UserManagerCompatV17 {
     @Override
     public void enableAndResetCache() {
         synchronized (this) {
-            mUsers = new LongArrayMap<UserHandleCompat>();
+            mUsers = new LongArrayMap<>();
+            mUserToSerialMap = new HashMap<>();
             List<UserHandle> users = mUserManager.getUserProfiles();
             if (users != null) {
                 for (UserHandle user : users) {
-                    mUsers.put(mUserManager.getSerialNumberForUser(user),
-                            UserHandleCompat.fromUser(user));
+                    long serial = mUserManager.getSerialNumberForUser(user);
+                    UserHandleCompat userCompat = UserHandleCompat.fromUser(user);
+                    mUsers.put(serial, userCompat);
+                    mUserToSerialMap.put(userCompat, serial);
                 }
             }
         }
@@ -64,9 +68,7 @@ public class UserManagerCompatVL extends UserManagerCompatV17 {
         synchronized (this) {
             if (mUsers != null) {
                 List<UserHandleCompat> users = new ArrayList<>();
-                for (UserHandleCompat user : mUsers) {
-                    users.add(user);
-                }
+                users.addAll(mUserToSerialMap.keySet());
                 return users;
             }
         }