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

Commit 158dfa2d authored by Andrew Lee's avatar Andrew Lee
Browse files

Expand the first call log item for new cursors.

This increases discoverability of the expand actions, and also
makes it quicker to interact with the most recent items.

Bug: 21960523
Change-Id: I6aefdd5b96a86177b26ecc59879d1a787115221a
parent af7d8bbd
Loading
Loading
Loading
Loading
+19 −2
Original line number Diff line number Diff line
@@ -79,6 +79,8 @@ public class CallLogAdapter extends GroupingListAdapter
    // Tracks the rowId of the currently expanded list item, so the position can be updated if there
    // are any changes to the call log entries, such as additions or removals.
    private long mCurrentlyExpandedRowId = NO_EXPANDED_LIST_ITEM;
    // Whether the first call log list item has been automatically expanded for a new cursor.
    private boolean mHasBoundFirstView;

    /**
     *  Hashmap, keyed by call Id, used to track the day group for a call.  As call log entries are
@@ -233,6 +235,16 @@ public class CallLogAdapter extends GroupingListAdapter
        mCallFetcher.fetchCalls();
    }

    @Override
    public void changeCursor(Cursor cursor) {
        // Data has changed; reset so that the first call log list item will be expanded.
        mHasBoundFirstView = false;
        mCurrentlyExpandedPosition = RecyclerView.NO_POSITION;
        mCurrentlyExpandedRowId = NO_EXPANDED_LIST_ITEM;

        super.changeCursor(cursor);
    }

    public void setLoading(boolean loading) {
        mLoading = loading;
    }
@@ -400,10 +412,15 @@ public class CallLogAdapter extends GroupingListAdapter

        mCallLogViewsHelper.setPhoneCallDetails(mContext, views, details);

        // Update the expanded position if the rowIds match, in case ViewHolders were added/removed.
        // Then restore the state of the row on rebind.
        if (mCurrentlyExpandedRowId == views.rowId) {
            // In case ViewHolders were added/removed, update the expanded position if the rowIds
            // match so that we can restore the correct expanded state on rebind.
            mCurrentlyExpandedPosition = position;
        } else if (!mHasBoundFirstView) {
            // Expand the first view when loading the call log to expose the actions.
            mCurrentlyExpandedRowId = views.rowId;
            mCurrentlyExpandedPosition = position;
            mHasBoundFirstView = true;
        }
        views.showActions(mCurrentlyExpandedPosition == position);