Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6ffa8e72 authored by Anna Zappone's avatar Anna Zappone Committed by Android (Google) Code Review
Browse files

Merge "Update strings for widget update frequency"

parents 31a43ae6 7f0032f9
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -2816,8 +2816,12 @@
    <!-- Text to display when copying the build number off QS [CHAR LIMIT=NONE]-->
    <string name="build_number_copy_toast">Build number copied to clipboard.</string>

    <!-- Status for last interaction [CHAR LIMIT=120] -->
    <!-- Status for last interaction with exact time [CHAR LIMIT=120] -->
    <string name="last_interaction_status" translatable="false">You last chatted <xliff:g id="duration" example="5 hours">%1$s</xliff:g> ago</string>
    <!-- Status for last interaction when less than a certain time window [CHAR LIMIT=120] -->
    <string name="last_interaction_status_less_than" translatable="false">You last chatted less than <xliff:g id="duration" example="5 hours">%1$s</xliff:g> ago</string>
    <!-- Status for last interaction when over a certain time window [CHAR LIMIT=120] -->
    <string name="last_interaction_status_over" translatable="false">You last chatted over <xliff:g id="duration" example="1 week">%1$s</xliff:g> ago</string>
    <!-- Status for conversation without interaction data [CHAR LIMIT=120] -->
    <string name="basic_status" translatable="false">Open conversation</string>

