aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/ui
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/de/pixart/messenger/ui')
-rw-r--r--src/main/java/de/pixart/messenger/ui/ConversationActivity.java6
-rw-r--r--src/main/java/de/pixart/messenger/ui/ConversationFragment.java13
-rw-r--r--src/main/java/de/pixart/messenger/ui/XmppActivity.java4
-rw-r--r--src/main/java/de/pixart/messenger/ui/adapter/MessageAdapter.java127
-rw-r--r--src/main/java/de/pixart/messenger/ui/widget/CopyTextView.java2
-rw-r--r--src/main/java/de/pixart/messenger/ui/widget/ListSelectionManager.java5
6 files changed, 86 insertions, 71 deletions
diff --git a/src/main/java/de/pixart/messenger/ui/ConversationActivity.java b/src/main/java/de/pixart/messenger/ui/ConversationActivity.java
index 2a65570de..b4968770a 100644
--- a/src/main/java/de/pixart/messenger/ui/ConversationActivity.java
+++ b/src/main/java/de/pixart/messenger/ui/ConversationActivity.java
@@ -192,7 +192,11 @@ public class ConversationActivity extends XmppActivity
}
public boolean isConversationsOverviewHideable() {
- return mContentView instanceof SlidingPaneLayout;
+ if (mContentView instanceof SlidingPaneLayout) {
+ return true;
+ } else {
+ return false;
+ }
}
public boolean isConversationsOverviewVisable() {
diff --git a/src/main/java/de/pixart/messenger/ui/ConversationFragment.java b/src/main/java/de/pixart/messenger/ui/ConversationFragment.java
index e0f6e2157..4872dc841 100644
--- a/src/main/java/de/pixart/messenger/ui/ConversationFragment.java
+++ b/src/main/java/de/pixart/messenger/ui/ConversationFragment.java
@@ -57,6 +57,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
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.Blockable;
import de.pixart.messenger.entities.Contact;
@@ -604,8 +605,6 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
if (message.getEncryption() == Message.ENCRYPTION_PGP
|| message.getEncryption() == Message.ENCRYPTION_DECRYPTED) {
fingerprint = "pgp";
- } else if (message.getEncryption() == Message.ENCRYPTION_OTR) {
- fingerprint = "otr";
} else {
fingerprint = message.getFingerprint();
}
@@ -625,6 +624,8 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
if (message.getEncryption() == Message.ENCRYPTION_PGP
|| message.getEncryption() == Message.ENCRYPTION_DECRYPTED) {
fingerprint = "pgp";
+ } else if (message.getEncryption() == Message.ENCRYPTION_OTR) {
+ fingerprint = "otr";
} else {
fingerprint = message.getFingerprint();
}
@@ -1164,14 +1165,15 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
&& conversation.isWithStranger()) {
showSnackbar(R.string.received_message_from_stranger, R.string.block, mBlockClickListener);
} else if (activity.xmppConnectionService.warnUnecryptedChat()) {
+ AxolotlService axolotlService = account.getAxolotlService();
if ((mode == Conversation.MODE_SINGLE) && (conversation.getNextEncryption() == Message.ENCRYPTION_NONE &&
- ((Config.supportOmemo() && conversation.getAccount().getAxolotlService().isConversationAxolotlCapable(conversation)) ||
+ ((Config.supportOmemo() && axolotlService != null && conversation.getAccount().getAxolotlService().isConversationAxolotlCapable(conversation)) ||
(Config.supportOpenPgp() && account.isPgpDecryptionServiceConnected()) ||
Config.supportOtr()))) {
showSnackbar(R.string.conversation_unencrypted_hint, R.string.ok, mHideUnencryptionHint, null);
} else if ((mode == Conversation.MODE_MULTI && conversation.getMucOptions().membersOnly() && conversation.getMucOptions().nonanonymous()) &&
(conversation.getNextEncryption() == Message.ENCRYPTION_NONE &&
- ((Config.supportOmemo() && conversation.getAccount().getAxolotlService().isConversationAxolotlCapable(conversation)) ||
+ ((Config.supportOmemo() && axolotlService != null && conversation.getAccount().getAxolotlService().isConversationAxolotlCapable(conversation)) ||
(Config.supportOpenPgp() && account.isPgpDecryptionServiceConnected())))) {
showSnackbar(R.string.conversation_unencrypted_hint, R.string.ok, mHideUnencryptionHint, null);
} else {
@@ -1204,6 +1206,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
}
protected void messageSent() {
+ mSendingPgpMessage.set(false);
mEditMessage.setText("");
if (conversation.setCorrectingMessage(null)) {
mEditMessage.append(conversation.getDraftMessage());
@@ -1743,7 +1746,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
final Intent data) {
if (resultCode == Activity.RESULT_OK) {
if (requestCode == ConversationActivity.REQUEST_DECRYPT_PGP) {
- activity.getSelectedConversation().getAccount().getPgpDecryptionService().continueDecryption(true);
+ activity.getSelectedConversation().getAccount().getPgpDecryptionService().continueDecryption(data);
} else if (requestCode == ConversationActivity.REQUEST_TRUST_KEYS_TEXT) {
final String body = mEditMessage.getText().toString();
Message message = new Message(conversation, body, conversation.getNextEncryption());
diff --git a/src/main/java/de/pixart/messenger/ui/XmppActivity.java b/src/main/java/de/pixart/messenger/ui/XmppActivity.java
index 44ef30a85..6263c2e53 100644
--- a/src/main/java/de/pixart/messenger/ui/XmppActivity.java
+++ b/src/main/java/de/pixart/messenger/ui/XmppActivity.java
@@ -172,11 +172,11 @@ public abstract class XmppActivity extends Activity {
abstract protected void refreshUiReal();
protected interface OnValueEdited {
- void onValueEdited(String value);
+ public void onValueEdited(String value);
}
public interface OnPresenceSelected {
- void onPresenceSelected();
+ public void onPresenceSelected();
}
protected ServiceConnection mConnection = new ServiceConnection() {
diff --git a/src/main/java/de/pixart/messenger/ui/adapter/MessageAdapter.java b/src/main/java/de/pixart/messenger/ui/adapter/MessageAdapter.java
index 286d841bf..9fca230be 100644
--- a/src/main/java/de/pixart/messenger/ui/adapter/MessageAdapter.java
+++ b/src/main/java/de/pixart/messenger/ui/adapter/MessageAdapter.java
@@ -175,7 +175,7 @@ public class MessageAdapter extends ArrayAdapter<Message> implements CopyTextVie
@Override
public int getItemViewType(int position) {
- return getItemViewType(getItem(position));
+ return this.getItemViewType(getItem(position));
}
public int getMessageTextColor(boolean onDark, boolean primary) {
@@ -198,6 +198,7 @@ public class MessageAdapter extends ArrayAdapter<Message> implements CopyTextVie
if (viewHolder.edit_indicator != null) {
if (message.edited()) {
viewHolder.edit_indicator.setVisibility(View.VISIBLE);
+ viewHolder.edit_indicator.setAlpha(0.7f);
} else {
viewHolder.edit_indicator.setVisibility(View.GONE);
}
@@ -459,10 +460,9 @@ public class MessageAdapter extends ArrayAdapter<Message> implements CopyTextVie
}
private void displayTextMessage(final ViewHolder viewHolder, final Message message, boolean darkBackground, int type) {
- if (viewHolder.download_button != null) {
- viewHolder.download_button.setVisibility(View.GONE);
- }
+ viewHolder.download_button.setVisibility(View.GONE);
viewHolder.image.setVisibility(View.GONE);
+ viewHolder.audioPlayer.setVisibility(View.GONE);
viewHolder.messageBody.setVisibility(View.VISIBLE);
viewHolder.messageBody.setTextColor(this.getMessageTextColor(darkBackground, true));
viewHolder.messageBody.setLinkTextColor(this.getMessageTextColor(darkBackground, true));
@@ -750,7 +750,7 @@ public class MessageAdapter extends ArrayAdapter<Message> implements CopyTextVie
}
@Override
- public View getView(int position, View unused, ViewGroup parent) {
+ public View getView(int position, View view, ViewGroup parent) {
final Message message = getItem(position);
final boolean omemoEncryption = message.getEncryption() == Message.ENCRYPTION_AXOLOTL;
final boolean isInValidSession = message.isValidInSession() && (!omemoEncryption || message.isTrusted());
@@ -758,61 +758,63 @@ public class MessageAdapter extends ArrayAdapter<Message> implements CopyTextVie
final Account account = conversation.getAccount();
final int type = getItemViewType(position);
ViewHolder viewHolder;
- View view;
- viewHolder = new ViewHolder();
- switch (type) {
- case DATE_SEPARATOR:
- view = activity.getLayoutInflater().inflate(R.layout.message_date_bubble, parent, false);
- viewHolder.status_message = view.findViewById(R.id.status_message);
- break;
- case SENT:
- view = activity.getLayoutInflater().inflate(R.layout.message_sent, parent, false);
- viewHolder.message_box = view.findViewById(R.id.message_box);
- viewHolder.contact_picture = view.findViewById(R.id.message_photo);
- viewHolder.audioPlayer = view.findViewById(R.id.audio_player);
- viewHolder.download_button = view.findViewById(R.id.download_button);
- viewHolder.resend_button = view.findViewById(R.id.resend_button);
- viewHolder.indicator = view.findViewById(R.id.security_indicator);
- viewHolder.edit_indicator = view.findViewById(R.id.edit_indicator);
- viewHolder.image = view.findViewById(R.id.message_image);
- viewHolder.messageBody = view.findViewById(R.id.message_body);
- viewHolder.time = view.findViewById(R.id.message_time);
- viewHolder.indicatorReceived = view.findViewById(R.id.indicator_received);
- viewHolder.indicatorRead = view.findViewById(R.id.indicator_read);
- break;
- case RECEIVED:
- view = activity.getLayoutInflater().inflate(R.layout.message_received, parent, false);
- viewHolder.message_box = view.findViewById(R.id.message_box);
- viewHolder.contact_picture = view.findViewById(R.id.message_photo);
- viewHolder.audioPlayer = view.findViewById(R.id.audio_player);
- viewHolder.download_button = view.findViewById(R.id.download_button);
- viewHolder.indicator = view.findViewById(R.id.security_indicator);
- viewHolder.edit_indicator = view.findViewById(R.id.edit_indicator);
- viewHolder.image = view.findViewById(R.id.message_image);
- viewHolder.messageBody = view.findViewById(R.id.message_body);
- viewHolder.time = view.findViewById(R.id.message_time);
- viewHolder.indicatorReceived = view.findViewById(R.id.indicator_received);
- viewHolder.encryption = view.findViewById(R.id.message_encryption);
- break;
- case STATUS:
- view = activity.getLayoutInflater().inflate(R.layout.message_status, parent, false);
- viewHolder.contact_picture = view.findViewById(R.id.message_photo);
- viewHolder.status_message = view.findViewById(R.id.status_message);
- viewHolder.load_more_messages = view.findViewById(R.id.load_more_messages);
- break;
- default:
- throw new AssertionError("Unknown view type");
- }
- if (viewHolder.messageBody != null) {
- listSelectionManager.onCreate(viewHolder.messageBody, new MessageBodyActionModeCallback(viewHolder.messageBody));
- viewHolder.messageBody.setCopyHandler(this);
- }
- view.setTag(viewHolder);
- if (viewHolder == null) {
- return view;
+ if (view == null) {
+ viewHolder = new ViewHolder();
+ switch (type) {
+ case DATE_SEPARATOR:
+ view = activity.getLayoutInflater().inflate(R.layout.message_date_bubble, parent, false);
+ viewHolder.status_message = view.findViewById(R.id.status_message);
+ break;
+ case SENT:
+ view = activity.getLayoutInflater().inflate(R.layout.message_sent, parent, false);
+ viewHolder.message_box = view.findViewById(R.id.message_box);
+ viewHolder.contact_picture = view.findViewById(R.id.message_photo);
+ viewHolder.audioPlayer = view.findViewById(R.id.audio_player);
+ viewHolder.download_button = view.findViewById(R.id.download_button);
+ viewHolder.resend_button = view.findViewById(R.id.resend_button);
+ viewHolder.indicator = view.findViewById(R.id.security_indicator);
+ viewHolder.edit_indicator = view.findViewById(R.id.edit_indicator);
+ viewHolder.image = view.findViewById(R.id.message_image);
+ viewHolder.messageBody = view.findViewById(R.id.message_body);
+ viewHolder.time = view.findViewById(R.id.message_time);
+ viewHolder.indicatorReceived = view.findViewById(R.id.indicator_received);
+ viewHolder.indicatorRead = view.findViewById(R.id.indicator_read);
+ break;
+ case RECEIVED:
+ view = activity.getLayoutInflater().inflate(R.layout.message_received, parent, false);
+ viewHolder.message_box = view.findViewById(R.id.message_box);
+ viewHolder.contact_picture = view.findViewById(R.id.message_photo);
+ viewHolder.audioPlayer = view.findViewById(R.id.audio_player);
+ viewHolder.download_button = view.findViewById(R.id.download_button);
+ viewHolder.indicator = view.findViewById(R.id.security_indicator);
+ viewHolder.edit_indicator = view.findViewById(R.id.edit_indicator);
+ viewHolder.image = view.findViewById(R.id.message_image);
+ viewHolder.messageBody = view.findViewById(R.id.message_body);
+ viewHolder.time = view.findViewById(R.id.message_time);
+ viewHolder.indicatorReceived = view.findViewById(R.id.indicator_received);
+ viewHolder.encryption = view.findViewById(R.id.message_encryption);
+ break;
+ case STATUS:
+ view = activity.getLayoutInflater().inflate(R.layout.message_status, parent, false);
+ viewHolder.contact_picture = view.findViewById(R.id.message_photo);
+ viewHolder.status_message = view.findViewById(R.id.status_message);
+ viewHolder.load_more_messages = view.findViewById(R.id.load_more_messages);
+ break;
+ default:
+ throw new AssertionError("Unknown view type");
+ }
+ if (viewHolder.messageBody != null) {
+ listSelectionManager.onCreate(viewHolder.messageBody, new MessageBodyActionModeCallback(viewHolder.messageBody));
+ viewHolder.messageBody.setCopyHandler(this);
+ }
+ view.setTag(viewHolder);
+ } else {
+ viewHolder = (ViewHolder) view.getTag();
+ if (viewHolder == null) {
+ return view;
+ }
}
-
boolean darkBackground = false; // default: (type == SENT && (!isInValidSession || !mUseWhiteBackground));
if (type == DATE_SEPARATOR) {
@@ -839,9 +841,12 @@ public class MessageAdapter extends ArrayAdapter<Message> implements CopyTextVie
viewHolder.load_more_messages.setVisibility(View.GONE);
viewHolder.status_message.setText(message.getBody());
boolean showAvatar;
- if (conversation.getMode() == Conversation.MODE_MULTI && (message.getCounterpart() != null || message.getTrueCounterpart() != null || (message.getCounterparts() != null && message.getCounterparts().size() > 0))) {
+ if (conversation.getMode() == Conversation.MODE_SINGLE) {
+ showAvatar = true;
+ loadAvatar(message,viewHolder.contact_picture,activity.getPixel(32));
+ } else if (message.getCounterpart() != null || message.getTrueCounterpart() != null || (message.getCounterparts() != null && message.getCounterparts().size() > 0)) {
showAvatar = true;
- loadAvatar(message, viewHolder.contact_picture, activity.getPixel(32));
+ loadAvatar(message,viewHolder.contact_picture,activity.getPixel(32));
} else {
showAvatar = false;
}
@@ -1024,7 +1029,7 @@ public class MessageAdapter extends ArrayAdapter<Message> implements CopyTextVie
}
public interface OnQuoteListener {
- void onQuote(String text);
+ public void onQuote(String text);
}
private class MessageBodyActionModeCallback implements ActionMode.Callback {
diff --git a/src/main/java/de/pixart/messenger/ui/widget/CopyTextView.java b/src/main/java/de/pixart/messenger/ui/widget/CopyTextView.java
index ce126fa1f..396a71348 100644
--- a/src/main/java/de/pixart/messenger/ui/widget/CopyTextView.java
+++ b/src/main/java/de/pixart/messenger/ui/widget/CopyTextView.java
@@ -29,7 +29,7 @@ public class CopyTextView extends TextView {
}
public interface CopyHandler {
- String transformTextForCopy(CharSequence text, int start, int end);
+ public String transformTextForCopy(CharSequence text, int start, int end);
}
private CopyHandler copyHandler;
diff --git a/src/main/java/de/pixart/messenger/ui/widget/ListSelectionManager.java b/src/main/java/de/pixart/messenger/ui/widget/ListSelectionManager.java
index f86357308..5ac6f9134 100644
--- a/src/main/java/de/pixart/messenger/ui/widget/ListSelectionManager.java
+++ b/src/main/java/de/pixart/messenger/ui/widget/ListSelectionManager.java
@@ -141,7 +141,10 @@ public class ListSelectionManager {
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
- return additionalCallback != null && additionalCallback.onActionItemClicked(mode, item);
+ if (additionalCallback != null && additionalCallback.onActionItemClicked(mode, item)) {
+ return true;
+ }
+ return false;
}
@Override