aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Schneppe <christian@pix-art.de>2019-06-20 22:30:21 +0200
committerChristian Schneppe <christian@pix-art.de>2019-06-20 22:30:21 +0200
commit81c0944245b84824f1ba76ce225225ea996f57c1 (patch)
tree2920b34f4be4c972d4b7f3e4aebe97d06b03471d
parent53f93ae996a8d7478132b1f655830cf065d91177 (diff)
show own account in chatlist/contacts/conferences if you are in multi account mode
-rw-r--r--src/main/java/de/pixart/messenger/entities/Bookmark.java2
-rw-r--r--src/main/java/de/pixart/messenger/entities/Contact.java7
-rw-r--r--src/main/java/de/pixart/messenger/entities/ListItem.java10
-rw-r--r--src/main/java/de/pixart/messenger/services/XmppConnectionService.java5
-rw-r--r--src/main/java/de/pixart/messenger/ui/SettingsActivity.java1
-rw-r--r--src/main/java/de/pixart/messenger/ui/adapter/ConversationAdapter.java7
-rw-r--r--src/main/java/de/pixart/messenger/ui/adapter/ListItemAdapter.java8
-rw-r--r--src/main/java/de/pixart/messenger/utils/UIHelper.java15
-rw-r--r--src/main/res/layout/contact.xml6
-rw-r--r--src/main/res/layout/conversation_list_row.xml12
-rw-r--r--src/main/res/values/defaults.xml1
-rw-r--r--src/main/res/values/strings.xml2
-rw-r--r--src/main/res/xml/preferences.xml5
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<Tag> getTags(Context context) {
final ArrayList<Tag> 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<ListItem>, AvatarService.Avatarable
Jid getJid();
+ Account getAccount();
+
List<Tag> 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<ListItem>, 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<ConversationAdapte
viewHolder.binding.conversationName.setText(EmojiWrapper.transform(name));
}
+ if (activity.xmppConnectionService.multipleAccounts() && activity.xmppConnectionService.showOwnAccounts()) {
+ viewHolder.binding.account.setVisibility(View.VISIBLE);
+ viewHolder.binding.account.setText(conversation.getAccount().getJid().asBareJid());
+ } else {
+ viewHolder.binding.account.setVisibility(View.GONE);
+ }
+
if (conversation == ConversationFragment.getConversation(activity)) {
viewHolder.binding.frame.setBackgroundColor(StyledAttributes.getColor(activity, R.attr.color_background_tertiary));
} else {
diff --git a/src/main/java/de/pixart/messenger/ui/adapter/ListItemAdapter.java b/src/main/java/de/pixart/messenger/ui/adapter/ListItemAdapter.java
index 93a822ea3..250dcc1cd 100644
--- a/src/main/java/de/pixart/messenger/ui/adapter/ListItemAdapter.java
+++ b/src/main/java/de/pixart/messenger/ui/adapter/ListItemAdapter.java
@@ -89,6 +89,12 @@ public class ListItemAdapter extends ArrayAdapter<ListItem> {
} 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<ListItem> {
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<ListItem> {
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" />
+ <TextView
+ android:id="@+id/account"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textAppearance="@style/TextAppearance.Conversations.Status"
+ android:visibility="gone" />
</LinearLayout>
</RelativeLayout>
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" />
<RelativeLayout
+ android:id="@+id/message"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
@@ -192,7 +193,18 @@
android:paddingEnd="4dp"
android:paddingRight="4dp"
android:textAppearance="@style/TextAppearance.Conversations.Caption" />
+
+ <TextView
+ android:id="@+id/account"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_below="@+id/conversation_lastwrapper"
+ android:layout_alignParentBottom="true"
+ android:paddingTop="4dp"
+ android:textAppearance="@style/TextAppearance.Conversations.Status"
+ android:visibility="gone" />
</RelativeLayout>
+
</RelativeLayout>
</FrameLayout>
</FrameLayout>
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 @@
<bool name="show_links_inside">true</bool>
<bool name="show_maps_inside">true</bool>
<bool name="use_internal_updater">true</bool>
+ <bool name="show_own_accounts">true</bool>
<string-array name="domains">
<item>pix-art.de</item>
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 @@
<string name="add_anway">Add anyway</string>
<string name="this_looks_like_channel">This looks like a channel address</string>
<string name="no_backup_available">No backup available</string>
+ <string name="pref_show_own_accounts_summary">Show own accounts in chats and contacts if you have multiple accounts.</string>
+ <string name="pref_show_own_accounts">Show own accounts</string>
</resources>
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" />
+ <CheckBoxPreference
+ android:defaultValue="@bool/show_own_accounts"
+ android:key="show_own_accounts"
+ android:summary="@string/pref_show_own_accounts_summary"
+ android:title="@string/pref_show_own_accounts" />
</PreferenceScreen>
<!--Notifications-->
<PreferenceScreen