Substitute ShortcutInfo for PeopleSpaceTile.

Change-Id: I35570d8ef47822598450e958c1bcbd0d298a1371
Test: Build and run.
This commit is contained in:
Flavio Fiszman
2020-11-24 22:09:00 +00:00
parent b4e1f173ad
commit e3d7a74db9
8 changed files with 171 additions and 101 deletions

View File

@@ -18,7 +18,12 @@ package android.app.people;
import android.annotation.NonNull;
import android.content.Intent;
import android.content.pm.LauncherApps;
import android.content.pm.ShortcutInfo;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Icon;
import android.net.Uri;
import android.os.Parcel;
@@ -147,10 +152,10 @@ public class PeopleSpaceTile implements Parcelable {
mPackageName = intent == null ? null : intent.getPackage();
}
public Builder(ShortcutInfo info) {
public Builder(ShortcutInfo info, LauncherApps launcherApps) {
mId = info.getId();
mUserName = info.getLabel();
mUserIcon = info.getIcon();
mUserIcon = convertDrawableToIcon(launcherApps.getShortcutIconDrawable(info, 0));
mUid = info.getUserId();
mPackageName = info.getPackage();
}
@@ -270,4 +275,32 @@ public class PeopleSpaceTile implements Parcelable {
return new PeopleSpaceTile[size];
}
};
/** Converts {@code drawable} to a {@link Icon}. */
public static Icon convertDrawableToIcon(Drawable drawable) {
if (drawable == null) {
return null;
}
if (drawable instanceof BitmapDrawable) {
BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable;
if (bitmapDrawable.getBitmap() != null) {
return Icon.createWithBitmap(bitmapDrawable.getBitmap());
}
}
Bitmap bitmap;
if (drawable.getIntrinsicWidth() <= 0 || drawable.getIntrinsicHeight() <= 0) {
bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888);
// Single color bitmap will be created of 1x1 pixel
} else {
bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(),
drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
}
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
drawable.draw(canvas);
return Icon.createWithBitmap(bitmap);
}
}

View File

