aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Schneppe <christian.schneppe@pix-art.de>2020-02-14 19:52:48 +0100
committerChristian Schneppe <christian.schneppe@pix-art.de>2020-02-14 19:52:48 +0100
commit3f12418b601bf626b478d78c488db0ce1041ef08 (patch)
tree26d20a54ea6d602da96c691f36f46daed9e87153
parent21ddcc478f9e8423a5f8e61026cc797592e10858 (diff)
add 'show avatar' to context menu in chat view
to show a bigger avatar
-rw-r--r--src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java4
-rw-r--r--src/main/java/de/pixart/messenger/ui/ContactDetailsActivity.java4
-rw-r--r--src/main/java/de/pixart/messenger/ui/ConversationFragment.java17
-rw-r--r--src/main/java/de/pixart/messenger/ui/util/MucDetailsContextMenuHelper.java17
-rw-r--r--src/main/res/menu/muc_details_context.xml5
-rw-r--r--src/main/res/menu/one_on_one_context.xml3
-rw-r--r--src/main/res/values/strings.xml1
7 files changed, 46 insertions, 5 deletions
diff --git a/src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java b/src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java
index 4dcf0ba1d..d11b6ccdf 100644
--- a/src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java
+++ b/src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java
@@ -237,14 +237,14 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers
startActivity(intent);
});
this.binding.detailsMucAvatar.setOnLongClickListener(v -> {
- ImageView view = new ImageView(ConferenceDetailsActivity.this);
+ final ImageView view = new ImageView(ConferenceDetailsActivity.this);
view.setAdjustViewBounds(true);
view.setMaxHeight(R.dimen.avatar_big);
view.setMaxWidth(R.dimen.avatar_big);
view.setBackgroundColor(Color.WHITE);
view.setScaleType(ImageView.ScaleType.FIT_XY);
AvatarWorkerTask.loadAvatar(mConversation, view, R.dimen.avatar_big);
- AlertDialog.Builder builder = new AlertDialog.Builder(ConferenceDetailsActivity.this);
+ final AlertDialog.Builder builder = new AlertDialog.Builder(ConferenceDetailsActivity.this);
builder.setView(view);
builder.create().show();
return true;
diff --git a/src/main/java/de/pixart/messenger/ui/ContactDetailsActivity.java b/src/main/java/de/pixart/messenger/ui/ContactDetailsActivity.java
index d66e7b4dd..7c2ce1220 100644
--- a/src/main/java/de/pixart/messenger/ui/ContactDetailsActivity.java
+++ b/src/main/java/de/pixart/messenger/ui/ContactDetailsActivity.java
@@ -557,14 +557,14 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp
AvatarWorkerTask.loadAvatar(contact, binding.detailsContactBadge, R.dimen.avatar_on_details_screen_size);
binding.detailsContactBadge.setOnClickListener(this.onBadgeClick);
binding.detailsContactBadge.setOnLongClickListener(v -> {
- ImageView view = new ImageView(ContactDetailsActivity.this);
+ final ImageView view = new ImageView(ContactDetailsActivity.this);
view.setAdjustViewBounds(true);
view.setMaxHeight(R.dimen.avatar_big);
view.setMaxWidth(R.dimen.avatar_big);
view.setBackgroundColor(Color.WHITE);
view.setScaleType(ImageView.ScaleType.FIT_XY);
AvatarWorkerTask.loadAvatar(mConversation, view, R.dimen.avatar_big);
- AlertDialog.Builder builder = new AlertDialog.Builder(ContactDetailsActivity.this);
+ final AlertDialog.Builder builder = new AlertDialog.Builder(ContactDetailsActivity.this);
builder.setView(view);
builder.create().show();
return true;
diff --git a/src/main/java/de/pixart/messenger/ui/ConversationFragment.java b/src/main/java/de/pixart/messenger/ui/ConversationFragment.java
index 320c1eb8b..16ab1f0a6 100644
--- a/src/main/java/de/pixart/messenger/ui/ConversationFragment.java
+++ b/src/main/java/de/pixart/messenger/ui/ConversationFragment.java
@@ -14,6 +14,7 @@ import android.content.Intent;
import android.content.IntentSender.SendIntentException;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
+import android.graphics.Color;
import android.graphics.Typeface;
import android.net.Uri;
import android.os.Build;
@@ -46,6 +47,7 @@ import android.widget.AbsListView.OnScrollListener;
import android.widget.AdapterView;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.CheckBox;
+import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView.OnEditorActionListener;
import android.widget.Toast;
@@ -101,6 +103,7 @@ import de.pixart.messenger.ui.adapter.MediaPreviewAdapter;
import de.pixart.messenger.ui.adapter.MessageAdapter;
import de.pixart.messenger.ui.util.ActivityResult;
import de.pixart.messenger.ui.util.Attachment;
+import de.pixart.messenger.ui.util.AvatarWorkerTask;
import de.pixart.messenger.ui.util.ConversationMenuConfigurator;
import de.pixart.messenger.ui.util.DateSeparator;
import de.pixart.messenger.ui.util.EditMessageActionModeCallback;
@@ -3141,6 +3144,18 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
popupMenu.inflate(R.menu.one_on_one_context);
popupMenu.setOnMenuItemClickListener(item -> {
switch (item.getItemId()) {
+ case R.id.action_show_avatar:
+ final ImageView view = new ImageView(activity);
+ view.setAdjustViewBounds(true);
+ view.setMaxHeight(R.dimen.avatar_big);
+ view.setMaxWidth(R.dimen.avatar_big);
+ view.setBackgroundColor(Color.WHITE);
+ view.setScaleType(ImageView.ScaleType.FIT_XY);
+ AvatarWorkerTask.loadAvatar(contact, view, R.dimen.avatar_big);
+ final AlertDialog.Builder builder = new AlertDialog.Builder(activity);
+ builder.setView(view);
+ builder.create().show();
+ break;
case R.id.action_contact_details:
activity.switchToContactDetails(message.getContact(), fingerprint);
break;
@@ -3156,6 +3171,8 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
final Menu menu = popupMenu.getMenu();
popupMenu.setOnMenuItemClickListener(item -> {
switch (item.getItemId()) {
+
+
case R.id.action_show_qr_code:
activity.showQrCode(conversation.getAccount().getShareableUri());
break;
diff --git a/src/main/java/de/pixart/messenger/ui/util/MucDetailsContextMenuHelper.java b/src/main/java/de/pixart/messenger/ui/util/MucDetailsContextMenuHelper.java
index a38286a96..7a3411cfa 100644
--- a/src/main/java/de/pixart/messenger/ui/util/MucDetailsContextMenuHelper.java
+++ b/src/main/java/de/pixart/messenger/ui/util/MucDetailsContextMenuHelper.java
@@ -1,6 +1,7 @@
package de.pixart.messenger.ui.util;
import android.app.Activity;
+import android.graphics.Color;
import android.graphics.Typeface;
import android.preference.PreferenceManager;
import android.text.SpannableString;
@@ -14,6 +15,7 @@ import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
+import android.widget.ImageView;
import androidx.appcompat.app.AlertDialog;
@@ -66,6 +68,8 @@ public final class MucDetailsContextMenuHelper {
final MucOptions mucOptions = conversation.getMucOptions();
final boolean isGroupChat = mucOptions.isPrivateAndNonAnonymous();
MenuItem title = menu.findItem(R.id.title);
+ MenuItem showAvatar = menu.findItem(R.id.action_show_avatar);
+ showAvatar.setVisible(user != null);
if (forceContextMenu && username != null) {
SpannableStringBuilder menuTitle = new SpannableStringBuilder(username);
menuTitle.setSpan(new ForegroundColorSpan(titleColor), 0, menuTitle.length(), 0);
@@ -102,7 +106,6 @@ public final class MucDetailsContextMenuHelper {
final User self = conversation.getMucOptions().getSelf();
addToRoster.setVisible(contact != null && !contact.showInRoster());
showContactDetails.setVisible(contact == null || !contact.isSelf());
-
if ((activity instanceof ConferenceDetailsActivity || activity instanceof MucUsersActivity) && user.getRole() == MucOptions.Role.NONE) {
invite.setVisible(true);
}
@@ -173,6 +176,18 @@ public final class MucDetailsContextMenuHelper {
final Account account = conversation.getAccount();
final Contact contact = jid == null ? null : account.getRoster().getContact(jid);
switch (item.getItemId()) {
+ case R.id.action_show_avatar:
+ final ImageView view = new ImageView(activity);
+ view.setAdjustViewBounds(true);
+ view.setMaxHeight(R.dimen.avatar_big);
+ view.setMaxWidth(R.dimen.avatar_big);
+ view.setBackgroundColor(Color.WHITE);
+ view.setScaleType(ImageView.ScaleType.FIT_XY);
+ AvatarWorkerTask.loadAvatar(user, view, R.dimen.avatar_big);
+ final AlertDialog.Builder builder = new AlertDialog.Builder(activity);
+ builder.setView(view);
+ builder.create().show();
+ return true;
case R.id.action_contact_details:
if (contact != null) {
activity.switchToContactDetails(contact, fingerprint);
diff --git a/src/main/res/menu/muc_details_context.xml b/src/main/res/menu/muc_details_context.xml
index 076dc3652..0fdec97ca 100644
--- a/src/main/res/menu/muc_details_context.xml
+++ b/src/main/res/menu/muc_details_context.xml
@@ -7,6 +7,11 @@
android:orderInCategory="1"
android:visible="false" />
<item
+ android:id="@+id/action_show_avatar"
+ android:orderInCategory="99"
+ android:title="@string/show_avatar"
+ android:visible="false" />
+ <item
android:id="@+id/highlight_in_muc"
android:orderInCategory="100"
android:title="@string/highlight_in_muc"
diff --git a/src/main/res/menu/one_on_one_context.xml b/src/main/res/menu/one_on_one_context.xml
index 100edff9a..63747a203 100644
--- a/src/main/res/menu/one_on_one_context.xml
+++ b/src/main/res/menu/one_on_one_context.xml
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
+ android:id="@+id/action_show_avatar"
+ android:title="@string/show_avatar" />
+ <item
android:id="@+id/action_contact_details"
android:title="@string/action_contact_details" />
<item
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index 51609a777..8f3123dba 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -1003,4 +1003,5 @@
<string name="pref_use_colored_muc_names_summary">Colorize nicknames in group chats or channels like default avatar backgrounds.</string>
<string name="pref_use_colored_muc_names">Colorize nicknames</string>
<string name="show_videos_images_only">Only images/videos</string>
+ <string name="show_avatar">Show avatar</string>
</resources>