From 81c0944245b84824f1ba76ce225225ea996f57c1 Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Thu, 20 Jun 2019 22:30:21 +0200 Subject: show own account in chatlist/contacts/conferences if you are in multi account mode --- src/main/java/de/pixart/messenger/entities/Bookmark.java | 2 +- src/main/java/de/pixart/messenger/entities/Contact.java | 7 +++---- src/main/java/de/pixart/messenger/entities/ListItem.java | 10 +++++++++- .../pixart/messenger/services/XmppConnectionService.java | 5 +++++ .../java/de/pixart/messenger/ui/SettingsActivity.java | 1 + .../pixart/messenger/ui/adapter/ConversationAdapter.java | 7 +++++++ .../de/pixart/messenger/ui/adapter/ListItemAdapter.java | 8 ++++++++ src/main/java/de/pixart/messenger/utils/UIHelper.java | 15 ++++++++------- src/main/res/layout/contact.xml | 6 ++++++ src/main/res/layout/conversation_list_row.xml | 12 ++++++++++++ src/main/res/values/defaults.xml | 1 + src/main/res/values/strings.xml | 2 ++ src/main/res/xml/preferences.xml | 5 +++++ 13 files changed, 68 insertions(+), 13 deletions(-) diff --git a/src/main/java/de/pixart/messenger/entities/Bookmark.java b/src/main/java/de/pixart/messenger/entities/Bookmark.java index 0d1f5781d..08c368b76 100644 --- a/src/main/java/de/pixart/messenger/entities/Bookmark.java +++ b/src/main/java/de/pixart/messenger/entities/Bookmark.java @@ -98,7 +98,7 @@ public class Bookmark extends Element implements ListItem { for (Element element : getChildren()) { if (element.getName().equals("group") && element.getContent() != null) { String group = element.getContent(); - tags.add(new Tag(group, UIHelper.getColorForName(group, true), 0)); + tags.add(new Tag(group, UIHelper.getColorForName(group, true), 0, account)); } } return tags; diff --git a/src/main/java/de/pixart/messenger/entities/Contact.java b/src/main/java/de/pixart/messenger/entities/Contact.java index ea7849520..7d9f100e2 100644 --- a/src/main/java/de/pixart/messenger/entities/Contact.java +++ b/src/main/java/de/pixart/messenger/entities/Contact.java @@ -20,7 +20,6 @@ import java.util.Locale; import de.pixart.messenger.Config; import de.pixart.messenger.R; import de.pixart.messenger.android.AbstractPhoneContact; -import de.pixart.messenger.services.QuickConversationsService; import de.pixart.messenger.utils.JidHelper; import de.pixart.messenger.utils.UIHelper; import de.pixart.messenger.xml.Element; @@ -159,12 +158,12 @@ public class Contact implements ListItem, Blockable { public List getTags(Context context) { final ArrayList tags = new ArrayList<>(); for (final String group : getGroups(true)) { - tags.add(new Tag(group, UIHelper.getColorForName(group), 0)); + tags.add(new Tag(group, UIHelper.getColorForName(group), 0, account)); } Presence.Status status = getShownStatus(); - tags.add(UIHelper.getTagForStatus(context, status)); + tags.add(UIHelper.getTagForStatus(context, status, account)); if (isBlocked()) { - tags.add(new Tag(context.getString(R.string.blocked), 0xff2e2f3b, 0)); + tags.add(new Tag(context.getString(R.string.blocked), 0xff2e2f3b, 0, account)); } return tags; } diff --git a/src/main/java/de/pixart/messenger/entities/ListItem.java b/src/main/java/de/pixart/messenger/entities/ListItem.java index fba37cc4c..e8907b588 100644 --- a/src/main/java/de/pixart/messenger/entities/ListItem.java +++ b/src/main/java/de/pixart/messenger/entities/ListItem.java @@ -14,17 +14,21 @@ public interface ListItem extends Comparable, AvatarService.Avatarable Jid getJid(); + Account getAccount(); + List getTags(Context context); final class Tag { private final String name; private final int color; private final int offline; + private final Account account; - public Tag(final String name, final int color, final int offline) { + public Tag(final String name, final int color, final int offline, final Account account) { this.name = name; this.color = color; this.offline = offline; + this.account = account; } public int getColor() { @@ -38,6 +42,10 @@ public interface ListItem extends Comparable, AvatarService.Avatarable public int getOffline() { return this.offline; } + + public Account getAccount() { + return this.account; + } } boolean match(Context context, final String needle); diff --git a/src/main/java/de/pixart/messenger/services/XmppConnectionService.java b/src/main/java/de/pixart/messenger/services/XmppConnectionService.java index 0dc298fd6..539f89553 100644 --- a/src/main/java/de/pixart/messenger/services/XmppConnectionService.java +++ b/src/main/java/de/pixart/messenger/services/XmppConnectionService.java @@ -168,6 +168,7 @@ import static de.pixart.messenger.ui.SettingsActivity.CHAT_STATES; import static de.pixart.messenger.ui.SettingsActivity.CONFIRM_MESSAGES; import static de.pixart.messenger.ui.SettingsActivity.ENABLE_MULTI_ACCOUNTS; import static de.pixart.messenger.ui.SettingsActivity.INDICATE_RECEIVED; +import static de.pixart.messenger.ui.SettingsActivity.SHOW_OWN_ACCOUNTS; public class XmppConnectionService extends Service { @@ -4021,6 +4022,10 @@ public class XmppConnectionService extends Service { return getBooleanPreference(ENABLE_MULTI_ACCOUNTS, R.bool.enable_multi_accounts); } + public boolean showOwnAccounts() { + return getBooleanPreference(SHOW_OWN_ACCOUNTS, R.bool.show_own_accounts); + } + public int unreadCount() { int count = 0; for (Conversation conversation : getConversations()) { diff --git a/src/main/java/de/pixart/messenger/ui/SettingsActivity.java b/src/main/java/de/pixart/messenger/ui/SettingsActivity.java index e7beac1c6..fedd2b60d 100644 --- a/src/main/java/de/pixart/messenger/ui/SettingsActivity.java +++ b/src/main/java/de/pixart/messenger/ui/SettingsActivity.java @@ -57,6 +57,7 @@ public class SettingsActivity extends XmppActivity implements public static final String SHOW_FOREGROUND_SERVICE = "show_foreground_service"; public static final String USE_BUNDLED_EMOJIS = "use_bundled_emoji"; public static final String ENABLE_MULTI_ACCOUNTS = "enable_multi_accounts"; + public static final String SHOW_OWN_ACCOUNTS = "show_own_accounts"; public static final String QUICK_SHARE_ATTACHMENT_CHOICE = "quick_share_attachment_choice"; public static final String NUMBER_OF_ACCOUNTS = "number_of_accounts"; public static final String PLAY_GIF_INSIDE = "play_gif_inside"; diff --git a/src/main/java/de/pixart/messenger/ui/adapter/ConversationAdapter.java b/src/main/java/de/pixart/messenger/ui/adapter/ConversationAdapter.java index 27d623117..15efb7921 100644 --- a/src/main/java/de/pixart/messenger/ui/adapter/ConversationAdapter.java +++ b/src/main/java/de/pixart/messenger/ui/adapter/ConversationAdapter.java @@ -59,6 +59,13 @@ public class ConversationAdapter extends RecyclerView.Adapter { } else { viewHolder.jid.setVisibility(View.GONE); } + if (activity.xmppConnectionService.multipleAccounts() && activity.xmppConnectionService.showOwnAccounts()) { + viewHolder.account.setVisibility(View.VISIBLE); + viewHolder.account.setText(item.getAccount().getJid().asBareJid()); + } else { + viewHolder.account.setVisibility(View.GONE); + } viewHolder.name.setText(EmojiWrapper.transform(item.getDisplayName())); if (tags.size() != 0) { for (ListItem.Tag tag : tags) { @@ -128,6 +134,7 @@ public class ListItemAdapter extends ArrayAdapter { private static class ViewHolder { private TextView name; private TextView jid; + private TextView account; private ImageView avatar; private FlowLayout tags; @@ -138,6 +145,7 @@ public class ListItemAdapter extends ArrayAdapter { ViewHolder viewHolder = new ViewHolder(); viewHolder.name = binding.contactDisplayName; viewHolder.jid = binding.contactJid; + viewHolder.account = binding.account; viewHolder.avatar = binding.contactPhoto; viewHolder.tags = binding.tags; binding.getRoot().setTag(viewHolder); diff --git a/src/main/java/de/pixart/messenger/utils/UIHelper.java b/src/main/java/de/pixart/messenger/utils/UIHelper.java index a2a536cea..b2e73fb46 100644 --- a/src/main/java/de/pixart/messenger/utils/UIHelper.java +++ b/src/main/java/de/pixart/messenger/utils/UIHelper.java @@ -18,6 +18,7 @@ import java.util.Locale; import de.pixart.messenger.Config; import de.pixart.messenger.R; import de.pixart.messenger.crypto.axolotl.AxolotlService; +import de.pixart.messenger.entities.Account; import de.pixart.messenger.entities.Contact; import de.pixart.messenger.entities.Conversation; import de.pixart.messenger.entities.Conversational; @@ -553,20 +554,20 @@ public class UIHelper { return LOCATION_QUESTIONS.contains(body); } - public static ListItem.Tag getTagForStatus(Context context, Presence.Status status) { + public static ListItem.Tag getTagForStatus(Context context, Presence.Status status, Account account) { switch (status) { case CHAT: - return new ListItem.Tag(context.getString(R.string.presence_chat), 0xff259b24, 0); + return new ListItem.Tag(context.getString(R.string.presence_chat), 0xff259b24, 0, account); case AWAY: - return new ListItem.Tag(context.getString(R.string.presence_away), 0xffff9800, 0); + return new ListItem.Tag(context.getString(R.string.presence_away), 0xffff9800, 0, account); case XA: - return new ListItem.Tag(context.getString(R.string.presence_xa), 0xfff44336, 0); + return new ListItem.Tag(context.getString(R.string.presence_xa), 0xfff44336, 0, account); case DND: - return new ListItem.Tag(context.getString(R.string.presence_dnd), 0xfff44336, 0); + return new ListItem.Tag(context.getString(R.string.presence_dnd), 0xfff44336, 0, account); case OFFLINE: - return new ListItem.Tag(context.getString(R.string.presence_offline), 0xff808080, 1); + return new ListItem.Tag(context.getString(R.string.presence_offline), 0xff808080, 1, account); default: - return new ListItem.Tag(context.getString(R.string.presence_online), 0xff259b24, 0); + return new ListItem.Tag(context.getString(R.string.presence_online), 0xff259b24, 0, account); } } diff --git a/src/main/res/layout/contact.xml b/src/main/res/layout/contact.xml index e5b71d743..5eaf4944c 100644 --- a/src/main/res/layout/contact.xml +++ b/src/main/res/layout/contact.xml @@ -54,6 +54,12 @@ android:layout_height="wrap_content" android:textAppearance="@style/TextAppearance.Conversations.Fingerprint" android:visibility="gone" /> + diff --git a/src/main/res/layout/conversation_list_row.xml b/src/main/res/layout/conversation_list_row.xml index 3d03c3906..b8bc8fcb9 100644 --- a/src/main/res/layout/conversation_list_row.xml +++ b/src/main/res/layout/conversation_list_row.xml @@ -30,6 +30,7 @@ app:riv_corner_radius="@dimen/rounded_image_border" /> + + + diff --git a/src/main/res/values/defaults.xml b/src/main/res/values/defaults.xml index dc4f7ead3..59b759636 100644 --- a/src/main/res/values/defaults.xml +++ b/src/main/res/values/defaults.xml @@ -117,6 +117,7 @@ true true true + true pix-art.de diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index c04f926b5..496c84d0d 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -914,4 +914,6 @@ Add anyway This looks like a channel address No backup available + Show own accounts in chats and contacts if you have multiple accounts. + Show own accounts diff --git a/src/main/res/xml/preferences.xml b/src/main/res/xml/preferences.xml index f42210417..d8dd6c89e 100644 --- a/src/main/res/xml/preferences.xml +++ b/src/main/res/xml/preferences.xml @@ -81,6 +81,11 @@ android:key="prefer_xmpp_avatar" android:summary="@string/pref_prefer_xmpp_avatar_summary" android:title="@string/pref_prefer_xmpp_avatar" /> +