+7 −15
Original line number Diff line number Diff line
@@ -69,12 +69,10 @@ public class PeopleSpaceActivity extends Activity {
     */
    private void setTileViewsWithPriorityConversations() {
        try {
            List<ShortcutInfo> shortcutInfos =
                    PeopleSpaceUtils.getShortcutInfos(
                            mContext, mNotificationManager, mPeopleManager);
            List<ShortcutInfo> shortcutInfos = PeopleSpaceUtils.getShortcutInfos(mContext,
                    mNotificationManager, mPeopleManager);
            for (ShortcutInfo conversation : shortcutInfos) {
                PeopleSpaceTileView tileView = new PeopleSpaceTileView(mContext,
                        mPeopleSpaceLayout,
                PeopleSpaceTileView tileView = new PeopleSpaceTileView(mContext, mPeopleSpaceLayout,
                        conversation.getId());
                setTileView(tileView, conversation);
            }
@@ -84,20 +82,14 @@ 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, ShortcutInfo shortcutInfo) {
        try {
            int userId = UserHandle.getUserHandleForUid(
                    shortcutInfo.getUserId()).getIdentifier();
            int userId = UserHandle.getUserHandleForUid(shortcutInfo.getUserId()).getIdentifier();

            String pkg = shortcutInfo.getPackage();
            long lastInteraction = mPeopleManager.getLastInteraction(
                    pkg, userId,
            long lastInteraction = mPeopleManager.getLastInteraction(pkg, userId,
                    shortcutInfo.getId());
            String status = lastInteraction != 0l ? mContext.getString(
                    R.string.last_interaction_status,
                    PeopleSpaceUtils.getLastInteractionString(
                            lastInteraction)) : mContext.getString(R.string.basic_status);
            String status = PeopleSpaceUtils.getLastInteractionString(mContext, lastInteraction);
            tileView.setStatus(status);

            tileView.setName(shortcutInfo.getLabel().toString());
+36 −35
Original line number Diff line number Diff line
@@ -31,6 +31,8 @@ import android.icu.util.MeasureUnit;
import android.provider.Settings;
import android.service.notification.ConversationChannelWrapper;

import com.android.systemui.R;

import java.time.Duration;
import java.util.List;
import java.util.Locale;
@@ -38,25 +40,24 @@ import java.util.stream.Collectors;

/** Utils class for People Space. */
public class PeopleSpaceUtils {
    private static final String TAG = "PeopleSpaceUtils";

    /** Turns on debugging information about People Space. */
    public static final boolean DEBUG = true;
    private static final String TAG = "PeopleSpaceUtils";
    private static final int DAYS_IN_A_WEEK = 7;
    private static final int MIN_HOUR = 1;
    private static final int ONE_DAY = 1;

    /** Returns a list of {@link ShortcutInfo} corresponding to user's conversations. */
    public static List<ShortcutInfo> getShortcutInfos(
            Context context,
            INotificationManager notificationManager,
            IPeopleManager peopleManager
    ) throws Exception {
    public static List<ShortcutInfo> getShortcutInfos(Context context,
            INotificationManager notificationManager, IPeopleManager peopleManager)
            throws Exception {
        boolean showAllConversations = Settings.Global.getInt(context.getContentResolver(),
                Settings.Global.PEOPLE_SPACE_CONVERSATION_TYPE, 0) == 0;
        List<ConversationChannelWrapper> conversations =
                notificationManager.getConversations(
        List<ConversationChannelWrapper> conversations = notificationManager.getConversations(
                !showAllConversations /* priority only */).getList();
        List<ShortcutInfo> shortcutInfos = conversations.stream().filter(
                c -> shouldKeepConversation(c)).map(
                    c -> c.getShortcutInfo()).collect(Collectors.toList());
                c -> shouldKeepConversation(c)).map(c -> c.getShortcutInfo()).collect(
                Collectors.toList());
        if (showAllConversations) {
            List<ConversationChannel> recentConversations =
                    peopleManager.getRecentConversations().getList();
@@ -85,11 +86,8 @@ public class PeopleSpaceUtils {
            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
            );
            bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(),
                    drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
        }

        Canvas canvas = new Canvas(bitmap);
@@ -98,28 +96,31 @@ public class PeopleSpaceUtils {
        return bitmap;
    }

    /** Returns a readable representation of {@code lastInteraction}. */
    public static String getLastInteractionString(long lastInteraction) {
    /** Returns a readable status describing the {@code lastInteraction}. */
    public static String getLastInteractionString(Context context, long lastInteraction) {
        if (lastInteraction == 0L) {
            return context.getString(R.string.basic_status);
        }
        long now = System.currentTimeMillis();
        Duration durationSinceLastInteraction = Duration.ofMillis(
                now - lastInteraction);
        Duration durationSinceLastInteraction = Duration.ofMillis(now - lastInteraction);
        MeasureFormat formatter = MeasureFormat.getInstance(Locale.getDefault(),
                MeasureFormat.FormatWidth.WIDE);
        if (durationSinceLastInteraction.toDays() >= 1) {
            return
                    formatter
                            .formatMeasures(new Measure(durationSinceLastInteraction.toDays(),
                                    MeasureUnit.DAY));
        } else if (durationSinceLastInteraction.toHours() >= 1) {
            return formatter.formatMeasures(new Measure(durationSinceLastInteraction.toHours(),
                    MeasureUnit.HOUR));
        } else if (durationSinceLastInteraction.toMinutes() >= 1) {
            return formatter.formatMeasures(new Measure(durationSinceLastInteraction.toMinutes(),
                    MeasureUnit.MINUTE));
        if (durationSinceLastInteraction.toHours() < MIN_HOUR) {
            return context.getString(R.string.last_interaction_status_less_than,
                    formatter.formatMeasures(new Measure(MIN_HOUR, MeasureUnit.HOUR)));
        } else if (durationSinceLastInteraction.toDays() < ONE_DAY) {
            return context.getString(R.string.last_interaction_status, formatter.formatMeasures(
                    new Measure(durationSinceLastInteraction.toHours(), MeasureUnit.HOUR)));
        } else if (durationSinceLastInteraction.toDays() < DAYS_IN_A_WEEK) {
            return context.getString(R.string.last_interaction_status, formatter.formatMeasures(
                    new Measure(durationSinceLastInteraction.toDays(), MeasureUnit.DAY)));
        } else {
            return formatter.formatMeasures(
                    new Measure(durationSinceLastInteraction.toMillis() / 1000,
                            MeasureUnit.SECOND));
            return context.getString(durationSinceLastInteraction.toDays() == DAYS_IN_A_WEEK
                            ? R.string.last_interaction_status :
                            R.string.last_interaction_status_over,
                    formatter.formatMeasures(
                            new Measure(durationSinceLastInteraction.toDays() / DAYS_IN_A_WEEK,
                                    MeasureUnit.WEEK)));
        }
    }

+10 −17
Original line number Diff line number Diff line
@@ -46,7 +46,7 @@ public class PeopleSpaceWidgetRemoteViewsFactory implements RemoteViewsService.R
    private PackageManager mPackageManager;
    private LauncherApps mLauncherApps;
    private List<ShortcutInfo> mShortcutInfos = new ArrayList<>();
    private Context mContext;
    private final Context mContext;

    public PeopleSpaceWidgetRemoteViewsFactory(Context context, Intent intent) {
        this.mContext = context;
@@ -55,8 +55,7 @@ public class PeopleSpaceWidgetRemoteViewsFactory implements RemoteViewsService.R
    @Override
    public void onCreate() {
        if (DEBUG) Log.d(TAG, "onCreate called");
        mNotificationManager =
                INotificationManager.Stub.asInterface(
        mNotificationManager = INotificationManager.Stub.asInterface(
                ServiceManager.getService(Context.NOTIFICATION_SERVICE));
        mPackageManager = mContext.getPackageManager();
        mPeopleManager = IPeopleManager.Stub.asInterface(
@@ -71,9 +70,8 @@ public class PeopleSpaceWidgetRemoteViewsFactory implements RemoteViewsService.R
     */
    private void setTileViewsWithPriorityConversations() {
        try {
            mShortcutInfos =
                    PeopleSpaceUtils.getShortcutInfos(
                            mContext, mNotificationManager, mPeopleManager);
            mShortcutInfos = PeopleSpaceUtils.getShortcutInfos(mContext, mNotificationManager,
                    mPeopleManager);
        } catch (Exception e) {
            Log.e(TAG, "Couldn't retrieve conversations", e);
        }
@@ -99,21 +97,16 @@ public class PeopleSpaceWidgetRemoteViewsFactory implements RemoteViewsService.R
    public RemoteViews getViewAt(int i) {
        if (DEBUG) Log.d(TAG, "getViewAt called, index: " + i);

        RemoteViews personView =
                new RemoteViews(mContext.getPackageName(), R.layout.people_space_widget_item);
        RemoteViews personView = new RemoteViews(mContext.getPackageName(),
                R.layout.people_space_widget_item);
        try {
            ShortcutInfo shortcutInfo = mShortcutInfos.get(i);
            int userId = UserHandle.getUserHandleForUid(
                    shortcutInfo.getUserId()).getIdentifier();
            int userId = UserHandle.getUserHandleForUid(shortcutInfo.getUserId()).getIdentifier();
            String pkg = shortcutInfo.getPackage();
            long lastInteraction = mPeopleManager.getLastInteraction(
                    pkg, userId,
            long lastInteraction = mPeopleManager.getLastInteraction(pkg, userId,
                    shortcutInfo.getId());

            String status = lastInteraction != 0L ? mContext.getString(
                    R.string.last_interaction_status,
                    PeopleSpaceUtils.getLastInteractionString(
                            lastInteraction)) : mContext.getString(R.string.basic_status);
            String status = PeopleSpaceUtils.getLastInteractionString(mContext, lastInteraction);

            personView.setTextViewText(R.id.status, status);
            personView.setTextViewText(R.id.name, shortcutInfo.getLabel().toString());