Swap profile megaphone icon and use user avatar if present.

fork-5.53.8
Alex Hart 2020-03-20 15:38:15 -03:00 zatwierdzone przez Greyson Parrelli
rodzic 624837fcf1
commit 707a2aca0a
10 zmienionych plików z 71 dodań i 29 usunięć

Wyświetl plik

@ -56,9 +56,9 @@ public class BasicMegaphoneView extends FrameLayout {
this.megaphone = megaphone;
this.megaphoneListener = megaphoneListener;
if (megaphone.getImage() != 0) {
if (megaphone.getImageRequest() != null) {
image.setVisibility(VISIBLE);
image.setImageResource(megaphone.getImage());
megaphone.getImageRequest().into(image);
} else {
image.setVisibility(GONE);
}

Wyświetl plik

@ -1,28 +1,34 @@
package org.thoughtcrime.securesms.megaphone;
import android.content.Context;
import android.graphics.drawable.Drawable;
import androidx.annotation.DrawableRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.megaphone.Megaphones.Event;
import org.thoughtcrime.securesms.mms.GlideApp;
import org.thoughtcrime.securesms.mms.GlideRequest;
/**
* For guidance on creating megaphones, see {@link Megaphones}.
*/
public class Megaphone {
private final Event event;
private final Style style;
private final boolean mandatory;
private final boolean canSnooze;
private final int titleRes;
private final int bodyRes;
private final int imageRes;
private final int buttonTextRes;
private final EventListener buttonListener;
private final EventListener snoozeListener;
private final EventListener onVisibleListener;
private final Event event;
private final Style style;
private final boolean mandatory;
private final boolean canSnooze;
private final int titleRes;
private final int bodyRes;
private final GlideRequest<Drawable> imageRequest;
private final int buttonTextRes;
private final EventListener buttonListener;
private final EventListener snoozeListener;
private final EventListener onVisibleListener;
private Megaphone(@NonNull Builder builder) {
this.event = builder.event;
@ -31,7 +37,7 @@ public class Megaphone {
this.canSnooze = builder.canSnooze;
this.titleRes = builder.titleRes;
this.bodyRes = builder.bodyRes;
this.imageRes = builder.imageRes;
this.imageRequest = builder.imageRequest;
this.buttonTextRes = builder.buttonTextRes;
this.buttonListener = builder.buttonListener;
this.snoozeListener = builder.snoozeListener;
@ -62,8 +68,8 @@ public class Megaphone {
return bodyRes;
}
public @DrawableRes int getImage() {
return imageRes;
public @Nullable GlideRequest<Drawable> getImageRequest() {
return imageRequest;
}
public @StringRes int getButtonText() {
@ -91,15 +97,15 @@ public class Megaphone {
private final Event event;
private final Style style;
private boolean mandatory;
private boolean canSnooze;
private int titleRes;
private int bodyRes;
private int imageRes;
private int buttonTextRes;
private EventListener buttonListener;
private EventListener snoozeListener;
private EventListener onVisibleListener;
private boolean mandatory;
private boolean canSnooze;
private int titleRes;
private int bodyRes;
private GlideRequest<Drawable> imageRequest;
private int buttonTextRes;
private EventListener buttonListener;
private EventListener snoozeListener;
private EventListener onVisibleListener;
public Builder(@NonNull Event event, @NonNull Style style) {
@ -135,7 +141,12 @@ public class Megaphone {
}
public @NonNull Builder setImage(@DrawableRes int imageRes) {
this.imageRes = imageRes;
setImageRequest(GlideApp.with(ApplicationDependencies.getApplication()).load(imageRes));
return this;
}
public @NonNull Builder setImageRequest(@Nullable GlideRequest<Drawable> imageRequest) {
this.imageRequest = imageRequest;
return this;
}

Wyświetl plik

@ -23,6 +23,7 @@ import org.thoughtcrime.securesms.logging.Log;
import org.thoughtcrime.securesms.messagerequests.MessageRequestMegaphoneActivity;
import org.thoughtcrime.securesms.profiles.ProfileName;
import org.thoughtcrime.securesms.profiles.edit.EditProfileActivity;
import org.thoughtcrime.securesms.util.AvatarUtil;
import org.thoughtcrime.securesms.util.FeatureFlags;
import org.thoughtcrime.securesms.util.TextSecurePreferences;
@ -207,7 +208,7 @@ public final class Megaphones {
Megaphone.Builder builder = new Megaphone.Builder(Event.PROFILE_NAMES_FOR_ALL, Megaphone.Style.BASIC)
.enableSnooze(null)
.setImage(R.drawable.profile_megaphone);
.setImageRequest(AvatarUtil.getSelfAvatarOrFallbackIcon(context, R.drawable.ic_profilename_64));
if (TextSecurePreferences.getProfileName(ApplicationDependencies.getApplication()) == ProfileName.EMPTY) {
return builder.setTitle(R.string.ProfileNamesMegaphone__add_a_profile_name)

Wyświetl plik

@ -55,9 +55,9 @@ public class PopupMegaphoneView extends FrameLayout {
this.megaphone = megaphone;
this.megaphoneListener = megaphoneListener;
if (megaphone.getImage() != 0) {
if (megaphone.getImageRequest() != null) {
image.setVisibility(VISIBLE);
image.setImageResource(megaphone.getImage());
megaphone.getImageRequest().into(image);
} else {
image.setVisibility(GONE);
}

Wyświetl plik

@ -5,6 +5,7 @@ import android.graphics.drawable.Drawable;
import android.text.TextUtils;
import android.widget.ImageView;
import androidx.annotation.DrawableRes;
import androidx.annotation.NonNull;
import androidx.annotation.WorkerThread;
import androidx.core.graphics.drawable.IconCompat;
@ -43,6 +44,15 @@ public final class AvatarUtil {
}
}
public static GlideRequest<Drawable> getSelfAvatarOrFallbackIcon(@NonNull Context context, @DrawableRes int fallbackIcon) {
return GlideApp.with(context)
.asDrawable()
.load(new ProfileContactPhoto(Recipient.self().getId(), String.valueOf(TextSecurePreferences.getProfileAvatarId(context))))
.error(fallbackIcon)
.circleCrop()
.diskCacheStrategy(DiskCacheStrategy.ALL);
}
private static <T> GlideRequest<T> request(@NonNull GlideRequest<T> glideRequest, @NonNull Context context, @NonNull Recipient recipient) {
return glideRequest.load(new ProfileContactPhoto(recipient.getId(), String.valueOf(TextSecurePreferences.getProfileAvatarId(context))))
.error(getFallback(context, recipient))

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 2.3 KiB

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 4.2 KiB

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 6.7 KiB

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 8.3 KiB

Wyświetl plik

@ -0,0 +1,20 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="64dp"
android:height="64dp"
android:viewportWidth="64"
android:viewportHeight="64">
<path
android:pathData="M32,32m-32,0a32,32 0,1 1,64 0a32,32 0,1 1,-64 0"
android:fillColor="#DEDEDE"/>
<path
android:pathData="M23.4,35.8l-5.4,25C22.3,62.9 27,64 32,64c0.3,0 0.5,0 0.8,0l-4,-28.2H23.4z"
android:fillColor="#B28B67"/>
<path
android:pathData="M42.4,53c-5.5,1.4 -26.8,-9.5 -25.7,-25.3c1.1,-15.8 23.2,-12.4 27.5,-4.4C48.5,31.3 48,51.6 42.4,53z"
android:fillColor="#B28B67"
android:fillType="evenOdd"/>
<path
android:pathData="M20.7,45.6c-2.2,-9.9 -8.6,-16.7 -7.6,-21.1c1,-4.4 5.2,-5.5 5.2,-5.5s2.2,-8.8 14,-7.5c11.8,1.3 19.1,6.2 16,17.1c-2.9,0 -6.3,-1 -11.1,0.7c-2.3,0.8 -3.3,5.2 -3.3,5.2h-2.2c0,0 -3.2,-5.2 -6.2,-3.8c-3.1,1.4 -1.4,6.7 -1.4,6.7L23,45.6H20.7z"
android:fillColor="#191847"
android:fillType="evenOdd"/>
</vector>