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

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

Merge "Add birthdays to People Space tiles"

parents 9c209b73 9daebe07
Loading
Loading
Loading
Loading
+29 −0
Original line number Original line Diff line number Diff line
@@ -17,6 +17,7 @@
package android.app.people;
package android.app.people;


import android.annotation.NonNull;
import android.annotation.NonNull;
import android.app.Person;
import android.content.Intent;
import android.content.Intent;
import android.content.pm.LauncherApps;
import android.content.pm.LauncherApps;
import android.content.pm.ShortcutInfo;
import android.content.pm.ShortcutInfo;
@@ -44,6 +45,7 @@ public class PeopleSpaceTile implements Parcelable {
    private int mUid;
    private int mUid;
    private Uri mContactUri;
    private Uri mContactUri;
    private String mPackageName;
    private String mPackageName;
    private String mStatusText;
    private long mLastInteractionTimestamp;
    private long mLastInteractionTimestamp;
    private boolean mIsImportantConversation;
    private boolean mIsImportantConversation;
    private boolean mIsHiddenConversation;
    private boolean mIsHiddenConversation;
@@ -61,6 +63,7 @@ public class PeopleSpaceTile implements Parcelable {
        mContactUri = b.mContactUri;
        mContactUri = b.mContactUri;
        mUid = b.mUid;
        mUid = b.mUid;
        mPackageName = b.mPackageName;
        mPackageName = b.mPackageName;
        mStatusText = b.mStatusText;
        mLastInteractionTimestamp = b.mLastInteractionTimestamp;
        mLastInteractionTimestamp = b.mLastInteractionTimestamp;
        mIsImportantConversation = b.mIsImportantConversation;
        mIsImportantConversation = b.mIsImportantConversation;
        mIsHiddenConversation = b.mIsHiddenConversation;
        mIsHiddenConversation = b.mIsHiddenConversation;
@@ -95,6 +98,10 @@ public class PeopleSpaceTile implements Parcelable {
        return mPackageName;
        return mPackageName;
    }
    }


    public String getStatusText() {
        return mStatusText;
    }

    /** Returns the timestamp of the last interaction. */
    /** Returns the timestamp of the last interaction. */
    public long getLastInteractionTimestamp() {
    public long getLastInteractionTimestamp() {
        return mLastInteractionTimestamp;
        return mLastInteractionTimestamp;
@@ -148,6 +155,7 @@ public class PeopleSpaceTile implements Parcelable {
        builder.setContactUri(mContactUri);
        builder.setContactUri(mContactUri);
        builder.setUid(mUid);
        builder.setUid(mUid);
        builder.setPackageName(mPackageName);
        builder.setPackageName(mPackageName);
        builder.setStatusText(mStatusText);
        builder.setLastInteractionTimestamp(mLastInteractionTimestamp);
        builder.setLastInteractionTimestamp(mLastInteractionTimestamp);
        builder.setIsImportantConversation(mIsImportantConversation);
        builder.setIsImportantConversation(mIsImportantConversation);
        builder.setIsHiddenConversation(mIsHiddenConversation);
        builder.setIsHiddenConversation(mIsHiddenConversation);
@@ -165,6 +173,7 @@ public class PeopleSpaceTile implements Parcelable {
        private Uri mContactUri;
        private Uri mContactUri;
        private int mUid;
        private int mUid;
        private String mPackageName;
        private String mPackageName;
        private String mStatusText;
        private long mLastInteractionTimestamp;
        private long mLastInteractionTimestamp;
        private boolean mIsImportantConversation;
        private boolean mIsImportantConversation;
        private boolean mIsHiddenConversation;
        private boolean mIsHiddenConversation;
@@ -188,6 +197,16 @@ public class PeopleSpaceTile implements Parcelable {
            mUserIcon = convertDrawableToIcon(launcherApps.getShortcutIconDrawable(info, 0));
            mUserIcon = convertDrawableToIcon(launcherApps.getShortcutIconDrawable(info, 0));
            mUid = info.getUserId();
            mUid = info.getUserId();
            mPackageName = info.getPackage();
            mPackageName = info.getPackage();
            mContactUri = getContactUri(info);
        }

        private Uri getContactUri(ShortcutInfo info) {
            if (info.getPersons() == null || info.getPersons().length != 1) {
                return null;
            }
            // TODO(b/175584929): Update to use the Uri from PeopleService directly
            Person person = info.getPersons()[0];
            return person.getUri() == null ? null : Uri.parse(person.getUri());
        }
        }


        /** Sets the ID for the tile. */
        /** Sets the ID for the tile. */
@@ -226,6 +245,12 @@ public class PeopleSpaceTile implements Parcelable {
            return this;
            return this;
        }
        }


        /** Sets the status text. */
        public Builder setStatusText(String statusText) {
            mStatusText = statusText;
            return this;
        }

        /** Sets the last interaction timestamp. */
        /** Sets the last interaction timestamp. */
        public Builder setLastInteractionTimestamp(long lastInteractionTimestamp) {
        public Builder setLastInteractionTimestamp(long lastInteractionTimestamp) {
            mLastInteractionTimestamp = lastInteractionTimestamp;
            mLastInteractionTimestamp = lastInteractionTimestamp;
@@ -279,8 +304,10 @@ public class PeopleSpaceTile implements Parcelable {
        mId = in.readString();
        mId = in.readString();
        mUserName = in.readCharSequence();
        mUserName = in.readCharSequence();
        mUserIcon = in.readParcelable(Icon.class.getClassLoader());
        mUserIcon = in.readParcelable(Icon.class.getClassLoader());
        mContactUri = in.readParcelable(Uri.class.getClassLoader());
        mUid = in.readInt();
        mUid = in.readInt();
        mPackageName = in.readString();
        mPackageName = in.readString();
        mStatusText = in.readString();
        mLastInteractionTimestamp = in.readLong();
        mLastInteractionTimestamp = in.readLong();
        mIsImportantConversation = in.readBoolean();
        mIsImportantConversation = in.readBoolean();
        mIsHiddenConversation = in.readBoolean();
        mIsHiddenConversation = in.readBoolean();
@@ -300,8 +327,10 @@ public class PeopleSpaceTile implements Parcelable {
        dest.writeString(mId);
        dest.writeString(mId);
        dest.writeCharSequence(mUserName);
        dest.writeCharSequence(mUserName);
        dest.writeParcelable(mUserIcon, flags);
        dest.writeParcelable(mUserIcon, flags);
        dest.writeParcelable(mContactUri, flags);
        dest.writeInt(mUid);
        dest.writeInt(mUid);
        dest.writeString(mPackageName);
        dest.writeString(mPackageName);
        dest.writeString(mStatusText);
        dest.writeLong(mLastInteractionTimestamp);
        dest.writeLong(mLastInteractionTimestamp);
        dest.writeBoolean(mIsImportantConversation);
        dest.writeBoolean(mIsImportantConversation);
        dest.writeBoolean(mIsHiddenConversation);
        dest.writeBoolean(mIsHiddenConversation);
+3 −1
Original line number Original line Diff line number Diff line
@@ -169,14 +169,16 @@
            </LinearLayout>
            </LinearLayout>
            <LinearLayout
            <LinearLayout
                android:background="@drawable/people_space_content_background"
                android:background="@drawable/people_space_content_background"
                android:layout_gravity="center"
                android:layout_width="match_parent"
                android:layout_width="match_parent"
                android:layout_height="match_parent">
                android:layout_height="match_parent">
                <TextView
                <TextView
                    android:id="@+id/content"
                    android:id="@+id/content"
                    android:paddingVertical="3dp"
                    android:paddingVertical="3dp"
                    android:paddingHorizontal="12dp"
                    android:paddingHorizontal="12dp"
                    android:gravity="center"
                    android:textAppearance="@*android:style/TextAppearance.DeviceDefault.ListItem"
                    android:textAppearance="@*android:style/TextAppearance.DeviceDefault.ListItem"
                    android:textSize="14sp"
                    android:textSize="16sp"
                    android:layout_width="match_parent"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_height="match_parent"
                    android:maxLines="2"
                    android:maxLines="2"
+8 −0
Original line number Original line Diff line number Diff line
@@ -2773,6 +2773,14 @@
    <string name="basic_status" translatable="false">Open conversation</string>
    <string name="basic_status" translatable="false">Open conversation</string>
    <!-- Status for conversation without interaction data [CHAR LIMIT=120] -->
    <!-- Status for conversation without interaction data [CHAR LIMIT=120] -->
    <string name="select_conversation_text" translatable="false">Select one conversation to show in your widget:</string>
    <string name="select_conversation_text" translatable="false">Select one conversation to show in your widget:</string>
    <!-- Timestamp for notification with exact time [CHAR LIMIT=120] -->
    <string name="timestamp" translatable="false"><xliff:g id="duration" example="5 hours">%1$s</xliff:g> ago</string>
    <!-- Timestamp for notification when less than a certain time window [CHAR LIMIT=120] -->
    <string name="less_than_timestamp" translatable="false">Less than <xliff:g id="duration" example="5 hours">%1$s</xliff:g> ago</string>
    <!-- Timestamp for notification when over a certain time window [CHAR LIMIT=120] -->
    <string name="over_timestamp" translatable="false">Over <xliff:g id="duration" example="1 week">%1$s</xliff:g> ago</string>
    <!-- Status text for a birthday today [CHAR LIMIT=120] -->
    <string name="birthday_status" translatable="false">Today is their birthday!</string>


    <!-- Title to display in a notification when ACTION_BATTERY_CHANGED.EXTRA_PRESENT field is false
    <!-- Title to display in a notification when ACTION_BATTERY_CHANGED.EXTRA_PRESENT field is false
    [CHAR LIMIT=NONE] -->
    [CHAR LIMIT=NONE] -->
+6 −8
Original line number Original line Diff line number Diff line
@@ -44,7 +44,6 @@ import com.android.systemui.R;
import com.android.systemui.people.widget.PeopleSpaceWidgetProvider;
import com.android.systemui.people.widget.PeopleSpaceWidgetProvider;


import java.util.List;
import java.util.List;
import java.util.Map;


/**
/**
 * Shows the user their tiles for their priority People (go/live-status).
 * Shows the user their tiles for their priority People (go/live-status).
@@ -96,13 +95,12 @@ public class PeopleSpaceActivity extends Activity {
     */
     */
    private void setTileViewsWithPriorityConversations() {
    private void setTileViewsWithPriorityConversations() {
        try {
        try {
            List<Map.Entry<Long, PeopleSpaceTile>> tiles = PeopleSpaceUtils.getTiles(
            List<PeopleSpaceTile> tiles = PeopleSpaceUtils.getTiles(
                    mContext, mNotificationManager, mPeopleManager, mLauncherApps);
                    mContext, mNotificationManager, mPeopleManager, mLauncherApps);
            for (Map.Entry<Long, PeopleSpaceTile> entry : tiles) {
            for (PeopleSpaceTile tile : tiles) {
                PeopleSpaceTile tile = entry.getValue();
                PeopleSpaceTileView tileView = new PeopleSpaceTileView(mContext, mPeopleSpaceLayout,
                PeopleSpaceTileView tileView = new PeopleSpaceTileView(mContext, mPeopleSpaceLayout,
                        tile.getId());
                        tile.getId());
                setTileView(tileView, tile, entry.getKey());
                setTileView(tileView, tile);
            }
            }
        } catch (Exception e) {
        } catch (Exception e) {
            Log.e(TAG, "Couldn't retrieve conversations", e);
            Log.e(TAG, "Couldn't retrieve conversations", e);
@@ -110,12 +108,12 @@ public class PeopleSpaceActivity extends Activity {
    }
    }


    /** Sets {@code tileView} with the data in {@code conversation}. */
    /** Sets {@code tileView} with the data in {@code conversation}. */
    private void setTileView(PeopleSpaceTileView tileView, PeopleSpaceTile tile,
    private void setTileView(PeopleSpaceTileView tileView, PeopleSpaceTile tile) {
            long lastInteraction) {
        try {
        try {
            String pkg = tile.getPackageName();
            String pkg = tile.getPackageName();
            String status =
            String status =
                    PeopleSpaceUtils.getLastInteractionString(mContext, lastInteraction);
                    PeopleSpaceUtils.getLastInteractionString(mContext,
                            tile.getLastInteractionTimestamp(), true);
            tileView.setStatus(status);
            tileView.setStatus(status);


            tileView.setName(tile.getUserName().toString());
            tileView.setName(tile.getUserName().toString());
Loading