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

Commit 7f0032f9 authored by Anna Zappone's avatar Anna Zappone
Browse files

Update strings for widget update frequency

Test: locally since likely to change
Change-Id: Iabce2471d9a87966e53281b77d3184bb2280754b
parent 571c3ba5
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());