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

Commit ebd36432 authored by Gilles Franck Mevaa's avatar Gilles Franck Mevaa
Browse files

New Spam-related options in call log entries.

This includes small UI additions to the call log UI; Mainly,
two new buttons to mark each phone number entry as a Spam number
or remove the phone number from the spam list. This also includes
a service definition that will be needed to render the buttons or
keep them hidden.

Change-Id: I7cf22f6027728ebc0dfe9e3b5b923ee70bcaadd2
parent b2ad95ed
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -129,6 +129,11 @@

    </LinearLayout>

    <ViewStub
        android:id="@+id/spam_actions_container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

    <LinearLayout
        android:id="@+id/details_action"
        style="@style/CallLogActionStyle">
+31 −1
Original line number Diff line number Diff line
@@ -55,10 +55,16 @@ import com.android.dialer.filterednumber.BlockNumberDialogFragment;
import com.android.dialer.filterednumber.FilteredNumbersUtil;
import com.android.dialer.logging.Logger;
import com.android.dialer.logging.ScreenEvent;
import com.android.dialer.service.SpamButtonRenderer;
import com.android.dialer.util.DialerUtils;
import com.android.dialer.util.PhoneNumberUtil;
import com.android.dialer.voicemail.VoicemailPlaybackLayout;
import com.android.dialer.voicemail.VoicemailPlaybackPresenter;
import com.android.dialerbind.ObjectFactory;
import com.google.common.collect.Lists;

import java.util.ArrayList;
import java.util.List;

/**
 * This is an object containing references to views contained by the call log list item. This
@@ -198,6 +204,9 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder

    private final int mPhotoSize;

    private ViewStub mSpamViewStub;
    private SpamButtonRenderer mSpamButtonRenderer;

    private View.OnClickListener mExpandCollapseListener;
    private boolean mVoicemailPrimaryActionButtonClicked;

@@ -401,6 +410,9 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder

            callWithNoteButtonView = actionsView.findViewById(R.id.call_with_note_action);
            callWithNoteButtonView.setOnClickListener(this);

            mSpamViewStub = (ViewStub) actionsView.findViewById(R.id.spam_actions_container);
            mSpamButtonRenderer = ObjectFactory.newSpamButtonRenderer(mContext, mSpamViewStub);
        }

        bindActionButtons();
@@ -530,6 +542,24 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
                mCallLogCache.isVoicemailNumber(accountHandle, number);
        callWithNoteButtonView.setVisibility(
                supportsCallSubject && !isVoicemailNumber ? View.VISIBLE : View.GONE);

        if(mSpamButtonRenderer != null){
            List<View> completeLogListItems = Lists.newArrayList(
                    createNewContactButtonView,
                    addToExistingContactButtonView,
                    sendMessageView,
                    callButtonView,
                    callWithNoteButtonView,
                    detailsButtonView,
                    voicemailPlaybackView);
            List<View> blockedNumberVisibleViews = new ArrayList<>();
            List<View> spamNumberVisibleViews = Lists.newArrayList(detailsButtonView);

            mSpamButtonRenderer.setCompleteListItemViews(completeLogListItems);
            mSpamButtonRenderer.setFilteredNumberViews(blockedNumberVisibleViews);
            mSpamButtonRenderer.setSpamFilteredViews(spamNumberVisibleViews);
            mSpamButtonRenderer.render(number, countryIso);
        }
    }

    /**
+23 −0
Original line number Diff line number Diff line
package com.android.dialer.service;

import android.view.View;

import java.util.List;

/**
 * Interface responsible for rendering spam buttons.
 */
public interface SpamButtonRenderer {

    /**
     * Renders buttons for a phone number.
     */
    void render(String number, String countryIso);

    void setCompleteListItemViews(List<View> views);

    void setSpamFilteredViews(List<View> views);

    void setFilteredNumberViews(List<View> views);

}
+10 −0
Original line number Diff line number Diff line
@@ -19,12 +19,16 @@ package com.android.dialerbind;
import static com.android.dialer.calllog.CallLogAdapter.CallFetcher;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewStub;

import com.android.dialer.calllog.CallLogAdapter;
import com.android.dialer.calllog.ContactInfoHelper;
import com.android.dialer.list.RegularSearchFragment;
import com.android.dialer.logging.Logger;
import com.android.dialer.service.CachedNumberLookupService;
import com.android.dialer.service.SpamButtonRenderer;
import com.android.dialer.voicemail.VoicemailPlaybackPresenter;

/**
@@ -41,6 +45,12 @@ public class ObjectFactory {
        return "com.android.dialer.database.filterednumberprovider";
    }

    public static SpamButtonRenderer newSpamButtonRenderer(
            Context context,
            ViewStub stub) {
        return null;
    }

    /**
     * Create a new instance of the call log adapter.
     * @param context The context to use.