diff --git a/art/ic_send_cancel_away.svg b/art/ic_send_cancel_away.svg
new file mode 100644
index 0000000000000000000000000000000000000000..1ee9c40f61b37a16ca5abd1971df24beacea7a27
--- /dev/null
+++ b/art/ic_send_cancel_away.svg
@@ -0,0 +1,54 @@
+
+
diff --git a/art/ic_send_cancel_dnd.svg b/art/ic_send_cancel_dnd.svg
new file mode 100644
index 0000000000000000000000000000000000000000..54e02a918e7ed74c86e56ec1dbe109e3301dfd96
--- /dev/null
+++ b/art/ic_send_cancel_dnd.svg
@@ -0,0 +1,54 @@
+
+
diff --git a/art/ic_send_cancel_offline.svg b/art/ic_send_cancel_offline.svg
new file mode 100644
index 0000000000000000000000000000000000000000..b88ade09db0c0e32d5db585f4679becb6b5f0b0e
--- /dev/null
+++ b/art/ic_send_cancel_offline.svg
@@ -0,0 +1,54 @@
+
+
diff --git a/art/ic_send_cancel_online.svg b/art/ic_send_cancel_online.svg
new file mode 100644
index 0000000000000000000000000000000000000000..40946af6758f0eb14340e5dbbc3f53ea22b92bd3
--- /dev/null
+++ b/art/ic_send_cancel_online.svg
@@ -0,0 +1,54 @@
+
+
diff --git a/art/render.rb b/art/render.rb
index 32d06f8f7f90632f8d4bc44692b3982b5af22d1b..ad53b1f4fa6c52c980bbcfded8175c5a91ce853f 100755
--- a/art/render.rb
+++ b/art/render.rb
@@ -26,6 +26,10 @@ images = {
'ic_send_voice_offline.svg' => ['ic_send_voice_offline', 36],
'ic_send_voice_away.svg' => ['ic_send_voice_away', 36],
'ic_send_voice_dnd.svg' => ['ic_send_voice_dnd', 36],
+ 'ic_send_cancel_online.svg' => ['ic_send_cancel_online', 36],
+ 'ic_send_cancel_offline.svg' => ['ic_send_cancel_offline', 36],
+ 'ic_send_cancel_away.svg' => ['ic_send_cancel_away', 36],
+ 'ic_send_cancel_dnd.svg' => ['ic_send_cancel_dnd', 36],
}
images.each do |source, result|
resolutions.each do |name, factor|
diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java
index 37ae00a303912b6b5c6e08fd1b41a5087cee2b6f..6b11d31094be180fb111eeb94658e4c15c4fc84e 100644
--- a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java
+++ b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java
@@ -245,6 +245,13 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
case RECORD_VOICE:
activity.attachFile(ConversationActivity.ATTACHMENT_CHOICE_RECORD_VOICE);
break;
+ case CANCEL:
+ if (conversation != null && conversation.getMode() == Conversation.MODE_MULTI) {
+ conversation.setNextCounterpart(null);
+ updateChatMsgHint();
+ updateSendButton();
+ }
+ break;
default:
sendMessage();
}
@@ -257,8 +264,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
@Override
public void onClick(View v) {
- Intent intent = new Intent(getActivity(),
- ConferenceDetailsActivity.class);
+ Intent intent = new Intent(getActivity(), ConferenceDetailsActivity.class);
intent.setAction(ConferenceDetailsActivity.ACTION_VIEW_MUC);
intent.putExtra("uuid", conversation.getUuid());
startActivity(intent);
@@ -271,13 +277,6 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
if (this.conversation == null) {
return;
}
- if (mEditMessage.getText().length() < 1) {
- if (this.conversation.getMode() == Conversation.MODE_MULTI) {
- conversation.setNextCounterpart(null);
- updateChatMsgHint();
- }
- return;
- }
Message message = new Message(conversation, mEditMessage.getText()
.toString(), conversation.getNextEncryption(activity
.forceEncryption()));
@@ -558,6 +557,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
this.mEditMessage.setText("");
this.conversation.setNextCounterpart(counterpart);
updateChatMsgHint();
+ updateSendButton();
}
protected void highlightInConference(String nick) {
@@ -808,7 +808,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
updateChatMsgHint();
}
- enum SendButtonAction {TEXT, TAKE_PHOTO, SEND_LOCATION, RECORD_VOICE}
+ enum SendButtonAction {TEXT, TAKE_PHOTO, SEND_LOCATION, RECORD_VOICE, CANCEL}
private int getSendButtonImageResource(SendButtonAction action, int status) {
switch (action) {
@@ -864,6 +864,19 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
default:
return R.drawable.ic_send_location_offline;
}
+ case CANCEL:
+ switch (status) {
+ case Presences.CHAT:
+ case Presences.ONLINE:
+ return R.drawable.ic_send_cancel_online;
+ case Presences.AWAY:
+ return R.drawable.ic_send_cancel_away;
+ case Presences.XA:
+ case Presences.DND:
+ return R.drawable.ic_send_cancel_dnd;
+ default:
+ return R.drawable.ic_send_cancel_offline;
+ }
}
return R.drawable.ic_send_text_offline;
}
@@ -872,10 +885,15 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
final Conversation c = this.conversation;
final SendButtonAction action;
final int status;
+ final boolean empty = this.mEditMessage == null || this.mEditMessage.getText().length() == 0;
if (c.getMode() == Conversation.MODE_MULTI) {
- action = SendButtonAction.TEXT;
+ if (empty && c.getNextCounterpart() != null) {
+ action = SendButtonAction.CANCEL;
+ } else {
+ action = SendButtonAction.TEXT;
+ }
} else {
- if (this.mEditMessage == null || this.mEditMessage.getText().length() == 0) {
+ if (empty) {
String setting = activity.getPreferences().getString("quick_action","recent");
if (setting.equals("recent")) {
setting = activity.getPreferences().getString("recently_used_quick_action","text");
diff --git a/src/main/res/drawable-hdpi/ic_send_cancel_away.png b/src/main/res/drawable-hdpi/ic_send_cancel_away.png
new file mode 100644
index 0000000000000000000000000000000000000000..9525c040f959b525aaed82a771c98ad944b5f8bd
Binary files /dev/null and b/src/main/res/drawable-hdpi/ic_send_cancel_away.png differ
diff --git a/src/main/res/drawable-hdpi/ic_send_cancel_dnd.png b/src/main/res/drawable-hdpi/ic_send_cancel_dnd.png
new file mode 100644
index 0000000000000000000000000000000000000000..cbfd8e76c06a7800a253e3bc4485974bbd2f22fe
Binary files /dev/null and b/src/main/res/drawable-hdpi/ic_send_cancel_dnd.png differ
diff --git a/src/main/res/drawable-hdpi/ic_send_cancel_offline.png b/src/main/res/drawable-hdpi/ic_send_cancel_offline.png
new file mode 100644
index 0000000000000000000000000000000000000000..2cb4f4f3802bddb22dfea04aff477d957677e8d6
Binary files /dev/null and b/src/main/res/drawable-hdpi/ic_send_cancel_offline.png differ
diff --git a/src/main/res/drawable-hdpi/ic_send_cancel_online.png b/src/main/res/drawable-hdpi/ic_send_cancel_online.png
new file mode 100644
index 0000000000000000000000000000000000000000..cb3bc3b561d2e4e8a86311dbe1bdef5f01962a79
Binary files /dev/null and b/src/main/res/drawable-hdpi/ic_send_cancel_online.png differ
diff --git a/src/main/res/drawable-mdpi/ic_send_cancel_away.png b/src/main/res/drawable-mdpi/ic_send_cancel_away.png
new file mode 100644
index 0000000000000000000000000000000000000000..bbc86b45a26b20a3873988bbb1d1b9d09785c880
Binary files /dev/null and b/src/main/res/drawable-mdpi/ic_send_cancel_away.png differ
diff --git a/src/main/res/drawable-mdpi/ic_send_cancel_dnd.png b/src/main/res/drawable-mdpi/ic_send_cancel_dnd.png
new file mode 100644
index 0000000000000000000000000000000000000000..e4fa38a3ed1c9a3a6cb076ed0a7920e42154f930
Binary files /dev/null and b/src/main/res/drawable-mdpi/ic_send_cancel_dnd.png differ
diff --git a/src/main/res/drawable-mdpi/ic_send_cancel_offline.png b/src/main/res/drawable-mdpi/ic_send_cancel_offline.png
new file mode 100644
index 0000000000000000000000000000000000000000..604dfefaf9b6675cf6afe89ba9346de2d79c2dff
Binary files /dev/null and b/src/main/res/drawable-mdpi/ic_send_cancel_offline.png differ
diff --git a/src/main/res/drawable-mdpi/ic_send_cancel_online.png b/src/main/res/drawable-mdpi/ic_send_cancel_online.png
new file mode 100644
index 0000000000000000000000000000000000000000..1b0d1811fd32474771bdc1bc9b8372073dd72cc4
Binary files /dev/null and b/src/main/res/drawable-mdpi/ic_send_cancel_online.png differ
diff --git a/src/main/res/drawable-xhdpi/ic_send_cancel_away.png b/src/main/res/drawable-xhdpi/ic_send_cancel_away.png
new file mode 100644
index 0000000000000000000000000000000000000000..44b5f0963e0f59e2ee40afaf38c9516e1b745d61
Binary files /dev/null and b/src/main/res/drawable-xhdpi/ic_send_cancel_away.png differ
diff --git a/src/main/res/drawable-xhdpi/ic_send_cancel_dnd.png b/src/main/res/drawable-xhdpi/ic_send_cancel_dnd.png
new file mode 100644
index 0000000000000000000000000000000000000000..276ad02424f33eb25a8aa6492e6ab7870cbcf38e
Binary files /dev/null and b/src/main/res/drawable-xhdpi/ic_send_cancel_dnd.png differ
diff --git a/src/main/res/drawable-xhdpi/ic_send_cancel_offline.png b/src/main/res/drawable-xhdpi/ic_send_cancel_offline.png
new file mode 100644
index 0000000000000000000000000000000000000000..53a9ac90962352d9af19fa98a8c86eae50080fbc
Binary files /dev/null and b/src/main/res/drawable-xhdpi/ic_send_cancel_offline.png differ
diff --git a/src/main/res/drawable-xhdpi/ic_send_cancel_online.png b/src/main/res/drawable-xhdpi/ic_send_cancel_online.png
new file mode 100644
index 0000000000000000000000000000000000000000..23a5f2632b0fe2a8b95547a64eb9e8f799c507fc
Binary files /dev/null and b/src/main/res/drawable-xhdpi/ic_send_cancel_online.png differ
diff --git a/src/main/res/drawable-xxhdpi/ic_send_cancel_away.png b/src/main/res/drawable-xxhdpi/ic_send_cancel_away.png
new file mode 100644
index 0000000000000000000000000000000000000000..07113f020de82cc16b5cf5e4440deab660b3106d
Binary files /dev/null and b/src/main/res/drawable-xxhdpi/ic_send_cancel_away.png differ
diff --git a/src/main/res/drawable-xxhdpi/ic_send_cancel_dnd.png b/src/main/res/drawable-xxhdpi/ic_send_cancel_dnd.png
new file mode 100644
index 0000000000000000000000000000000000000000..93fbc44d4d11fdffce01ca12e674b233c7f76c3e
Binary files /dev/null and b/src/main/res/drawable-xxhdpi/ic_send_cancel_dnd.png differ
diff --git a/src/main/res/drawable-xxhdpi/ic_send_cancel_offline.png b/src/main/res/drawable-xxhdpi/ic_send_cancel_offline.png
new file mode 100644
index 0000000000000000000000000000000000000000..10412faba21133da5b4064ca088d10345ae19f90
Binary files /dev/null and b/src/main/res/drawable-xxhdpi/ic_send_cancel_offline.png differ
diff --git a/src/main/res/drawable-xxhdpi/ic_send_cancel_online.png b/src/main/res/drawable-xxhdpi/ic_send_cancel_online.png
new file mode 100644
index 0000000000000000000000000000000000000000..6fa18239acaecfdca95fd159b24d46dd36ae2247
Binary files /dev/null and b/src/main/res/drawable-xxhdpi/ic_send_cancel_online.png differ
diff --git a/src/main/res/drawable-xxxhdpi/ic_send_cancel_away.png b/src/main/res/drawable-xxxhdpi/ic_send_cancel_away.png
new file mode 100644
index 0000000000000000000000000000000000000000..a9340a88674e296125a2e26f10bab203ad8fd484
Binary files /dev/null and b/src/main/res/drawable-xxxhdpi/ic_send_cancel_away.png differ
diff --git a/src/main/res/drawable-xxxhdpi/ic_send_cancel_dnd.png b/src/main/res/drawable-xxxhdpi/ic_send_cancel_dnd.png
new file mode 100644
index 0000000000000000000000000000000000000000..02ab1d0fbfc0707335625080bba510c83a889d80
Binary files /dev/null and b/src/main/res/drawable-xxxhdpi/ic_send_cancel_dnd.png differ
diff --git a/src/main/res/drawable-xxxhdpi/ic_send_cancel_offline.png b/src/main/res/drawable-xxxhdpi/ic_send_cancel_offline.png
new file mode 100644
index 0000000000000000000000000000000000000000..abd3af2c2149d3e88a11c30d430069d8c4ee99dc
Binary files /dev/null and b/src/main/res/drawable-xxxhdpi/ic_send_cancel_offline.png differ
diff --git a/src/main/res/drawable-xxxhdpi/ic_send_cancel_online.png b/src/main/res/drawable-xxxhdpi/ic_send_cancel_online.png
new file mode 100644
index 0000000000000000000000000000000000000000..80be8edfc926294a7f1692db5302d4c52cddc105
Binary files /dev/null and b/src/main/res/drawable-xxxhdpi/ic_send_cancel_online.png differ