Improve the logic for generating contact photos with contact names
which start with emoji or non-language characters.
This fixes the infamous "question-mark-in-a-box" character from
appearing in the contact photo for contacts whose names begin with
an emoji or a non-language symbol.
Closes#3684
1. Switch from 300 to 500 colors.
2. Colorize incoming conversation bubbles.
3. Colorize recipeint preference activity toolbar.
4. Support inverted colors in avatars.
5. Make status bar icons tint according to secondary color.
// FREEBIE
Because ContactSelectionListItem is used as a
RecipientModifiedListener, it leaks its context
(NewConversationActivity/PushContactSelectionActivity),
which can lead to OOM crashes.
Closes#3214
// FREEBIE
Drawables are (strangely) mutable objects. We reuse a single
drawable for each recipient, but some avatar views (the
conversation list -- 40dp) are larger than others (the
conversation -- 30dp).
This results in a situation where TextDrawable doesn't render
itself appropriately, because the bounds are modified by a larger
view.
Giving the Drawable an intrinsic width and height resolves this
conflict.
// FREEBIE
If the contact doesn't have an image, render a color-coded
background and the first letter of the contact's name.
1) Don't display anything during recipient resolution.
2) Display a # icon in material gray for recipients with no name.
3) Display a material group icon in material gray for groups with
no avatar icon set.
Closes#3104
// FREEBIE
1) Switch to new TextSecureAddress addressing, rather than mixing
long-based recipient IDs into libtextsecure.
2) Get rid of RecipientFormattingException throws in calls to
RecipientFactory.
Closes#2570
When searching for messages only simple threads matching the
contact names are returned as search results. With this commit
also group converstations where the group title matches the search
term are displayed in the result. This makes search results more
consistent with the conversation list as now all conversation
titles (i.e. contact names and group titles) are searched through.
Fixes#1954Closes#2216
1) Break the core cryptography functions out into libaxolotol.
2) The objective for this code is a Java library that isn't
dependent on any Android functions. However, while the
code has been separated from any Android functionality,
it is still an 'android library project' because of the
JNI.
Currently the order of numbers is times contacted -> displayName ->
phone type (mobile vs. home, etc.). This adds whether the number has
been saved as the default number for a contact to sort numbers belonging
to the same contact.
Fixes#580
1) Updating a group without changing the avatar will keep that
avatar
2) Prohibit adding non-push users to an existing push group
3) Add Android contacts to the same database. Takes a small amount
more time and memory, but allows queries to not be a hack, and
enables us to dedupe numbers in JB and higher devices.
// FREEBIE
* unify single and multi contact selection activities
* follow android listview design recommendations more closely
* add contact photos to selection
* change indicator for push to be more obvious
* cache circle-cropped bitmaps
* dedupe numbers when contact has multiple of same phone number
// FREEBIE
1) Move all the crypto classes from securesms.crypto.
2) Move all the crypto storage from securesms.database.keys
3) Replace the old imported BC code with spongycastle.
1) Refactor recipient class to support asynchronous loading operations.
2) Refactor recipient factory to simplify recipient access.
3) Consoliate everything into one recipient provider that is capable of
doing async lookups and intelligent caching.
Mostly, the inheritance graph for MessageRecord/MmsMessageRecord was
all messed up, and each class was overloaded for things it shouldn't
have been.
1) Broke MessageRecord/MmsMessageRecord up into: DisplayRecord, ThreadRecord,
MessageRecord, SmsMessageRecord, NotificationMmsMessageRecord, and
MediaMmsMessageRecord.
2) Updated all the adapters/views to keep pace with that change.
1) Add >= ICS profile support (the system-supported "me" contact).
2) Improve <= Gingerbread support for me contact by auto-detecting
contacts that have the same number as the SIM card.
3) Tie in identity key import/export support to the "me" contact.
4) Don't display a "me" selection option in preference if it can
be auto-detected.
5) Refactor out the ContactAccessorNewApi back into the base class.
The 1.X Android versions don't have the 2.X VERSION_CODE
symbols, so comparing against them in order to make 1.6
choices will throw runtime exceptions.