Add avatar picker and defaults.

This commit is contained in:
Alex Hart
2021-07-20 13:08:52 -03:00
committed by Greyson Parrelli
parent 0093e1d3eb
commit ed23c3fe7c
133 changed files with 4935 additions and 859 deletions

View File

@@ -1129,6 +1129,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
updateReminders();
}
@SuppressLint("MissingSuperCall")
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
Permissions.onRequestPermissionsResult(this, requestCode, permissions, grantResults);
@@ -1302,7 +1303,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
GlideApp.with(this)
.asBitmap()
.load(recipient.getContactPhoto())
.error(recipient.getFallbackContactPhoto().asDrawable(this, recipient.getAvatarColor().colorInt(), false))
.error(recipient.getFallbackContactPhoto().asDrawable(this, recipient.getAvatarColor(), false))
.into(new CustomTarget<Bitmap>() {
@Override
public void onLoadFailed(@Nullable Drawable errorDrawable) {

View File

@@ -2,6 +2,7 @@ package org.thoughtcrime.securesms.conversation.colors;
import androidx.annotation.ColorInt;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.util.HashMap;
import java.util.Map;
@@ -11,56 +12,20 @@ import java.util.Objects;
* A serializable set of color constants that can be used for avatars.
*/
public enum AvatarColor {
C000("C000", 0xFFD00B0B),
C010("C010", 0xFFC72A0A),
C020("C020", 0xFFB34209),
C030("C030", 0xFF9C5711),
C040("C040", 0xFF866118),
C050("C050", 0xFF76681E),
C060("C060", 0xFF6C6C13),
C070("C070", 0xFF5E6E0C),
C080("C080", 0xFF507406),
C090("C090", 0xFF3D7406),
C100("C100", 0xFF2D7906),
C110("C110", 0xFF1A7906),
C120("C120", 0xFF067906),
C130("C130", 0xFF067919),
C140("C140", 0xFF06792D),
C150("C150", 0xFF067940),
C160("C160", 0xFF067953),
C170("C170", 0xFF067462),
C180("C180", 0xFF067474),
C190("C190", 0xFF077288),
C200("C200", 0xFF086DA0),
C210("C210", 0xFF0A69C7),
C220("C220", 0xFF0D59F2),
C230("C230", 0xFF3454F4),
C240("C240", 0xFF5151F6),
C250("C250", 0xFF6447F5),
C260("C260", 0xFF7A3DF5),
C270("C270", 0xFF8F2AF4),
C280("C280", 0xFFA20CED),
C290("C290", 0xFFAF0BD0),
C300("C300", 0xFFB80AB8),
C310("C310", 0xFFC20AA3),
C320("C320", 0xFFC70A88),
C330("C330", 0xFFCB0B6B),
C340("C340", 0xFFD00B4D),
C350("C350", 0xFFD00B2C),
CRIMSON("crimson", ChatColorsPalette.Bubbles.CRIMSON.asSingleColor()),
VERMILLION("vermillion", ChatColorsPalette.Bubbles.VERMILION.asSingleColor()),
BURLAP("burlap", ChatColorsPalette.Bubbles.BURLAP.asSingleColor()),
FOREST("forest", ChatColorsPalette.Bubbles.FOREST.asSingleColor()),
WINTERGREEN("wintergreen", ChatColorsPalette.Bubbles.WINTERGREEN.asSingleColor()),
TEAL("teal", ChatColorsPalette.Bubbles.TEAL.asSingleColor()),
BLUE("blue", ChatColorsPalette.Bubbles.BLUE.asSingleColor()),
INDIGO("indigo", ChatColorsPalette.Bubbles.INDIGO.asSingleColor()),
VIOLET("violet", ChatColorsPalette.Bubbles.VIOLET.asSingleColor()),
PLUM("plum", ChatColorsPalette.Bubbles.PLUM.asSingleColor()),
TAUPE("taupe", ChatColorsPalette.Bubbles.TAUPE.asSingleColor()),
STEEL("steel", ChatColorsPalette.Bubbles.STEEL.asSingleColor()),
ULTRAMARINE("ultramarine", ChatColorsPalette.Bubbles.ULTRAMARINE.asSingleColor()),
UNKNOWN("unknown", ChatColorsPalette.Bubbles.STEEL.asSingleColor());
A100("A100", 0xFFE3E3FE),
A110("A110", 0xFFDDE7FC),
A120("A120", 0xFFD8E8F0),
A130("A130", 0xFFCDE4CD),
A140("A140", 0xFFEAE0F8),
A150("A150", 0xFFF5E3FE),
A160("A160", 0xFFF6D8EC),
A170("A170", 0xFFF5D7D7),
A180("A180", 0xFFFEF5D0),
A190("A190", 0xFFEAE6D5),
A200("A200", 0xFFD2D2DC),
A210("A210", 0xFFD7D7D9);
public static final AvatarColor UNKNOWN = A210;
/** Fast map of name to enum, while also giving us a location to map old colors to new ones. */
private static final Map<String, AvatarColor> NAME_MAP = new HashMap<>();
@@ -69,61 +34,83 @@ public enum AvatarColor {
NAME_MAP.put(color.serialize(), color);
}
NAME_MAP.put("red", CRIMSON);
NAME_MAP.put("orange", VERMILLION);
NAME_MAP.put("deep_orange", VERMILLION);
NAME_MAP.put("brown", BURLAP);
NAME_MAP.put("green", FOREST);
NAME_MAP.put("light_green", WINTERGREEN);
NAME_MAP.put("teal", TEAL);
NAME_MAP.put("blue", BLUE);
NAME_MAP.put("indigo", INDIGO);
NAME_MAP.put("purple", VIOLET);
NAME_MAP.put("deep_purple", VIOLET);
NAME_MAP.put("pink", PLUM);
NAME_MAP.put("blue_grey", TAUPE);
NAME_MAP.put("grey", STEEL);
NAME_MAP.put("ultramarine", ULTRAMARINE);
NAME_MAP.put("C020", A170);
NAME_MAP.put("C030", A170);
NAME_MAP.put("C040", A180);
NAME_MAP.put("C050", A180);
NAME_MAP.put("C000", A190);
NAME_MAP.put("C060", A190);
NAME_MAP.put("C070", A190);
NAME_MAP.put("C080", A130);
NAME_MAP.put("C090", A130);
NAME_MAP.put("C100", A130);
NAME_MAP.put("C110", A130);
NAME_MAP.put("C120", A130);
NAME_MAP.put("C130", A130);
NAME_MAP.put("C140", A130);
NAME_MAP.put("C150", A130);
NAME_MAP.put("C160", A130);
NAME_MAP.put("C170", A120);
NAME_MAP.put("C180", A120);
NAME_MAP.put("C190", A120);
NAME_MAP.put("C200", A110);
NAME_MAP.put("C210", A110);
NAME_MAP.put("C220", A110);
NAME_MAP.put("C230", A100);
NAME_MAP.put("C240", A100);
NAME_MAP.put("C250", A100);
NAME_MAP.put("C260", A100);
NAME_MAP.put("C270", A140);
NAME_MAP.put("C280", A140);
NAME_MAP.put("C290", A140);
NAME_MAP.put("C300", A150);
NAME_MAP.put("C010", A170);
NAME_MAP.put("C310", A150);
NAME_MAP.put("C320", A150);
NAME_MAP.put("C330", A160);
NAME_MAP.put("C340", A160);
NAME_MAP.put("C350", A160);
NAME_MAP.put("crimson", A170);
NAME_MAP.put("vermillion", A170);
NAME_MAP.put("burlap", A190);
NAME_MAP.put("forest", A130);
NAME_MAP.put("wintergreen", A130);
NAME_MAP.put("teal", A120);
NAME_MAP.put("blue", A110);
NAME_MAP.put("indigo", A100);
NAME_MAP.put("violet", A140);
NAME_MAP.put("plum", A150);
NAME_MAP.put("taupe", A190);
NAME_MAP.put("steel", A210);
NAME_MAP.put("ultramarine", A100);
NAME_MAP.put("unknown", A210);
NAME_MAP.put("red", A170);
NAME_MAP.put("orange", A170);
NAME_MAP.put("deep_orange", A170);
NAME_MAP.put("brown", A190);
NAME_MAP.put("green", A130);
NAME_MAP.put("light_green", A130);
NAME_MAP.put("purple", A140);
NAME_MAP.put("deep_purple", A140);
NAME_MAP.put("pink", A150);
NAME_MAP.put("blue_grey", A190);
NAME_MAP.put("grey", A210);
}
/** Colors that can be assigned via {@link #random()}. */
private static final AvatarColor[] RANDOM_OPTIONS = new AvatarColor[] {
C000,
C010,
C020,
C030,
C040,
C050,
C060,
C070,
C080,
C090,
C100,
C110,
C120,
C130,
C140,
C150,
C160,
C170,
C180,
C190,
C200,
C210,
C220,
C230,
C240,
C250,
C260,
C270,
C280,
C290,
C300,
C310,
C320,
C330,
C340,
C350,
A100,
A110,
A120,
A130,
A140,
A150,
A160,
A170,
A180,
A190,
A200,
A210
};
private final String name;
@@ -148,6 +135,6 @@ public enum AvatarColor {
}
public static @NonNull AvatarColor deserialize(@NonNull String name) {
return Objects.requireNonNull(NAME_MAP.getOrDefault(name, C000));
return Objects.requireNonNull(NAME_MAP.getOrDefault(name, A210));
}
}