@@ -21,11 +21,18 @@ import static com.google.common.truth.Truth.assertThat;
import static junit.framework.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.when;
import android.app.Notification;
import android.content.Context;
import android.content.Intent;
import android.content.pm.LauncherApps;
import android.content.pm.ShortcutInfo;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Icon;
import android.net.Uri;
import android.os.UserHandle;
@@ -38,26 +45,37 @@ import androidx.test.runner.AndroidJUnit4;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
@RunWith(AndroidJUnit4.class)
@SmallTest
public class PeopleSpaceTileTest {
private Context mContext;
private final Drawable mDrawable = new ColorDrawable(Color.BLUE);
private final Icon mIcon = PeopleSpaceTile.convertDrawableToIcon(mDrawable);
@Mock
private LauncherApps mLauncherApps;
@Before
public void setUp() {
mContext = InstrumentationRegistry.getContext();
MockitoAnnotations.initMocks(this);
when(mLauncherApps.getShortcutIconDrawable(any(), eq(0))).thenReturn(mDrawable);
}
@Test
public void testId() {
PeopleSpaceTile tile = new PeopleSpaceTile.Builder(
new ShortcutInfo.Builder(mContext, "123").build()).build();
new ShortcutInfo.Builder(mContext, "123").build(), mLauncherApps).build();
assertThat(tile.getId()).isEqualTo("123");
tile = new PeopleSpaceTile.Builder(new ShortcutInfo.Builder(mContext, "123").build()).setId(
"5").build();
tile = new PeopleSpaceTile
.Builder(new ShortcutInfo.Builder(mContext, "123").build(), mLauncherApps)
.setId("5")
.build();
assertThat(tile.getId()).isEqualTo("5");
tile = new PeopleSpaceTile.Builder("12", null, null, null).build();
@@ -67,11 +85,13 @@ public class PeopleSpaceTileTest {
@Test
public void testUserName() {
PeopleSpaceTile tile = new PeopleSpaceTile.Builder(
new ShortcutInfo.Builder(mContext, "123").build()).build();
new ShortcutInfo.Builder(mContext, "123").build(), mLauncherApps).build();
assertThat(tile.getUserName()).isNull();
tile = new PeopleSpaceTile.Builder(
new ShortcutInfo.Builder(mContext, "123").build()).setUserName("Name 1").build();
tile = new PeopleSpaceTile
.Builder(new ShortcutInfo.Builder(mContext, "123").build(), mLauncherApps)
.setUserName("Name 1")
.build();
assertThat(tile.getUserName()).isEqualTo("Name 1");
tile = new PeopleSpaceTile.Builder(null, "Name 2", null, null).build();
@@ -81,21 +101,19 @@ public class PeopleSpaceTileTest {
@Test
public void testUserIcon() {
PeopleSpaceTile tile = new PeopleSpaceTile.Builder(
new ShortcutInfo.Builder(mContext, "123").build()).setUserIcon(
Icon.createWithResource(mContext, 1)).build();
assertThat(tile.getUserIcon().toString()).isEqualTo(
Icon.createWithResource(mContext, 1).toString());
new ShortcutInfo.Builder(mContext, "123").build(), mLauncherApps).setUserIcon(
mIcon).build();
assertThat(tile.getUserIcon().toString()).isEqualTo(mIcon.toString());
tile = new PeopleSpaceTile.Builder("12", null, Icon.createWithResource(mContext, 2),
tile = new PeopleSpaceTile.Builder("12", null, mIcon,
null).build();
assertThat(tile.getUserIcon().toString()).isEqualTo(
Icon.createWithResource(mContext, 2).toString());
assertThat(tile.getUserIcon().toString()).isEqualTo(mIcon.toString());
}
@Test
public void testContactUri() {
PeopleSpaceTile tile = new PeopleSpaceTile.Builder(
new ShortcutInfo.Builder(mContext, "123").build()).setContactUri(
new ShortcutInfo.Builder(mContext, "123").build(), mLauncherApps).setContactUri(
Uri.parse("test")).build();
assertThat(tile.getContactUri()).isEqualTo(Uri.parse("test"));
@@ -103,8 +121,10 @@ public class PeopleSpaceTileTest {
@Test
public void testUid() {
PeopleSpaceTile tile = new PeopleSpaceTile.Builder(
new ShortcutInfo.Builder(mContext, "123").build()).setUid(42).build();
PeopleSpaceTile tile = new PeopleSpaceTile
.Builder(new ShortcutInfo.Builder(mContext, "123").build(), mLauncherApps)
.setUid(42)
.build();
assertThat(tile.getUid()).isEqualTo(42);
}
@@ -112,12 +132,12 @@ public class PeopleSpaceTileTest {
@Test
public void testPackageName() {
PeopleSpaceTile tile = new PeopleSpaceTile.Builder(
new ShortcutInfo.Builder(mContext, "123").build()).build();
new ShortcutInfo.Builder(mContext, "123").build(), mLauncherApps).build();
// Automatically added by creating a ShortcutInfo.
assertThat(tile.getPackageName()).isEqualTo("com.android.frameworks.coretests");
tile = new PeopleSpaceTile.Builder(
new ShortcutInfo.Builder(mContext, "123").build()).setPackageName(
new ShortcutInfo.Builder(mContext, "123").build(), mLauncherApps).setPackageName(
"package.name").build();
assertThat(tile.getPackageName()).isEqualTo("package.name");
@@ -129,36 +149,39 @@ public class PeopleSpaceTileTest {
@Test
public void testLastInteractionTimestamp() {
PeopleSpaceTile tile = new PeopleSpaceTile.Builder(
new ShortcutInfo.Builder(mContext, "123").build()).build();
new ShortcutInfo.Builder(mContext, "123").build(), mLauncherApps).build();
assertThat(tile.getLastInteractionTimestamp()).isEqualTo(0L);
tile = new PeopleSpaceTile.Builder(
new ShortcutInfo.Builder(mContext, "123").build()).setLastInteractionTimestamp(
7L).build();
tile = new PeopleSpaceTile
.Builder(new ShortcutInfo.Builder(mContext, "123").build(), mLauncherApps)
.setLastInteractionTimestamp(7L)
.build();
assertThat(tile.getLastInteractionTimestamp()).isEqualTo(7L);
}
@Test
public void testImportantConversation() {
PeopleSpaceTile tile = new PeopleSpaceTile.Builder(
new ShortcutInfo.Builder(mContext, "123").build()).build();
new ShortcutInfo.Builder(mContext, "123").build(), mLauncherApps).build();
assertFalse(tile.isImportantConversation());
tile = new PeopleSpaceTile.Builder(
new ShortcutInfo.Builder(mContext, "123").build()).setIsImportantConversation(
true).build();
tile = new PeopleSpaceTile
.Builder(new ShortcutInfo.Builder(mContext, "123").build(), mLauncherApps)
.setIsImportantConversation(true)
.build();
assertTrue(tile.isImportantConversation());
}
@Test
public void testHiddenConversation() {
PeopleSpaceTile tile = new PeopleSpaceTile.Builder(
new ShortcutInfo.Builder(mContext, "123").build()).build();
new ShortcutInfo.Builder(mContext, "123").build(), mLauncherApps).build();
assertFalse(tile.isHiddenConversation());
tile = new PeopleSpaceTile.Builder(
new ShortcutInfo.Builder(mContext, "123").build()).setIsHiddenConversation(
true).build();
tile = new PeopleSpaceTile
.Builder(new ShortcutInfo.Builder(mContext, "123").build(), mLauncherApps)
.setIsHiddenConversation(true)
.build();
assertTrue(tile.isHiddenConversation());
}
@@ -168,8 +191,10 @@ public class PeopleSpaceTileTest {
StatusBarNotification sbn = new StatusBarNotification("pkg" /* pkg */, "pkg" /* opPkg */,
1 /* id */, "" /* tag */, 0 /* uid */, 0 /* initialPid */, 0 /* score */,
notification, UserHandle.CURRENT, 0 /* postTime */);
PeopleSpaceTile tile = new PeopleSpaceTile.Builder(
new ShortcutInfo.Builder(mContext, "123").build()).setNotification(sbn).build();
PeopleSpaceTile tile = new PeopleSpaceTile
.Builder(new ShortcutInfo.Builder(mContext, "123").build(), mLauncherApps)
.setNotification(sbn)
.build();
assertThat(tile.getNotification()).isEqualTo(sbn);
}
@@ -177,11 +202,13 @@ public class PeopleSpaceTileTest {
@Test
public void testIntent() {
PeopleSpaceTile tile = new PeopleSpaceTile.Builder(
new ShortcutInfo.Builder(mContext, "123").build()).build();
new ShortcutInfo.Builder(mContext, "123").build(), mLauncherApps).build();
assertThat(tile.getIntent()).isNull();
tile = new PeopleSpaceTile.Builder(
new ShortcutInfo.Builder(mContext, "123").build()).setIntent(new Intent()).build();
tile = new PeopleSpaceTile
.Builder(new ShortcutInfo.Builder(mContext, "123").build(), mLauncherApps)
.setIntent(new Intent())
.build();
assertThat(tile.getIntent().toString()).isEqualTo(new Intent().toString());
tile = new PeopleSpaceTile.Builder("12", null, null, new Intent()).build();

View File

@@ -19,10 +19,10 @@ package com.android.systemui.people;
import android.app.Activity;
import android.app.INotificationManager;
import android.app.people.IPeopleManager;
import android.app.people.PeopleSpaceTile;
import android.content.Context;
import android.content.pm.LauncherApps;
import android.content.pm.PackageManager;
import android.content.pm.ShortcutInfo;
import android.os.Bundle;
import android.os.ServiceManager;
import android.util.Log;
@@ -68,13 +68,13 @@ public class PeopleSpaceActivity extends Activity {
*/
private void setTileViewsWithPriorityConversations() {
try {
List<Map.Entry<Long, ShortcutInfo>> shortcutInfos = PeopleSpaceUtils.getShortcutInfos(
mContext, mNotificationManager, mPeopleManager);
for (Map.Entry<Long, ShortcutInfo> entry : shortcutInfos) {
ShortcutInfo shortcutInfo = entry.getValue();
List<Map.Entry<Long, PeopleSpaceTile>> tiles = PeopleSpaceUtils.getTiles(
mContext, mNotificationManager, mPeopleManager, mLauncherApps);
for (Map.Entry<Long, PeopleSpaceTile> entry : tiles) {
PeopleSpaceTile tile = entry.getValue();
PeopleSpaceTileView tileView = new PeopleSpaceTileView(mContext, mPeopleSpaceLayout,
shortcutInfo.getId());
setTileView(tileView, shortcutInfo, entry.getKey());
tile.getId());
setTileView(tileView, tile, entry.getKey());
}
} catch (Exception e) {
Log.e(TAG, "Couldn't retrieve conversations", e);
@@ -82,18 +82,18 @@ public class PeopleSpaceActivity extends Activity {
}
/** Sets {@code tileView} with the data in {@code conversation}. */
private void setTileView(PeopleSpaceTileView tileView, ShortcutInfo shortcutInfo,
private void setTileView(PeopleSpaceTileView tileView, PeopleSpaceTile tile,
long lastInteraction) {
try {
String pkg = shortcutInfo.getPackage();
String pkg = tile.getPackageName();
String status =
PeopleSpaceUtils.getLastInteractionString(mContext, lastInteraction);
tileView.setStatus(status);
tileView.setName(shortcutInfo.getLabel().toString());
tileView.setName(tile.getUserName().toString());
tileView.setPackageIcon(mPackageManager.getApplicationIcon(pkg));
tileView.setPersonIcon(mLauncherApps.getShortcutIconDrawable(shortcutInfo, 0));
tileView.setOnClickListener(mLauncherApps, shortcutInfo);
tileView.setPersonIcon(tile.getUserIcon());
tileView.setOnClickListener(mLauncherApps, tile);
} catch (Exception e) {
Log.e(TAG, "Couldn't retrieve shortcut information", e);
}

View File

@@ -16,10 +16,12 @@
package com.android.systemui.people;
import android.app.people.PeopleSpaceTile;
import android.content.Context;
import android.content.pm.LauncherApps;
import android.content.pm.ShortcutInfo;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Icon;
import android.os.UserHandle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -71,13 +73,15 @@ public class PeopleSpaceTileView extends LinearLayout {
mPackageIconView.setImageDrawable(drawable);
}
/** Sets the person drawable on the tile. */
public void setPersonIcon(Drawable drawable) {
mPersonIconView.setImageDrawable(drawable);
/** Sets the person bitmap on the tile. */
public void setPersonIcon(Icon icon) {
mPersonIconView.setImageIcon(icon);
}
/** Sets the click listener of the tile. */
public void setOnClickListener(LauncherApps launcherApps, ShortcutInfo shortcutInfo) {
mTileView.setOnClickListener(v -> launcherApps.startShortcut(shortcutInfo, null, null));
public void setOnClickListener(LauncherApps launcherApps, PeopleSpaceTile tile) {
mTileView.setOnClickListener(v ->
launcherApps.startShortcut(tile.getPackageName(), tile.getId(), null, null,
UserHandle.getUserHandleForUid(tile.getUid())));
}
}

View File

@@ -19,8 +19,9 @@ package com.android.systemui.people;
import android.app.INotificationManager;
import android.app.people.ConversationChannel;
import android.app.people.IPeopleManager;
import android.app.people.PeopleSpaceTile;
import android.content.Context;
import android.content.pm.ShortcutInfo;
import android.content.pm.LauncherApps;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.drawable.BitmapDrawable;
@@ -51,30 +52,34 @@ public class PeopleSpaceUtils {
private static final int MIN_HOUR = 1;
private static final int ONE_DAY = 1;
/** Returns a list of map entries corresponding to user's conversations. */
public static List<Map.Entry<Long, ShortcutInfo>> getShortcutInfos(Context context,
INotificationManager notificationManager, IPeopleManager peopleManager)
public static List<Map.Entry<Long, PeopleSpaceTile>> getTiles(
Context context, INotificationManager notificationManager, IPeopleManager peopleManager,
LauncherApps launcherApps)
throws Exception {
boolean showAllConversations = Settings.Global.getInt(context.getContentResolver(),
Settings.Global.PEOPLE_SPACE_CONVERSATION_TYPE, 0) == 0;
List<ConversationChannelWrapper> conversations = notificationManager.getConversations(
true).getList();
List<Map.Entry<Long, ShortcutInfo>> shortcutInfos = getSortedShortcutInfos(peopleManager,
conversations.stream().map(c -> c.getShortcutInfo()));
List<Map.Entry<Long, PeopleSpaceTile>> tiles = getSortedTiles(peopleManager,
conversations.stream().map(c ->
new PeopleSpaceTile.Builder(c.getShortcutInfo(), launcherApps).build()));
if (showAllConversations) {
List<ConversationChannel> recentConversations =
peopleManager.getRecentConversations().getList();
List<Map.Entry<Long, ShortcutInfo>> recentShortcutInfos = getSortedShortcutInfos(
peopleManager, recentConversations.stream().map(c -> c.getShortcutInfo()));
shortcutInfos.addAll(recentShortcutInfos);
List<Map.Entry<Long, PeopleSpaceTile>> recentTiles =
getSortedTiles(peopleManager, recentConversations.stream().map(c ->
new PeopleSpaceTile
.Builder(c.getShortcutInfo(), launcherApps)
.build()));
tiles.addAll(recentTiles);
}
return shortcutInfos;
return tiles;
}
/** Returns a list sorted by ascending last interaction time from {@code stream}. */
private static List<Map.Entry<Long, ShortcutInfo>> getSortedShortcutInfos(
IPeopleManager peopleManager, Stream<ShortcutInfo> stream) {
private static List<Map.Entry<Long, PeopleSpaceTile>> getSortedTiles(
IPeopleManager peopleManager, Stream<PeopleSpaceTile> stream) {
return stream
.filter(c -> shouldKeepConversation(c))
.map(c -> Map.entry(getLastInteraction(peopleManager, c), c))
@@ -82,13 +87,13 @@ public class PeopleSpaceUtils {
.collect(Collectors.toList());
}
/** Returns the last interaction time with the user specified by {@code shortcutInfo}. */
/** Returns the last interaction time with the user specified by {@code PeopleSpaceTile}. */
private static Long getLastInteraction(IPeopleManager peopleManager,
ShortcutInfo shortcutInfo) {
PeopleSpaceTile tile) {
try {
int userId = UserHandle.getUserHandleForUid(shortcutInfo.getUserId()).getIdentifier();
String pkg = shortcutInfo.getPackage();
return peopleManager.getLastInteraction(pkg, userId, shortcutInfo.getId());
int userId = UserHandle.getUserHandleForUid(tile.getUid()).getIdentifier();
String pkg = tile.getPackageName();
return peopleManager.getLastInteraction(pkg, userId, tile.getId());
} catch (Exception e) {
Log.e(TAG, "Couldn't retrieve last interaction time", e);
return 0L;
@@ -157,13 +162,13 @@ public class PeopleSpaceUtils {
*
* <p>A valid {@code conversation} must:
* <ul>
* <li>Have a non-null {@link ShortcutInfo}
* <li>Have an associated label in the {@link ShortcutInfo}
* <li>Have a non-null {@link PeopleSpaceTile}
* <li>Have an associated label in the {@link PeopleSpaceTile}
* </ul>
* </li>
*/
public static boolean shouldKeepConversation(ShortcutInfo shortcutInfo) {
return shortcutInfo != null && shortcutInfo.getLabel().length() != 0;
public static boolean shouldKeepConversation(PeopleSpaceTile tile) {
return tile != null && tile.getUserName().length() != 0;
}
}

View File

@@ -19,8 +19,8 @@ package com.android.systemui.people.widget;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.LauncherApps;
import android.content.pm.ShortcutInfo;
import android.os.Bundle;
import android.os.UserHandle;
import android.util.Log;
import com.android.systemui.people.PeopleSpaceUtils;
@@ -36,18 +36,19 @@ public class LaunchConversationActivity extends Activity {
if (DEBUG) Log.d(TAG, "onCreate called");
Intent intent = getIntent();
ShortcutInfo shortcutInfo = (ShortcutInfo) intent.getParcelableExtra(
PeopleSpaceWidgetProvider.EXTRA_SHORTCUT_INFO
);
if (shortcutInfo != null) {
String tileId = intent.getStringExtra(PeopleSpaceWidgetProvider.EXTRA_TILE_ID);
String packageName = intent.getStringExtra(PeopleSpaceWidgetProvider.EXTRA_PACKAGE_NAME);
int uid = intent.getIntExtra(PeopleSpaceWidgetProvider.EXTRA_UID, 0);
if (tileId != null && !tileId.isEmpty()) {
if (DEBUG) {
Log.d(TAG, "Launching conversation with shortcutInfo id " + shortcutInfo.getId());
Log.d(TAG, "Launching conversation with shortcutInfo id " + tileId);
}
try {
LauncherApps launcherApps =
getApplicationContext().getSystemService(LauncherApps.class);
launcherApps.startShortcut(
shortcutInfo, null, null);
packageName, tileId, null, null, UserHandle.getUserHandleForUid(uid));
} catch (Exception e) {
Log.e(TAG, "Exception starting shortcut:" + e);
}

View File

@@ -32,7 +32,9 @@ public class PeopleSpaceWidgetProvider extends AppWidgetProvider {
private static final String TAG = "PeopleSpaceWidgetPvd";
private static final boolean DEBUG = PeopleSpaceUtils.DEBUG;
public static final String EXTRA_SHORTCUT_INFO = "extra_shortcut_info";
public static final String EXTRA_TILE_ID = "extra_tile_id";
public static final String EXTRA_PACKAGE_NAME = "extra_package_name";
public static final String EXTRA_UID = "extra_uid";
/** Called when widget updates. */
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {

View File

@@ -18,11 +18,11 @@ package com.android.systemui.people.widget;
import android.app.INotificationManager;
import android.app.people.IPeopleManager;
import android.app.people.PeopleSpaceTile;
import android.content.Context;
import android.content.Intent;
import android.content.pm.LauncherApps;
import android.content.pm.PackageManager;
import android.content.pm.ShortcutInfo;
import android.os.ServiceManager;
import android.util.Log;
import android.widget.RemoteViews;
@@ -45,7 +45,7 @@ public class PeopleSpaceWidgetRemoteViewsFactory implements RemoteViewsService.R
private INotificationManager mNotificationManager;
private PackageManager mPackageManager;
private LauncherApps mLauncherApps;
private List<Map.Entry<Long, ShortcutInfo>> mShortcutInfos = new ArrayList<>();
private List<Map.Entry<Long, PeopleSpaceTile>> mTiles = new ArrayList<>();
private Context mContext;
public PeopleSpaceWidgetRemoteViewsFactory(Context context, Intent intent) {
@@ -70,8 +70,8 @@ public class PeopleSpaceWidgetRemoteViewsFactory implements RemoteViewsService.R
*/
private void setTileViewsWithPriorityConversations() {
try {
mShortcutInfos = PeopleSpaceUtils.getShortcutInfos(mContext, mNotificationManager,
mPeopleManager);
mTiles = PeopleSpaceUtils.getTiles(mContext, mNotificationManager,
mPeopleManager, mLauncherApps);
} catch (Exception e) {
Log.e(TAG, "Couldn't retrieve conversations", e);
}
@@ -85,12 +85,12 @@ public class PeopleSpaceWidgetRemoteViewsFactory implements RemoteViewsService.R
@Override
public void onDestroy() {
mShortcutInfos.clear();
mTiles.clear();
}
@Override
public int getCount() {
return mShortcutInfos.size();
return mTiles.size();
}
@Override
@@ -100,30 +100,28 @@ public class PeopleSpaceWidgetRemoteViewsFactory implements RemoteViewsService.R
RemoteViews personView = new RemoteViews(mContext.getPackageName(),
R.layout.people_space_widget_item);
try {
Map.Entry<Long, ShortcutInfo> entry = mShortcutInfos.get(i);
ShortcutInfo shortcutInfo = entry.getValue();
Map.Entry<Long, PeopleSpaceTile> entry = mTiles.get(i);
PeopleSpaceTile tile = entry.getValue();
long lastInteraction = entry.getKey();
String status = PeopleSpaceUtils.getLastInteractionString(mContext, lastInteraction);
personView.setTextViewText(R.id.status, status);
personView.setTextViewText(R.id.name, shortcutInfo.getLabel().toString());
personView.setTextViewText(R.id.name, tile.getUserName().toString());
personView.setImageViewBitmap(
R.id.package_icon,
PeopleSpaceUtils.convertDrawableToBitmap(
mPackageManager.getApplicationIcon(shortcutInfo.getPackage())
)
);
personView.setImageViewBitmap(
R.id.person_icon,
PeopleSpaceUtils.convertDrawableToBitmap(
mLauncherApps.getShortcutIconDrawable(shortcutInfo, 0)
mPackageManager.getApplicationIcon(tile.getPackageName())
)
);
personView.setImageViewIcon(R.id.person_icon, tile.getUserIcon());
Intent fillInIntent = new Intent();
fillInIntent.putExtra(PeopleSpaceWidgetProvider.EXTRA_SHORTCUT_INFO, shortcutInfo);
fillInIntent.putExtra(PeopleSpaceWidgetProvider.EXTRA_TILE_ID, tile.getId());
fillInIntent.putExtra(
PeopleSpaceWidgetProvider.EXTRA_PACKAGE_NAME, tile.getPackageName());
fillInIntent.putExtra(PeopleSpaceWidgetProvider.EXTRA_UID, tile.getUid());
personView.setOnClickFillInIntent(R.id.item, fillInIntent);
} catch (Exception e) {
Log.e(TAG, "Couldn't retrieve shortcut information", e);