kopia lustrzana https://github.com/ryukoposting/Signal-Android
112 wiersze
3.8 KiB
Java
112 wiersze
3.8 KiB
Java
package org.thoughtcrime.securesms.preferences.widgets;
|
|
|
|
|
|
import android.content.Context;
|
|
import android.graphics.PorterDuff;
|
|
import android.util.AttributeSet;
|
|
import android.view.View;
|
|
import android.widget.ImageView;
|
|
|
|
import androidx.preference.Preference;
|
|
import androidx.preference.PreferenceViewHolder;
|
|
|
|
import org.thoughtcrime.securesms.R;
|
|
|
|
public class ContactPreference extends Preference {
|
|
|
|
private ImageView messageButton;
|
|
private ImageView callButton;
|
|
private ImageView secureCallButton;
|
|
private ImageView secureVideoButton;
|
|
private View itemView;
|
|
|
|
private Listener listener;
|
|
private boolean secure;
|
|
private boolean blocked;
|
|
|
|
public ContactPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
|
|
super(context, attrs, defStyleAttr, defStyleRes);
|
|
initialize();
|
|
}
|
|
|
|
public ContactPreference(Context context, AttributeSet attrs, int defStyleAttr) {
|
|
super(context, attrs, defStyleAttr);
|
|
initialize();
|
|
}
|
|
|
|
public ContactPreference(Context context, AttributeSet attrs) {
|
|
super(context, attrs);
|
|
initialize();
|
|
}
|
|
|
|
public ContactPreference(Context context) {
|
|
super(context);
|
|
initialize();
|
|
}
|
|
|
|
private void initialize() {
|
|
setWidgetLayoutResource(R.layout.recipient_preference_contact_widget);
|
|
}
|
|
|
|
@Override
|
|
public void onBindViewHolder(PreferenceViewHolder view) {
|
|
super.onBindViewHolder(view);
|
|
|
|
this.itemView = view.itemView;
|
|
this.messageButton = (ImageView) view.findViewById(R.id.message);
|
|
this.callButton = (ImageView) view.findViewById(R.id.call);
|
|
this.secureCallButton = (ImageView) view.findViewById(R.id.secure_call);
|
|
this.secureVideoButton = (ImageView) view.findViewById(R.id.secure_video);
|
|
|
|
if (listener != null) setListener(listener);
|
|
setState(secure, blocked);
|
|
}
|
|
|
|
public void setState(boolean secure, boolean blocked) {
|
|
this.secure = secure;
|
|
|
|
if (secureCallButton != null) secureCallButton.setVisibility(secure && !blocked ? View.VISIBLE : View.GONE);
|
|
if (secureVideoButton != null) secureVideoButton.setVisibility(secure && !blocked ? View.VISIBLE : View.GONE);
|
|
if (callButton != null) callButton.setVisibility(secure || blocked ? View.GONE : View.VISIBLE);
|
|
if (messageButton != null) messageButton.setVisibility(blocked ? View.GONE : View.VISIBLE);
|
|
|
|
int color;
|
|
|
|
if (secure) {
|
|
color = getContext().getResources().getColor(R.color.core_ultramarine);
|
|
} else {
|
|
color = getContext().getResources().getColor(R.color.grey_600);
|
|
}
|
|
|
|
if (messageButton != null) messageButton.setColorFilter(color, PorterDuff.Mode.SRC_IN);
|
|
if (secureCallButton != null) secureCallButton.setColorFilter(color, PorterDuff.Mode.SRC_IN);
|
|
if (secureVideoButton != null) secureVideoButton.setColorFilter(color, PorterDuff.Mode.SRC_IN);
|
|
if (callButton != null) callButton.setColorFilter(color, PorterDuff.Mode.SRC_IN);
|
|
}
|
|
|
|
public void setListener(Listener listener) {
|
|
this.listener = listener;
|
|
|
|
if (this.messageButton != null) this.messageButton.setOnClickListener(v -> listener.onMessageClicked());
|
|
if (this.secureCallButton != null) this.secureCallButton.setOnClickListener(v -> listener.onSecureCallClicked());
|
|
if (this.secureVideoButton != null) this.secureVideoButton.setOnClickListener(v -> listener.onSecureVideoClicked());
|
|
if (this.callButton != null) this.callButton.setOnClickListener(v -> listener.onInSecureCallClicked());
|
|
|
|
if (this.itemView != null) {
|
|
itemView.setOnLongClickListener(v -> {
|
|
listener.onLongClick();
|
|
return true;
|
|
});
|
|
}
|
|
}
|
|
|
|
public interface Listener {
|
|
void onMessageClicked();
|
|
void onSecureCallClicked();
|
|
void onSecureVideoClicked();
|
|
void onInSecureCallClicked();
|
|
void onLongClick();
|
|
}
|
|
|
|
}
|