diff --git a/art/ic_received_indicator.svg b/art/ic_received_indicator.svg
index d9378c60d..43689c267 100644
--- a/art/ic_received_indicator.svg
+++ b/art/ic_received_indicator.svg
@@ -13,7 +13,7 @@
width="95"
height="95"
id="Yes_check"
- inkscape:version="0.48.5 r10040"
+ inkscape:version="0.91 r13725"
sodipodi:docname="ic_received_indicator.svg">
@@ -23,7 +23,7 @@
image/svg+xml
-
+
@@ -36,17 +36,17 @@
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
- inkscape:window-width="1233"
- inkscape:window-height="828"
+ inkscape:window-width="956"
+ inkscape:window-height="1156"
id="namedview8"
showgrid="false"
showguides="true"
inkscape:guide-bbox="true"
inkscape:zoom="5.04"
- inkscape:cx="26.829268"
+ inkscape:cx="-4.3215257"
inkscape:cy="37.489149"
- inkscape:window-x="0"
- inkscape:window-y="0"
+ inkscape:window-x="2880"
+ inkscape:window-y="20"
inkscape:window-maximized="0"
inkscape:current-layer="Yes_check"
fit-margin-top="0"
@@ -69,7 +69,7 @@
diff --git a/art/ic_send_location_away.svg b/art/ic_send_location_away.svg
new file mode 100644
index 000000000..fcd50b521
--- /dev/null
+++ b/art/ic_send_location_away.svg
@@ -0,0 +1,54 @@
+
+
diff --git a/art/ic_send_location_dnd.svg b/art/ic_send_location_dnd.svg
new file mode 100644
index 000000000..d91fa9130
--- /dev/null
+++ b/art/ic_send_location_dnd.svg
@@ -0,0 +1,54 @@
+
+
diff --git a/art/ic_send_location_offline.svg b/art/ic_send_location_offline.svg
new file mode 100644
index 000000000..56529b723
--- /dev/null
+++ b/art/ic_send_location_offline.svg
@@ -0,0 +1,54 @@
+
+
diff --git a/art/ic_send_location_online.svg b/art/ic_send_location_online.svg
new file mode 100644
index 000000000..275a7a789
--- /dev/null
+++ b/art/ic_send_location_online.svg
@@ -0,0 +1,54 @@
+
+
diff --git a/art/ic_send_photo_away.svg b/art/ic_send_photo_away.svg
new file mode 100644
index 000000000..31a20e09f
--- /dev/null
+++ b/art/ic_send_photo_away.svg
@@ -0,0 +1,60 @@
+
+
diff --git a/art/ic_send_photo_dnd.svg b/art/ic_send_photo_dnd.svg
new file mode 100644
index 000000000..0e406edec
--- /dev/null
+++ b/art/ic_send_photo_dnd.svg
@@ -0,0 +1,60 @@
+
+
diff --git a/art/ic_send_photo_offline.svg b/art/ic_send_photo_offline.svg
new file mode 100644
index 000000000..b2ca20a6f
--- /dev/null
+++ b/art/ic_send_photo_offline.svg
@@ -0,0 +1,60 @@
+
+
diff --git a/art/ic_send_photo_online.svg b/art/ic_send_photo_online.svg
new file mode 100644
index 000000000..79f713475
--- /dev/null
+++ b/art/ic_send_photo_online.svg
@@ -0,0 +1,60 @@
+
+
diff --git a/art/ic_send_text_away.svg b/art/ic_send_text_away.svg
new file mode 100644
index 000000000..ea83086ae
--- /dev/null
+++ b/art/ic_send_text_away.svg
@@ -0,0 +1,69 @@
+
+
+
+
diff --git a/art/ic_send_text_dnd.svg b/art/ic_send_text_dnd.svg
new file mode 100644
index 000000000..b594f3195
--- /dev/null
+++ b/art/ic_send_text_dnd.svg
@@ -0,0 +1,69 @@
+
+
+
+
diff --git a/art/ic_send_text_offline.svg b/art/ic_send_text_offline.svg
new file mode 100644
index 000000000..c87bfaac6
--- /dev/null
+++ b/art/ic_send_text_offline.svg
@@ -0,0 +1,69 @@
+
+
+
+
diff --git a/art/ic_action_send_now.svg b/art/ic_send_text_online.svg
similarity index 80%
rename from art/ic_action_send_now.svg
rename to art/ic_send_text_online.svg
index 6bde9158f..39e3d1e8a 100644
--- a/art/ic_action_send_now.svg
+++ b/art/ic_send_text_online.svg
@@ -11,7 +11,7 @@
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg3621"
version="1.1"
- inkscape:version="0.48.4 r9939"
+ inkscape:version="0.91 r13725"
width="96"
height="96"
sodipodi:docname="ic_action_send_now.svg"
@@ -26,7 +26,7 @@
image/svg+xml
-
+
@@ -41,16 +41,16 @@
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
- inkscape:window-width="1916"
- inkscape:window-height="1161"
+ inkscape:window-width="1920"
+ inkscape:window-height="1200"
id="namedview3623"
showgrid="true"
showguides="true"
- inkscape:zoom="1"
- inkscape:cx="47.28873"
- inkscape:cy="43.262706"
- inkscape:window-x="0"
- inkscape:window-y="18"
+ inkscape:zoom="8"
+ inkscape:cx="69.783303"
+ inkscape:cy="56.761328"
+ inkscape:window-x="1920"
+ inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg3621">
+
diff --git a/art/ic_send_voice_dnd.svg b/art/ic_send_voice_dnd.svg
new file mode 100644
index 000000000..372a2ca80
--- /dev/null
+++ b/art/ic_send_voice_dnd.svg
@@ -0,0 +1,54 @@
+
+
diff --git a/art/ic_send_voice_offline.svg b/art/ic_send_voice_offline.svg
new file mode 100644
index 000000000..64ea44731
--- /dev/null
+++ b/art/ic_send_voice_offline.svg
@@ -0,0 +1,54 @@
+
+
diff --git a/art/ic_send_voice_online.svg b/art/ic_send_voice_online.svg
new file mode 100644
index 000000000..97284b021
--- /dev/null
+++ b/art/ic_send_voice_online.svg
@@ -0,0 +1,54 @@
+
+
diff --git a/art/render.rb b/art/render.rb
index 2ab3e94fc..32d06f8f7 100755
--- a/art/render.rb
+++ b/art/render.rb
@@ -10,6 +10,22 @@ images = {
'conversations_baloon.svg' => ['ic_launcher', 48],
'conversations_mono.svg' => ['ic_notification', 24],
'ic_received_indicator.svg' => ['ic_received_indicator', 12],
+ 'ic_send_text_offline.svg' => ['ic_send_text_offline', 36],
+ 'ic_send_text_online.svg' => ['ic_send_text_online', 36],
+ 'ic_send_text_away.svg' => ['ic_send_text_away', 36],
+ 'ic_send_text_dnd.svg' => ['ic_send_text_dnd', 36],
+ 'ic_send_photo_online.svg' => ['ic_send_photo_online', 36],
+ 'ic_send_photo_offline.svg' => ['ic_send_photo_offline', 36],
+ 'ic_send_photo_away.svg' => ['ic_send_photo_away', 36],
+ 'ic_send_photo_dnd.svg' => ['ic_send_photo_dnd', 36],
+ 'ic_send_location_online.svg' => ['ic_send_location_online', 36],
+ 'ic_send_location_offline.svg' => ['ic_send_location_offline', 36],
+ 'ic_send_location_away.svg' => ['ic_send_location_away', 36],
+ 'ic_send_location_dnd.svg' => ['ic_send_location_dnd', 36],
+ 'ic_send_voice_online.svg' => ['ic_send_voice_online', 36],
+ '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],
}
images.each do |source, result|
resolutions.each do |name, factor|
diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java
index aec755fce..a76efbc35 100644
--- a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java
+++ b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java
@@ -60,11 +60,11 @@ public class ConversationActivity extends XmppActivity
public static final int REQUEST_SEND_MESSAGE = 0x0201;
public static final int REQUEST_DECRYPT_PGP = 0x0202;
public static final int REQUEST_ENCRYPT_MESSAGE = 0x0207;
- private static final int ATTACHMENT_CHOICE_CHOOSE_IMAGE = 0x0301;
- private static final int ATTACHMENT_CHOICE_TAKE_PHOTO = 0x0302;
- private static final int ATTACHMENT_CHOICE_CHOOSE_FILE = 0x0303;
- private static final int ATTACHMENT_CHOICE_RECORD_VOICE = 0x0304;
- private static final int ATTACHMENT_CHOICE_LOCATION = 0x0305;
+ public static final int ATTACHMENT_CHOICE_CHOOSE_IMAGE = 0x0301;
+ public static final int ATTACHMENT_CHOICE_TAKE_PHOTO = 0x0302;
+ public static final int ATTACHMENT_CHOICE_CHOOSE_FILE = 0x0303;
+ public static final int ATTACHMENT_CHOICE_RECORD_VOICE = 0x0304;
+ public static final int ATTACHMENT_CHOICE_LOCATION = 0x0305;
private static final String STATE_OPEN_CONVERSATION = "state_open_conversation";
private static final String STATE_PANEL_OPEN = "state_panel_open";
private static final String STATE_PENDING_URI = "state_pending_uri";
@@ -452,7 +452,18 @@ public class ConversationActivity extends XmppActivity
}
}
- private void attachFile(final int attachmentChoice) {
+ public void attachFile(final int attachmentChoice) {
+ switch (attachmentChoice) {
+ case ATTACHMENT_CHOICE_LOCATION:
+ getPreferences().edit().putString("recently_used_quick_action","location").apply();
+ break;
+ case ATTACHMENT_CHOICE_RECORD_VOICE:
+ getPreferences().edit().putString("recently_used_quick_action","voice").apply();
+ break;
+ case ATTACHMENT_CHOICE_TAKE_PHOTO:
+ getPreferences().edit().putString("recently_used_quick_action","photo").apply();
+ break;
+ }
final Conversation conversation = getSelectedConversation();
final int encryption = conversation.getNextEncryption(forceEncryption());
if (encryption == Message.ENCRYPTION_PGP) {
diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java
index 5b1e9b4d6..37ae00a30 100644
--- a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java
+++ b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java
@@ -119,7 +119,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
- int visibleItemCount, int totalItemCount) {
+ int visibleItemCount, int totalItemCount) {
synchronized (ConversationFragment.this.messageList) {
if (firstVisibleItem < 5 && messagesLoaded && messageList.size() > 0) {
long timestamp = ConversationFragment.this.messageList.get(0).getTimeSent();
@@ -145,7 +145,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
try {
Message tmpMessage = messageList.get(newPosition);
- while(tmpMessage.wasMergedIntoPrevious()) {
+ while (tmpMessage.wasMergedIntoPrevious()) {
offset++;
tmpMessage = tmpMessage.prev();
}
@@ -174,7 +174,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
if (ConversationFragment.this.conversation != conversation) {
return;
}
- messageLoaderToast = Toast.makeText(activity,resId,Toast.LENGTH_LONG);
+ messageLoaderToast = Toast.makeText(activity, resId, Toast.LENGTH_LONG);
messageLoaderToast.show();
}
});
@@ -208,7 +208,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
@Override
public void onClick(View v) {
- activity.verifyOtrSessionDialog(conversation,v);
+ activity.verifyOtrSessionDialog(conversation, v);
}
};
private ConcurrentLinkedQueue mEncryptedMessages = new ConcurrentLinkedQueue<>();
@@ -219,7 +219,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEND) {
InputMethodManager imm = (InputMethodManager) v.getContext()
- .getSystemService(Context.INPUT_METHOD_SERVICE);
+ .getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
sendMessage();
return true;
@@ -232,7 +232,25 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
@Override
public void onClick(View v) {
- sendMessage();
+ Object tag = v.getTag();
+ if (tag instanceof SendButtonAction) {
+ SendButtonAction action = (SendButtonAction) tag;
+ switch (action) {
+ case TAKE_PHOTO:
+ activity.attachFile(ConversationActivity.ATTACHMENT_CHOICE_TAKE_PHOTO);
+ break;
+ case SEND_LOCATION:
+ activity.attachFile(ConversationActivity.ATTACHMENT_CHOICE_LOCATION);
+ break;
+ case RECORD_VOICE:
+ activity.attachFile(ConversationActivity.ATTACHMENT_CHOICE_RECORD_VOICE);
+ break;
+ default:
+ sendMessage();
+ }
+ } else {
+ sendMessage();
+ }
}
};
private OnClickListener clickToMuc = new OnClickListener() {
@@ -262,7 +280,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
}
Message message = new Message(conversation, mEditMessage.getText()
.toString(), conversation.getNextEncryption(activity
- .forceEncryption()));
+ .forceEncryption()));
if (conversation.getMode() == Conversation.MODE_MULTI) {
if (conversation.getNextCounterpart() != null) {
message.setCounterpart(conversation.getNextCounterpart());
@@ -282,13 +300,13 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
if (conversation.getMode() == Conversation.MODE_MULTI
&& conversation.getNextCounterpart() != null) {
this.mEditMessage.setHint(getString(
- R.string.send_private_message_to,
- conversation.getNextCounterpart().getResourcepart()));
+ R.string.send_private_message_to,
+ conversation.getNextCounterpart().getResourcepart()));
} else {
switch (conversation.getNextEncryption(activity.forceEncryption())) {
case Message.ENCRYPTION_NONE:
mEditMessage
- .setHint(getString(R.string.send_plain_text_message));
+ .setHint(getString(R.string.send_plain_text_message));
break;
case Message.ENCRYPTION_OTR:
mEditMessage.setHint(getString(R.string.send_otr_message));
@@ -304,7 +322,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
}
private void setupIme() {
- if (((ConversationActivity)getActivity()).usingEnterKey()) {
+ if (((ConversationActivity) getActivity()).usingEnterKey()) {
mEditMessage.setInputType(mEditMessage.getInputType() & (~InputType.TYPE_TEXT_VARIATION_SHORT_MESSAGE));
} else {
mEditMessage.setInputType(mEditMessage.getInputType() | InputType.TYPE_TEXT_VARIATION_SHORT_MESSAGE);
@@ -313,8 +331,8 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
@Override
public View onCreateView(final LayoutInflater inflater,
- ViewGroup container, Bundle savedInstanceState) {
- final View view = inflater.inflate(R.layout.fragment_conversation,container, false);
+ ViewGroup container, Bundle savedInstanceState) {
+ final View view = inflater.inflate(R.layout.fragment_conversation, container, false);
view.setOnClickListener(null);
mEditMessage = (EditMessage) view.findViewById(R.id.textinput);
setupIme();
@@ -365,21 +383,21 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
}
});
messageListAdapter
- .setOnContactPictureLongClicked(new OnContactPictureLongClicked() {
+ .setOnContactPictureLongClicked(new OnContactPictureLongClicked() {
- @Override
- public void onContactPictureLongClicked(Message message) {
- if (message.getStatus() <= Message.STATUS_RECEIVED) {
- if (message.getConversation().getMode() == Conversation.MODE_MULTI) {
- if (message.getCounterpart() != null) {
- privateMessageWith(message.getCounterpart());
+ @Override
+ public void onContactPictureLongClicked(Message message) {
+ if (message.getStatus() <= Message.STATUS_RECEIVED) {
+ if (message.getConversation().getMode() == Conversation.MODE_MULTI) {
+ if (message.getCounterpart() != null) {
+ privateMessageWith(message.getCounterpart());
+ }
}
+ } else {
+ activity.showQrCode();
}
- } else {
- activity.showQrCode();
}
- }
- });
+ });
messagesView.setAdapter(messageListAdapter);
registerForContextMenu(messagesView);
@@ -389,7 +407,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
- ContextMenuInfo menuInfo) {
+ ContextMenuInfo menuInfo) {
synchronized (this.messageList) {
super.onCreateContextMenu(menu, v, menuInfo);
AdapterView.AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) menuInfo;
@@ -416,7 +434,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
if ((m.getType() == Message.TYPE_TEXT
|| m.getType() == Message.TYPE_PRIVATE
|| m.getDownloadable() != null)
- && (!GeoHelper.isGeoUri(m.getBody()))) {
+ && (!GeoHelper.isGeoUri(m.getBody()))) {
shareWith.setVisible(false);
}
if (m.getStatus() != Message.STATUS_SEND_FAILED) {
@@ -425,17 +443,17 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
if (((m.getType() != Message.TYPE_IMAGE && m.getDownloadable() == null)
|| m.getImageParams().url == null) && !GeoHelper.isGeoUri(m.getBody())) {
copyUrl.setVisible(false);
- }
+ }
if (m.getType() != Message.TYPE_TEXT
|| m.getDownloadable() != null
|| !m.bodyContainsDownloadable()) {
downloadImage.setVisible(false);
- }
+ }
if (!((m.getDownloadable() != null && !(m.getDownloadable() instanceof DownloadablePlaceholder))
- || (m.isFileOrImage() && (m.getStatus() == Message.STATUS_WAITING
- || m.getStatus() == Message.STATUS_OFFERED)))) {
+ || (m.isFileOrImage() && (m.getStatus() == Message.STATUS_WAITING
+ || m.getStatus() == Message.STATUS_OFFERED)))) {
cancelTransmission.setVisible(false);
- }
+ }
}
}
@@ -483,12 +501,12 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
}
shareIntent.setType(mime);
}
- activity.startActivity(Intent.createChooser(shareIntent,getText(R.string.share_with)));
+ activity.startActivity(Intent.createChooser(shareIntent, getText(R.string.share_with)));
}
private void copyText(Message message) {
if (activity.copyTextToClipboard(message.getMergedBody(),
- R.string.message_text)) {
+ R.string.message_text)) {
Toast.makeText(activity, R.string.message_copied_to_clipboard,
Toast.LENGTH_SHORT).show();
}
@@ -498,7 +516,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
if (message.getType() == Message.TYPE_FILE || message.getType() == Message.TYPE_IMAGE) {
DownloadableFile file = activity.xmppConnectionService.getFileBackend().getFile(message);
if (!file.exists()) {
- Toast.makeText(activity,R.string.file_deleted,Toast.LENGTH_SHORT).show();
+ Toast.makeText(activity, R.string.file_deleted, Toast.LENGTH_SHORT).show();
message.setDownloadable(new DownloadablePlaceholder(Downloadable.STATUS_DELETED));
return;
}
@@ -519,20 +537,20 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
if (activity.copyTextToClipboard(url, resId)) {
Toast.makeText(activity, R.string.url_copied_to_clipboard,
Toast.LENGTH_SHORT).show();
- }
+ }
}
private void downloadImage(Message message) {
activity.xmppConnectionService.getHttpConnectionManager()
- .createNewConnection(message);
+ .createNewConnection(message);
}
private void cancelTransmission(Message message) {
Downloadable downloadable = message.getDownloadable();
- if (downloadable!=null) {
+ if (downloadable != null) {
downloadable.cancel();
} else {
- activity.xmppConnectionService.markMessage(message,Message.STATUS_SEND_FAILED);
+ activity.xmppConnectionService.markMessage(message, Message.STATUS_SEND_FAILED);
}
}
@@ -548,9 +566,9 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
mEditMessage.getText().insert(0, nick + ": ");
} else {
if (mEditMessage.getText().charAt(
- mEditMessage.getSelectionStart() - 1) != ' ') {
+ mEditMessage.getSelectionStart() - 1) != ' ') {
nick = " " + nick;
- }
+ }
mEditMessage.getText().insert(mEditMessage.getSelectionStart(),
nick + " ");
}
@@ -563,7 +581,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
if (this.conversation != null) {
final String msg = mEditMessage.getText().toString();
this.conversation.setNextMessage(msg);
- updateChatState(this.conversation,msg);
+ updateChatState(this.conversation, msg);
}
}
@@ -586,7 +604,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
final String msg = mEditMessage.getText().toString();
this.conversation.setNextMessage(msg);
if (this.conversation != conversation) {
- updateChatState(this.conversation,msg);
+ updateChatState(this.conversation, msg);
}
this.conversation.trim();
}
@@ -632,7 +650,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
@Override
public void onClick(View v) {
- final Contact contact = conversation == null ? null :conversation.getContact();
+ final Contact contact = conversation == null ? null : conversation.getContact();
if (contact != null) {
activity.xmppConnectionService.createContact(contact);
activity.switchToContactDetails(contact);
@@ -655,7 +673,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
intent.setAction(VerifyOTRActivity.ACTION_VERIFY_CONTACT);
intent.putExtra("contact", conversation.getContact().getJid().toBareJid().toString());
intent.putExtra("account", conversation.getAccount().getJid().toBareJid().toString());
- intent.putExtra("mode",VerifyOTRActivity.MODE_ANSWER_QUESTION);
+ intent.putExtra("mode", VerifyOTRActivity.MODE_ANSWER_QUESTION);
startActivity(intent);
}
};
@@ -665,11 +683,11 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
final Contact contact = conversation.getContact();
final int mode = conversation.getMode();
if (conversation.isBlocked()) {
- showSnackbar(R.string.contact_blocked, R.string.unblock,this.mUnblockClickListener);
+ showSnackbar(R.string.contact_blocked, R.string.unblock, this.mUnblockClickListener);
} else if (!contact.showInRoster() && contact.getOption(Contact.Options.PENDING_SUBSCRIPTION_REQUEST)) {
- showSnackbar(R.string.contact_added_you, R.string.add_back,this.mAddBackClickListener);
+ showSnackbar(R.string.contact_added_you, R.string.add_back, this.mAddBackClickListener);
} else if (mode == Conversation.MODE_MULTI
- &&!conversation.getMucOptions().online()
+ && !conversation.getMucOptions().online()
&& account.getStatus() == Account.State.ONLINE) {
switch (conversation.getMucOptions().getError()) {
case MucOptions.ERROR_NICK_IN_USE:
@@ -693,18 +711,18 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
default:
break;
}
- } else if (askForPassphraseIntent != null ) {
- showSnackbar(R.string.openpgp_messages_found,R.string.decrypt, clickToDecryptListener);
+ } else if (askForPassphraseIntent != null) {
+ showSnackbar(R.string.openpgp_messages_found, R.string.decrypt, clickToDecryptListener);
} else if (mode == Conversation.MODE_SINGLE
&& conversation.smpRequested()) {
- showSnackbar(R.string.smp_requested, R.string.verify,this.mAnswerSmpClickListener);
+ showSnackbar(R.string.smp_requested, R.string.verify, this.mAnswerSmpClickListener);
} else if (mode == Conversation.MODE_SINGLE
- &&conversation.hasValidOtrSession()
+ && conversation.hasValidOtrSession()
&& (conversation.getOtrSession().getSessionStatus() == SessionStatus.ENCRYPTED)
&& (!conversation.isOtrFingerprintVerified())) {
showSnackbar(R.string.unknown_otr_fingerprint, R.string.verify, clickToVerify);
} else if (conversation.isMuted()) {
- showSnackbar(R.string.notifications_disabled, R.string.enable,this.mUnmuteClickListener);
+ showSnackbar(R.string.notifications_disabled, R.string.enable, this.mUnmuteClickListener);
} else {
hideSnackbar();
}
@@ -722,12 +740,12 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
for (final Message message : this.messageList) {
if (message.getEncryption() == Message.ENCRYPTION_PGP
&& (message.getStatus() == Message.STATUS_RECEIVED || message
- .getStatus() >= Message.STATUS_SEND)
+ .getStatus() >= Message.STATUS_SEND)
&& message.getDownloadable() == null) {
if (!mEncryptedMessages.contains(message)) {
mEncryptedMessages.add(message);
}
- }
+ }
}
decryptNext();
updateStatusMessages();
@@ -790,53 +808,108 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
updateChatMsgHint();
}
+ enum SendButtonAction {TEXT, TAKE_PHOTO, SEND_LOCATION, RECORD_VOICE}
+
+ private int getSendButtonImageResource(SendButtonAction action, int status) {
+ switch (action) {
+ case TEXT:
+ switch (status) {
+ case Presences.CHAT:
+ case Presences.ONLINE:
+ return R.drawable.ic_send_text_online;
+ case Presences.AWAY:
+ return R.drawable.ic_send_text_away;
+ case Presences.XA:
+ case Presences.DND:
+ return R.drawable.ic_send_text_dnd;
+ default:
+ return R.drawable.ic_send_text_offline;
+ }
+ case TAKE_PHOTO:
+ switch (status) {
+ case Presences.CHAT:
+ case Presences.ONLINE:
+ return R.drawable.ic_send_photo_online;
+ case Presences.AWAY:
+ return R.drawable.ic_send_photo_away;
+ case Presences.XA:
+ case Presences.DND:
+ return R.drawable.ic_send_photo_dnd;
+ default:
+ return R.drawable.ic_send_photo_offline;
+ }
+ case RECORD_VOICE:
+ switch (status) {
+ case Presences.CHAT:
+ case Presences.ONLINE:
+ return R.drawable.ic_send_voice_online;
+ case Presences.AWAY:
+ return R.drawable.ic_send_voice_away;
+ case Presences.XA:
+ case Presences.DND:
+ return R.drawable.ic_send_voice_dnd;
+ default:
+ return R.drawable.ic_send_voice_offline;
+ }
+ case SEND_LOCATION:
+ switch (status) {
+ case Presences.CHAT:
+ case Presences.ONLINE:
+ return R.drawable.ic_send_location_online;
+ case Presences.AWAY:
+ return R.drawable.ic_send_location_away;
+ case Presences.XA:
+ case Presences.DND:
+ return R.drawable.ic_send_location_dnd;
+ default:
+ return R.drawable.ic_send_location_offline;
+ }
+ }
+ return R.drawable.ic_send_text_offline;
+ }
+
public void updateSendButton() {
- Conversation c = this.conversation;
+ final Conversation c = this.conversation;
+ final SendButtonAction action;
+ final int status;
+ if (c.getMode() == Conversation.MODE_MULTI) {
+ action = SendButtonAction.TEXT;
+ } else {
+ if (this.mEditMessage == null || this.mEditMessage.getText().length() == 0) {
+ String setting = activity.getPreferences().getString("quick_action","recent");
+ if (setting.equals("recent")) {
+ setting = activity.getPreferences().getString("recently_used_quick_action","text");
+ }
+ switch (setting) {
+ case "photo":
+ action = SendButtonAction.TAKE_PHOTO;
+ break;
+ case "location":
+ action = SendButtonAction.SEND_LOCATION;
+ break;
+ case "voice":
+ action = SendButtonAction.RECORD_VOICE;
+ break;
+ default:
+ action = SendButtonAction.TEXT;
+ break;
+ }
+ } else {
+ action = SendButtonAction.TEXT;
+ }
+ }
if (activity.useSendButtonToIndicateStatus() && c != null
&& c.getAccount().getStatus() == Account.State.ONLINE) {
if (c.getMode() == Conversation.MODE_SINGLE) {
- switch (c.getContact().getMostAvailableStatus()) {
- case Presences.CHAT:
- this.mSendButton
- .setImageResource(R.drawable.ic_action_send_now_online);
- break;
- case Presences.ONLINE:
- this.mSendButton
- .setImageResource(R.drawable.ic_action_send_now_online);
- break;
- case Presences.AWAY:
- this.mSendButton
- .setImageResource(R.drawable.ic_action_send_now_away);
- break;
- case Presences.XA:
- this.mSendButton
- .setImageResource(R.drawable.ic_action_send_now_away);
- break;
- case Presences.DND:
- this.mSendButton
- .setImageResource(R.drawable.ic_action_send_now_dnd);
- break;
- default:
- this.mSendButton
- .setImageResource(R.drawable.ic_action_send_now_offline);
- break;
- }
- } else if (c.getMode() == Conversation.MODE_MULTI) {
- if (c.getMucOptions().online()) {
- this.mSendButton
- .setImageResource(R.drawable.ic_action_send_now_online);
- } else {
- this.mSendButton
- .setImageResource(R.drawable.ic_action_send_now_offline);
- }
+ status = c.getContact().getMostAvailableStatus();
} else {
- this.mSendButton
- .setImageResource(R.drawable.ic_action_send_now_offline);
+ status = c.getMucOptions().online() ? Presences.ONLINE : Presences.OFFLINE;
}
} else {
- this.mSendButton
- .setImageResource(R.drawable.ic_action_send_now_offline);
+ status = Presences.OFFLINE;
}
+ this.mSendButton.setTag(action);
+ this.mSendButton.setImageResource(getSendButtonImageResource(action, status));
}
protected void updateStatusMessages() {
@@ -865,7 +938,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
}
protected void showSnackbar(final int message, final int action,
- final OnClickListener clickListener) {
+ final OnClickListener clickListener) {
snackbar.setVisibility(View.VISIBLE);
snackbar.setOnClickListener(null);
snackbarMessage.setText(message);
@@ -897,7 +970,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
@Override
public void userInputRequried(PendingIntent pi,
- Contact contact) {
+ Contact contact) {
activity.runIntent(
pi,
ConversationActivity.REQUEST_ENCRYPT_MESSAGE);
@@ -921,11 +994,11 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
@Override
public void onClick(DialogInterface dialog,
- int which) {
+ int which) {
conversation
- .setNextEncryption(Message.ENCRYPTION_NONE);
+ .setNextEncryption(Message.ENCRYPTION_NONE);
xmppService.databaseBackend
- .updateConversation(conversation);
+ .updateConversation(conversation);
message.setEncryption(Message.ENCRYPTION_NONE);
xmppService.sendMessage(message);
messageSent();
@@ -936,9 +1009,9 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
if (conversation.getMucOptions().pgpKeysInUse()) {
if (!conversation.getMucOptions().everybodyHasKeys()) {
Toast warning = Toast
- .makeText(getActivity(),
- R.string.missing_public_keys,
- Toast.LENGTH_LONG);
+ .makeText(getActivity(),
+ R.string.missing_public_keys,
+ Toast.LENGTH_LONG);
warning.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
warning.show();
}
@@ -950,12 +1023,12 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
@Override
public void onClick(DialogInterface dialog,
- int which) {
+ int which) {
conversation
- .setNextEncryption(Message.ENCRYPTION_NONE);
+ .setNextEncryption(Message.ENCRYPTION_NONE);
message.setEncryption(Message.ENCRYPTION_NONE);
xmppService.databaseBackend
- .updateConversation(conversation);
+ .updateConversation(conversation);
xmppService.sendMessage(message);
messageSent();
}
@@ -968,7 +1041,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
}
public void showNoPGPKeyDialog(boolean plural,
- DialogInterface.OnClickListener listener) {
+ DialogInterface.OnClickListener listener) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setIconAttribute(android.R.attr.alertDialogIcon);
if (plural) {
@@ -1026,6 +1099,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
if (status == Account.State.ONLINE && conversation.setOutgoingChatState(ChatState.COMPOSING)) {
activity.xmppConnectionService.sendChatState(conversation);
}
+ updateSendButton();
}
@Override
@@ -1042,6 +1116,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
if (status == Account.State.ONLINE && conversation.setOutgoingChatState(Config.DEFAULT_CHATSTATE)) {
activity.xmppConnectionService.sendChatState(conversation);
}
+ updateSendButton();
}
}
diff --git a/src/main/res/drawable-hdpi/ic_action_send_now_away.png b/src/main/res/drawable-hdpi/ic_action_send_now_away.png
deleted file mode 100644
index 505cbe63a..000000000
Binary files a/src/main/res/drawable-hdpi/ic_action_send_now_away.png and /dev/null differ
diff --git a/src/main/res/drawable-hdpi/ic_action_send_now_dnd.png b/src/main/res/drawable-hdpi/ic_action_send_now_dnd.png
deleted file mode 100644
index a376524d7..000000000
Binary files a/src/main/res/drawable-hdpi/ic_action_send_now_dnd.png and /dev/null differ
diff --git a/src/main/res/drawable-hdpi/ic_action_send_now_offline.png b/src/main/res/drawable-hdpi/ic_action_send_now_offline.png
deleted file mode 100644
index d4d2d5103..000000000
Binary files a/src/main/res/drawable-hdpi/ic_action_send_now_offline.png and /dev/null differ
diff --git a/src/main/res/drawable-hdpi/ic_action_send_now_online.png b/src/main/res/drawable-hdpi/ic_action_send_now_online.png
deleted file mode 100644
index 48676f7bd..000000000
Binary files a/src/main/res/drawable-hdpi/ic_action_send_now_online.png and /dev/null differ
diff --git a/src/main/res/drawable-hdpi/ic_launcher.png b/src/main/res/drawable-hdpi/ic_launcher.png
index bffc1c652..25fc8591f 100644
Binary files a/src/main/res/drawable-hdpi/ic_launcher.png and b/src/main/res/drawable-hdpi/ic_launcher.png differ
diff --git a/src/main/res/drawable-hdpi/ic_notification.png b/src/main/res/drawable-hdpi/ic_notification.png
index c466a7b1c..31c0ee1ae 100644
Binary files a/src/main/res/drawable-hdpi/ic_notification.png and b/src/main/res/drawable-hdpi/ic_notification.png differ
diff --git a/src/main/res/drawable-hdpi/ic_received_indicator.png b/src/main/res/drawable-hdpi/ic_received_indicator.png
index b1e3f2748..4d2eab562 100644
Binary files a/src/main/res/drawable-hdpi/ic_received_indicator.png and b/src/main/res/drawable-hdpi/ic_received_indicator.png differ
diff --git a/src/main/res/drawable-hdpi/ic_send_location_away.png b/src/main/res/drawable-hdpi/ic_send_location_away.png
new file mode 100644
index 000000000..d139818b4
Binary files /dev/null and b/src/main/res/drawable-hdpi/ic_send_location_away.png differ
diff --git a/src/main/res/drawable-hdpi/ic_send_location_dnd.png b/src/main/res/drawable-hdpi/ic_send_location_dnd.png
new file mode 100644
index 000000000..3bcbe18af
Binary files /dev/null and b/src/main/res/drawable-hdpi/ic_send_location_dnd.png differ
diff --git a/src/main/res/drawable-hdpi/ic_send_location_offline.png b/src/main/res/drawable-hdpi/ic_send_location_offline.png
new file mode 100644
index 000000000..4aec18af7
Binary files /dev/null and b/src/main/res/drawable-hdpi/ic_send_location_offline.png differ
diff --git a/src/main/res/drawable-hdpi/ic_send_location_online.png b/src/main/res/drawable-hdpi/ic_send_location_online.png
new file mode 100644
index 000000000..19ddc51e3
Binary files /dev/null and b/src/main/res/drawable-hdpi/ic_send_location_online.png differ
diff --git a/src/main/res/drawable-hdpi/ic_send_photo_away.png b/src/main/res/drawable-hdpi/ic_send_photo_away.png
new file mode 100644
index 000000000..f6beb23cb
Binary files /dev/null and b/src/main/res/drawable-hdpi/ic_send_photo_away.png differ
diff --git a/src/main/res/drawable-hdpi/ic_send_photo_dnd.png b/src/main/res/drawable-hdpi/ic_send_photo_dnd.png
new file mode 100644
index 000000000..2eb856797
Binary files /dev/null and b/src/main/res/drawable-hdpi/ic_send_photo_dnd.png differ
diff --git a/src/main/res/drawable-hdpi/ic_send_photo_offline.png b/src/main/res/drawable-hdpi/ic_send_photo_offline.png
new file mode 100644
index 000000000..046f989b8
Binary files /dev/null and b/src/main/res/drawable-hdpi/ic_send_photo_offline.png differ
diff --git a/src/main/res/drawable-hdpi/ic_send_photo_online.png b/src/main/res/drawable-hdpi/ic_send_photo_online.png
new file mode 100644
index 000000000..3fd20d10b
Binary files /dev/null and b/src/main/res/drawable-hdpi/ic_send_photo_online.png differ
diff --git a/src/main/res/drawable-hdpi/ic_send_text_away.png b/src/main/res/drawable-hdpi/ic_send_text_away.png
new file mode 100644
index 000000000..d9ef99c56
Binary files /dev/null and b/src/main/res/drawable-hdpi/ic_send_text_away.png differ
diff --git a/src/main/res/drawable-hdpi/ic_send_text_dnd.png b/src/main/res/drawable-hdpi/ic_send_text_dnd.png
new file mode 100644
index 000000000..706b65054
Binary files /dev/null and b/src/main/res/drawable-hdpi/ic_send_text_dnd.png differ
diff --git a/src/main/res/drawable-hdpi/ic_send_text_offline.png b/src/main/res/drawable-hdpi/ic_send_text_offline.png
new file mode 100644
index 000000000..0f23fdbb0
Binary files /dev/null and b/src/main/res/drawable-hdpi/ic_send_text_offline.png differ
diff --git a/src/main/res/drawable-hdpi/ic_send_text_online.png b/src/main/res/drawable-hdpi/ic_send_text_online.png
new file mode 100644
index 000000000..305f1ec2f
Binary files /dev/null and b/src/main/res/drawable-hdpi/ic_send_text_online.png differ
diff --git a/src/main/res/drawable-hdpi/ic_send_voice_away.png b/src/main/res/drawable-hdpi/ic_send_voice_away.png
new file mode 100644
index 000000000..e87d97510
Binary files /dev/null and b/src/main/res/drawable-hdpi/ic_send_voice_away.png differ
diff --git a/src/main/res/drawable-hdpi/ic_send_voice_dnd.png b/src/main/res/drawable-hdpi/ic_send_voice_dnd.png
new file mode 100644
index 000000000..50184ee8b
Binary files /dev/null and b/src/main/res/drawable-hdpi/ic_send_voice_dnd.png differ
diff --git a/src/main/res/drawable-hdpi/ic_send_voice_offline.png b/src/main/res/drawable-hdpi/ic_send_voice_offline.png
new file mode 100644
index 000000000..68ce48b8a
Binary files /dev/null and b/src/main/res/drawable-hdpi/ic_send_voice_offline.png differ
diff --git a/src/main/res/drawable-hdpi/ic_send_voice_online.png b/src/main/res/drawable-hdpi/ic_send_voice_online.png
new file mode 100644
index 000000000..bfd7dfa7b
Binary files /dev/null and b/src/main/res/drawable-hdpi/ic_send_voice_online.png differ
diff --git a/src/main/res/drawable-mdpi/ic_action_send_now_away.png b/src/main/res/drawable-mdpi/ic_action_send_now_away.png
deleted file mode 100644
index 0fdca901a..000000000
Binary files a/src/main/res/drawable-mdpi/ic_action_send_now_away.png and /dev/null differ
diff --git a/src/main/res/drawable-mdpi/ic_action_send_now_dnd.png b/src/main/res/drawable-mdpi/ic_action_send_now_dnd.png
deleted file mode 100644
index c0aef36cc..000000000
Binary files a/src/main/res/drawable-mdpi/ic_action_send_now_dnd.png and /dev/null differ
diff --git a/src/main/res/drawable-mdpi/ic_action_send_now_offline.png b/src/main/res/drawable-mdpi/ic_action_send_now_offline.png
deleted file mode 100644
index 7723f4aa9..000000000
Binary files a/src/main/res/drawable-mdpi/ic_action_send_now_offline.png and /dev/null differ
diff --git a/src/main/res/drawable-mdpi/ic_action_send_now_online.png b/src/main/res/drawable-mdpi/ic_action_send_now_online.png
deleted file mode 100644
index 39d00ee48..000000000
Binary files a/src/main/res/drawable-mdpi/ic_action_send_now_online.png and /dev/null differ
diff --git a/src/main/res/drawable-mdpi/ic_launcher.png b/src/main/res/drawable-mdpi/ic_launcher.png
index 063ee15d0..733e96158 100644
Binary files a/src/main/res/drawable-mdpi/ic_launcher.png and b/src/main/res/drawable-mdpi/ic_launcher.png differ
diff --git a/src/main/res/drawable-mdpi/ic_notification.png b/src/main/res/drawable-mdpi/ic_notification.png
index fa35b7c10..aafc54f54 100644
Binary files a/src/main/res/drawable-mdpi/ic_notification.png and b/src/main/res/drawable-mdpi/ic_notification.png differ
diff --git a/src/main/res/drawable-mdpi/ic_received_indicator.png b/src/main/res/drawable-mdpi/ic_received_indicator.png
index 88ff1efb9..2ba92b698 100644
Binary files a/src/main/res/drawable-mdpi/ic_received_indicator.png and b/src/main/res/drawable-mdpi/ic_received_indicator.png differ
diff --git a/src/main/res/drawable-mdpi/ic_send_location_away.png b/src/main/res/drawable-mdpi/ic_send_location_away.png
new file mode 100644
index 000000000..821e80d25
Binary files /dev/null and b/src/main/res/drawable-mdpi/ic_send_location_away.png differ
diff --git a/src/main/res/drawable-mdpi/ic_send_location_dnd.png b/src/main/res/drawable-mdpi/ic_send_location_dnd.png
new file mode 100644
index 000000000..92e68ee34
Binary files /dev/null and b/src/main/res/drawable-mdpi/ic_send_location_dnd.png differ
diff --git a/src/main/res/drawable-mdpi/ic_send_location_offline.png b/src/main/res/drawable-mdpi/ic_send_location_offline.png
new file mode 100644
index 000000000..ff11a080f
Binary files /dev/null and b/src/main/res/drawable-mdpi/ic_send_location_offline.png differ
diff --git a/src/main/res/drawable-mdpi/ic_send_location_online.png b/src/main/res/drawable-mdpi/ic_send_location_online.png
new file mode 100644
index 000000000..a0eb40189
Binary files /dev/null and b/src/main/res/drawable-mdpi/ic_send_location_online.png differ
diff --git a/src/main/res/drawable-mdpi/ic_send_photo_away.png b/src/main/res/drawable-mdpi/ic_send_photo_away.png
new file mode 100644
index 000000000..d9c1f2661
Binary files /dev/null and b/src/main/res/drawable-mdpi/ic_send_photo_away.png differ
diff --git a/src/main/res/drawable-mdpi/ic_send_photo_dnd.png b/src/main/res/drawable-mdpi/ic_send_photo_dnd.png
new file mode 100644
index 000000000..7b6700d6f
Binary files /dev/null and b/src/main/res/drawable-mdpi/ic_send_photo_dnd.png differ
diff --git a/src/main/res/drawable-mdpi/ic_send_photo_offline.png b/src/main/res/drawable-mdpi/ic_send_photo_offline.png
new file mode 100644
index 000000000..f3e6e1fa4
Binary files /dev/null and b/src/main/res/drawable-mdpi/ic_send_photo_offline.png differ
diff --git a/src/main/res/drawable-mdpi/ic_send_photo_online.png b/src/main/res/drawable-mdpi/ic_send_photo_online.png
new file mode 100644
index 000000000..0aaab38d8
Binary files /dev/null and b/src/main/res/drawable-mdpi/ic_send_photo_online.png differ
diff --git a/src/main/res/drawable-mdpi/ic_send_text_away.png b/src/main/res/drawable-mdpi/ic_send_text_away.png
new file mode 100644
index 000000000..ddd983b56
Binary files /dev/null and b/src/main/res/drawable-mdpi/ic_send_text_away.png differ
diff --git a/src/main/res/drawable-mdpi/ic_send_text_dnd.png b/src/main/res/drawable-mdpi/ic_send_text_dnd.png
new file mode 100644
index 000000000..92df9d3d0
Binary files /dev/null and b/src/main/res/drawable-mdpi/ic_send_text_dnd.png differ
diff --git a/src/main/res/drawable-mdpi/ic_send_text_offline.png b/src/main/res/drawable-mdpi/ic_send_text_offline.png
new file mode 100644
index 000000000..72b9da270
Binary files /dev/null and b/src/main/res/drawable-mdpi/ic_send_text_offline.png differ
diff --git a/src/main/res/drawable-mdpi/ic_send_text_online.png b/src/main/res/drawable-mdpi/ic_send_text_online.png
new file mode 100644
index 000000000..86d1e3306
Binary files /dev/null and b/src/main/res/drawable-mdpi/ic_send_text_online.png differ
diff --git a/src/main/res/drawable-mdpi/ic_send_voice_away.png b/src/main/res/drawable-mdpi/ic_send_voice_away.png
new file mode 100644
index 000000000..943f690fe
Binary files /dev/null and b/src/main/res/drawable-mdpi/ic_send_voice_away.png differ
diff --git a/src/main/res/drawable-mdpi/ic_send_voice_dnd.png b/src/main/res/drawable-mdpi/ic_send_voice_dnd.png
new file mode 100644
index 000000000..ef25b1c4d
Binary files /dev/null and b/src/main/res/drawable-mdpi/ic_send_voice_dnd.png differ
diff --git a/src/main/res/drawable-mdpi/ic_send_voice_offline.png b/src/main/res/drawable-mdpi/ic_send_voice_offline.png
new file mode 100644
index 000000000..e6b2355fb
Binary files /dev/null and b/src/main/res/drawable-mdpi/ic_send_voice_offline.png differ
diff --git a/src/main/res/drawable-mdpi/ic_send_voice_online.png b/src/main/res/drawable-mdpi/ic_send_voice_online.png
new file mode 100644
index 000000000..bd0e1f870
Binary files /dev/null and b/src/main/res/drawable-mdpi/ic_send_voice_online.png differ
diff --git a/src/main/res/drawable-xhdpi/ic_action_send_now_away.png b/src/main/res/drawable-xhdpi/ic_action_send_now_away.png
deleted file mode 100644
index bb999d85d..000000000
Binary files a/src/main/res/drawable-xhdpi/ic_action_send_now_away.png and /dev/null differ
diff --git a/src/main/res/drawable-xhdpi/ic_action_send_now_dnd.png b/src/main/res/drawable-xhdpi/ic_action_send_now_dnd.png
deleted file mode 100644
index a0bf5561c..000000000
Binary files a/src/main/res/drawable-xhdpi/ic_action_send_now_dnd.png and /dev/null differ
diff --git a/src/main/res/drawable-xhdpi/ic_action_send_now_offline.png b/src/main/res/drawable-xhdpi/ic_action_send_now_offline.png
deleted file mode 100644
index 6da9ff7bd..000000000
Binary files a/src/main/res/drawable-xhdpi/ic_action_send_now_offline.png and /dev/null differ
diff --git a/src/main/res/drawable-xhdpi/ic_action_send_now_online.png b/src/main/res/drawable-xhdpi/ic_action_send_now_online.png
deleted file mode 100644
index 348ba657d..000000000
Binary files a/src/main/res/drawable-xhdpi/ic_action_send_now_online.png and /dev/null differ
diff --git a/src/main/res/drawable-xhdpi/ic_launcher.png b/src/main/res/drawable-xhdpi/ic_launcher.png
index fd9937f1a..c9e48859a 100644
Binary files a/src/main/res/drawable-xhdpi/ic_launcher.png and b/src/main/res/drawable-xhdpi/ic_launcher.png differ
diff --git a/src/main/res/drawable-xhdpi/ic_notification.png b/src/main/res/drawable-xhdpi/ic_notification.png
index 43daff659..042d2cdaa 100644
Binary files a/src/main/res/drawable-xhdpi/ic_notification.png and b/src/main/res/drawable-xhdpi/ic_notification.png differ
diff --git a/src/main/res/drawable-xhdpi/ic_received_indicator.png b/src/main/res/drawable-xhdpi/ic_received_indicator.png
index 2c8719337..cf7c2bb85 100644
Binary files a/src/main/res/drawable-xhdpi/ic_received_indicator.png and b/src/main/res/drawable-xhdpi/ic_received_indicator.png differ
diff --git a/src/main/res/drawable-xhdpi/ic_send_location_away.png b/src/main/res/drawable-xhdpi/ic_send_location_away.png
new file mode 100644
index 000000000..0a5f3d54e
Binary files /dev/null and b/src/main/res/drawable-xhdpi/ic_send_location_away.png differ
diff --git a/src/main/res/drawable-xhdpi/ic_send_location_dnd.png b/src/main/res/drawable-xhdpi/ic_send_location_dnd.png
new file mode 100644
index 000000000..90ce346cb
Binary files /dev/null and b/src/main/res/drawable-xhdpi/ic_send_location_dnd.png differ
diff --git a/src/main/res/drawable-xhdpi/ic_send_location_offline.png b/src/main/res/drawable-xhdpi/ic_send_location_offline.png
new file mode 100644
index 000000000..114ce01be
Binary files /dev/null and b/src/main/res/drawable-xhdpi/ic_send_location_offline.png differ
diff --git a/src/main/res/drawable-xhdpi/ic_send_location_online.png b/src/main/res/drawable-xhdpi/ic_send_location_online.png
new file mode 100644
index 000000000..17204eeab
Binary files /dev/null and b/src/main/res/drawable-xhdpi/ic_send_location_online.png differ
diff --git a/src/main/res/drawable-xhdpi/ic_send_photo_away.png b/src/main/res/drawable-xhdpi/ic_send_photo_away.png
new file mode 100644
index 000000000..7ac674eac
Binary files /dev/null and b/src/main/res/drawable-xhdpi/ic_send_photo_away.png differ
diff --git a/src/main/res/drawable-xhdpi/ic_send_photo_dnd.png b/src/main/res/drawable-xhdpi/ic_send_photo_dnd.png
new file mode 100644
index 000000000..2c37db74a
Binary files /dev/null and b/src/main/res/drawable-xhdpi/ic_send_photo_dnd.png differ
diff --git a/src/main/res/drawable-xhdpi/ic_send_photo_offline.png b/src/main/res/drawable-xhdpi/ic_send_photo_offline.png
new file mode 100644
index 000000000..6ef1e16a9
Binary files /dev/null and b/src/main/res/drawable-xhdpi/ic_send_photo_offline.png differ
diff --git a/src/main/res/drawable-xhdpi/ic_send_photo_online.png b/src/main/res/drawable-xhdpi/ic_send_photo_online.png
new file mode 100644
index 000000000..f585ef98c
Binary files /dev/null and b/src/main/res/drawable-xhdpi/ic_send_photo_online.png differ
diff --git a/src/main/res/drawable-xhdpi/ic_send_text_away.png b/src/main/res/drawable-xhdpi/ic_send_text_away.png
new file mode 100644
index 000000000..41f223f6c
Binary files /dev/null and b/src/main/res/drawable-xhdpi/ic_send_text_away.png differ
diff --git a/src/main/res/drawable-xhdpi/ic_send_text_dnd.png b/src/main/res/drawable-xhdpi/ic_send_text_dnd.png
new file mode 100644
index 000000000..0a749f8db
Binary files /dev/null and b/src/main/res/drawable-xhdpi/ic_send_text_dnd.png differ
diff --git a/src/main/res/drawable-xhdpi/ic_send_text_offline.png b/src/main/res/drawable-xhdpi/ic_send_text_offline.png
new file mode 100644
index 000000000..d0a98e5d0
Binary files /dev/null and b/src/main/res/drawable-xhdpi/ic_send_text_offline.png differ
diff --git a/src/main/res/drawable-xhdpi/ic_send_text_online.png b/src/main/res/drawable-xhdpi/ic_send_text_online.png
new file mode 100644
index 000000000..91d240d24
Binary files /dev/null and b/src/main/res/drawable-xhdpi/ic_send_text_online.png differ
diff --git a/src/main/res/drawable-xhdpi/ic_send_voice_away.png b/src/main/res/drawable-xhdpi/ic_send_voice_away.png
new file mode 100644
index 000000000..34f8ea86f
Binary files /dev/null and b/src/main/res/drawable-xhdpi/ic_send_voice_away.png differ
diff --git a/src/main/res/drawable-xhdpi/ic_send_voice_dnd.png b/src/main/res/drawable-xhdpi/ic_send_voice_dnd.png
new file mode 100644
index 000000000..cea4212a8
Binary files /dev/null and b/src/main/res/drawable-xhdpi/ic_send_voice_dnd.png differ
diff --git a/src/main/res/drawable-xhdpi/ic_send_voice_offline.png b/src/main/res/drawable-xhdpi/ic_send_voice_offline.png
new file mode 100644
index 000000000..fc4cff1f1
Binary files /dev/null and b/src/main/res/drawable-xhdpi/ic_send_voice_offline.png differ
diff --git a/src/main/res/drawable-xhdpi/ic_send_voice_online.png b/src/main/res/drawable-xhdpi/ic_send_voice_online.png
new file mode 100644
index 000000000..d2f03dd51
Binary files /dev/null and b/src/main/res/drawable-xhdpi/ic_send_voice_online.png differ
diff --git a/src/main/res/drawable-xxhdpi/ic_action_send_now_away.png b/src/main/res/drawable-xxhdpi/ic_action_send_now_away.png
deleted file mode 100644
index 12ec4d33f..000000000
Binary files a/src/main/res/drawable-xxhdpi/ic_action_send_now_away.png and /dev/null differ
diff --git a/src/main/res/drawable-xxhdpi/ic_action_send_now_dnd.png b/src/main/res/drawable-xxhdpi/ic_action_send_now_dnd.png
deleted file mode 100644
index 7719f81a9..000000000
Binary files a/src/main/res/drawable-xxhdpi/ic_action_send_now_dnd.png and /dev/null differ
diff --git a/src/main/res/drawable-xxhdpi/ic_action_send_now_offline.png b/src/main/res/drawable-xxhdpi/ic_action_send_now_offline.png
deleted file mode 100644
index 188958132..000000000
Binary files a/src/main/res/drawable-xxhdpi/ic_action_send_now_offline.png and /dev/null differ
diff --git a/src/main/res/drawable-xxhdpi/ic_action_send_now_online.png b/src/main/res/drawable-xxhdpi/ic_action_send_now_online.png
deleted file mode 100644
index 29bde36e3..000000000
Binary files a/src/main/res/drawable-xxhdpi/ic_action_send_now_online.png and /dev/null differ
diff --git a/src/main/res/drawable-xxhdpi/ic_launcher.png b/src/main/res/drawable-xxhdpi/ic_launcher.png
index 0e06656ff..e69b9c8d5 100644
Binary files a/src/main/res/drawable-xxhdpi/ic_launcher.png and b/src/main/res/drawable-xxhdpi/ic_launcher.png differ
diff --git a/src/main/res/drawable-xxhdpi/ic_notification.png b/src/main/res/drawable-xxhdpi/ic_notification.png
index c2ee5dec8..42c62d327 100644
Binary files a/src/main/res/drawable-xxhdpi/ic_notification.png and b/src/main/res/drawable-xxhdpi/ic_notification.png differ
diff --git a/src/main/res/drawable-xxhdpi/ic_received_indicator.png b/src/main/res/drawable-xxhdpi/ic_received_indicator.png
index 039a9ef9b..5d1c9b876 100644
Binary files a/src/main/res/drawable-xxhdpi/ic_received_indicator.png and b/src/main/res/drawable-xxhdpi/ic_received_indicator.png differ
diff --git a/src/main/res/drawable-xxhdpi/ic_send_location_away.png b/src/main/res/drawable-xxhdpi/ic_send_location_away.png
new file mode 100644
index 000000000..4fb370ff9
Binary files /dev/null and b/src/main/res/drawable-xxhdpi/ic_send_location_away.png differ
diff --git a/src/main/res/drawable-xxhdpi/ic_send_location_dnd.png b/src/main/res/drawable-xxhdpi/ic_send_location_dnd.png
new file mode 100644
index 000000000..ea3d15026
Binary files /dev/null and b/src/main/res/drawable-xxhdpi/ic_send_location_dnd.png differ
diff --git a/src/main/res/drawable-xxhdpi/ic_send_location_offline.png b/src/main/res/drawable-xxhdpi/ic_send_location_offline.png
new file mode 100644
index 000000000..b4317aae4
Binary files /dev/null and b/src/main/res/drawable-xxhdpi/ic_send_location_offline.png differ
diff --git a/src/main/res/drawable-xxhdpi/ic_send_location_online.png b/src/main/res/drawable-xxhdpi/ic_send_location_online.png
new file mode 100644
index 000000000..10dfed811
Binary files /dev/null and b/src/main/res/drawable-xxhdpi/ic_send_location_online.png differ
diff --git a/src/main/res/drawable-xxhdpi/ic_send_photo_away.png b/src/main/res/drawable-xxhdpi/ic_send_photo_away.png
new file mode 100644
index 000000000..78eea39e3
Binary files /dev/null and b/src/main/res/drawable-xxhdpi/ic_send_photo_away.png differ
diff --git a/src/main/res/drawable-xxhdpi/ic_send_photo_dnd.png b/src/main/res/drawable-xxhdpi/ic_send_photo_dnd.png
new file mode 100644
index 000000000..09c11a817
Binary files /dev/null and b/src/main/res/drawable-xxhdpi/ic_send_photo_dnd.png differ
diff --git a/src/main/res/drawable-xxhdpi/ic_send_photo_offline.png b/src/main/res/drawable-xxhdpi/ic_send_photo_offline.png
new file mode 100644
index 000000000..6b41c3bd9
Binary files /dev/null and b/src/main/res/drawable-xxhdpi/ic_send_photo_offline.png differ
diff --git a/src/main/res/drawable-xxhdpi/ic_send_photo_online.png b/src/main/res/drawable-xxhdpi/ic_send_photo_online.png
new file mode 100644
index 000000000..1c8992c52
Binary files /dev/null and b/src/main/res/drawable-xxhdpi/ic_send_photo_online.png differ
diff --git a/src/main/res/drawable-xxhdpi/ic_send_text_away.png b/src/main/res/drawable-xxhdpi/ic_send_text_away.png
new file mode 100644
index 000000000..2b2b07935
Binary files /dev/null and b/src/main/res/drawable-xxhdpi/ic_send_text_away.png differ
diff --git a/src/main/res/drawable-xxhdpi/ic_send_text_dnd.png b/src/main/res/drawable-xxhdpi/ic_send_text_dnd.png
new file mode 100644
index 000000000..0d7e7053f
Binary files /dev/null and b/src/main/res/drawable-xxhdpi/ic_send_text_dnd.png differ
diff --git a/src/main/res/drawable-xxhdpi/ic_send_text_offline.png b/src/main/res/drawable-xxhdpi/ic_send_text_offline.png
new file mode 100644
index 000000000..6bd9c414f
Binary files /dev/null and b/src/main/res/drawable-xxhdpi/ic_send_text_offline.png differ
diff --git a/src/main/res/drawable-xxhdpi/ic_send_text_online.png b/src/main/res/drawable-xxhdpi/ic_send_text_online.png
new file mode 100644
index 000000000..cb6a2dba8
Binary files /dev/null and b/src/main/res/drawable-xxhdpi/ic_send_text_online.png differ
diff --git a/src/main/res/drawable-xxhdpi/ic_send_voice_away.png b/src/main/res/drawable-xxhdpi/ic_send_voice_away.png
new file mode 100644
index 000000000..b8b9e8079
Binary files /dev/null and b/src/main/res/drawable-xxhdpi/ic_send_voice_away.png differ
diff --git a/src/main/res/drawable-xxhdpi/ic_send_voice_dnd.png b/src/main/res/drawable-xxhdpi/ic_send_voice_dnd.png
new file mode 100644
index 000000000..a5151331c
Binary files /dev/null and b/src/main/res/drawable-xxhdpi/ic_send_voice_dnd.png differ
diff --git a/src/main/res/drawable-xxhdpi/ic_send_voice_offline.png b/src/main/res/drawable-xxhdpi/ic_send_voice_offline.png
new file mode 100644
index 000000000..3d58f6994
Binary files /dev/null and b/src/main/res/drawable-xxhdpi/ic_send_voice_offline.png differ
diff --git a/src/main/res/drawable-xxhdpi/ic_send_voice_online.png b/src/main/res/drawable-xxhdpi/ic_send_voice_online.png
new file mode 100644
index 000000000..600371eb2
Binary files /dev/null and b/src/main/res/drawable-xxhdpi/ic_send_voice_online.png differ
diff --git a/src/main/res/drawable-xxxhdpi/ic_launcher.png b/src/main/res/drawable-xxxhdpi/ic_launcher.png
index b6dcb0b9f..668504dfb 100644
Binary files a/src/main/res/drawable-xxxhdpi/ic_launcher.png and b/src/main/res/drawable-xxxhdpi/ic_launcher.png differ
diff --git a/src/main/res/drawable-xxxhdpi/ic_notification.png b/src/main/res/drawable-xxxhdpi/ic_notification.png
index ee2f3a432..c3439f1a3 100644
Binary files a/src/main/res/drawable-xxxhdpi/ic_notification.png and b/src/main/res/drawable-xxxhdpi/ic_notification.png differ
diff --git a/src/main/res/drawable-xxxhdpi/ic_received_indicator.png b/src/main/res/drawable-xxxhdpi/ic_received_indicator.png
index 86db9890c..f35c8b442 100644
Binary files a/src/main/res/drawable-xxxhdpi/ic_received_indicator.png and b/src/main/res/drawable-xxxhdpi/ic_received_indicator.png differ
diff --git a/src/main/res/drawable-xxxhdpi/ic_send_location_away.png b/src/main/res/drawable-xxxhdpi/ic_send_location_away.png
new file mode 100644
index 000000000..0fab2554a
Binary files /dev/null and b/src/main/res/drawable-xxxhdpi/ic_send_location_away.png differ
diff --git a/src/main/res/drawable-xxxhdpi/ic_send_location_dnd.png b/src/main/res/drawable-xxxhdpi/ic_send_location_dnd.png
new file mode 100644
index 000000000..08e2b39bd
Binary files /dev/null and b/src/main/res/drawable-xxxhdpi/ic_send_location_dnd.png differ
diff --git a/src/main/res/drawable-xxxhdpi/ic_send_location_offline.png b/src/main/res/drawable-xxxhdpi/ic_send_location_offline.png
new file mode 100644
index 000000000..2af75cde3
Binary files /dev/null and b/src/main/res/drawable-xxxhdpi/ic_send_location_offline.png differ
diff --git a/src/main/res/drawable-xxxhdpi/ic_send_location_online.png b/src/main/res/drawable-xxxhdpi/ic_send_location_online.png
new file mode 100644
index 000000000..2e54ef892
Binary files /dev/null and b/src/main/res/drawable-xxxhdpi/ic_send_location_online.png differ
diff --git a/src/main/res/drawable-xxxhdpi/ic_send_photo_away.png b/src/main/res/drawable-xxxhdpi/ic_send_photo_away.png
new file mode 100644
index 000000000..ba171ce13
Binary files /dev/null and b/src/main/res/drawable-xxxhdpi/ic_send_photo_away.png differ
diff --git a/src/main/res/drawable-xxxhdpi/ic_send_photo_dnd.png b/src/main/res/drawable-xxxhdpi/ic_send_photo_dnd.png
new file mode 100644
index 000000000..fccb32dc3
Binary files /dev/null and b/src/main/res/drawable-xxxhdpi/ic_send_photo_dnd.png differ
diff --git a/src/main/res/drawable-xxxhdpi/ic_send_photo_offline.png b/src/main/res/drawable-xxxhdpi/ic_send_photo_offline.png
new file mode 100644
index 000000000..e94e930dd
Binary files /dev/null and b/src/main/res/drawable-xxxhdpi/ic_send_photo_offline.png differ
diff --git a/src/main/res/drawable-xxxhdpi/ic_send_photo_online.png b/src/main/res/drawable-xxxhdpi/ic_send_photo_online.png
new file mode 100644
index 000000000..1bf680ebb
Binary files /dev/null and b/src/main/res/drawable-xxxhdpi/ic_send_photo_online.png differ
diff --git a/src/main/res/drawable-xxxhdpi/ic_send_text_away.png b/src/main/res/drawable-xxxhdpi/ic_send_text_away.png
new file mode 100644
index 000000000..afcfa89d9
Binary files /dev/null and b/src/main/res/drawable-xxxhdpi/ic_send_text_away.png differ
diff --git a/src/main/res/drawable-xxxhdpi/ic_send_text_dnd.png b/src/main/res/drawable-xxxhdpi/ic_send_text_dnd.png
new file mode 100644
index 000000000..929a33a47
Binary files /dev/null and b/src/main/res/drawable-xxxhdpi/ic_send_text_dnd.png differ
diff --git a/src/main/res/drawable-xxxhdpi/ic_send_text_offline.png b/src/main/res/drawable-xxxhdpi/ic_send_text_offline.png
new file mode 100644
index 000000000..b9122e454
Binary files /dev/null and b/src/main/res/drawable-xxxhdpi/ic_send_text_offline.png differ
diff --git a/src/main/res/drawable-xxxhdpi/ic_send_text_online.png b/src/main/res/drawable-xxxhdpi/ic_send_text_online.png
new file mode 100644
index 000000000..abec2e0b7
Binary files /dev/null and b/src/main/res/drawable-xxxhdpi/ic_send_text_online.png differ
diff --git a/src/main/res/drawable-xxxhdpi/ic_send_voice_away.png b/src/main/res/drawable-xxxhdpi/ic_send_voice_away.png
new file mode 100644
index 000000000..de1375e2f
Binary files /dev/null and b/src/main/res/drawable-xxxhdpi/ic_send_voice_away.png differ
diff --git a/src/main/res/drawable-xxxhdpi/ic_send_voice_dnd.png b/src/main/res/drawable-xxxhdpi/ic_send_voice_dnd.png
new file mode 100644
index 000000000..8ac667be2
Binary files /dev/null and b/src/main/res/drawable-xxxhdpi/ic_send_voice_dnd.png differ
diff --git a/src/main/res/drawable-xxxhdpi/ic_send_voice_offline.png b/src/main/res/drawable-xxxhdpi/ic_send_voice_offline.png
new file mode 100644
index 000000000..eec3d8f2b
Binary files /dev/null and b/src/main/res/drawable-xxxhdpi/ic_send_voice_offline.png differ
diff --git a/src/main/res/drawable-xxxhdpi/ic_send_voice_online.png b/src/main/res/drawable-xxxhdpi/ic_send_voice_online.png
new file mode 100644
index 000000000..fcdfcb437
Binary files /dev/null and b/src/main/res/drawable-xxxhdpi/ic_send_voice_online.png differ
diff --git a/src/main/res/layout/fragment_conversation.xml b/src/main/res/layout/fragment_conversation.xml
index f9aae10a0..5aa7dffab 100644
--- a/src/main/res/layout/fragment_conversation.xml
+++ b/src/main/res/layout/fragment_conversation.xml
@@ -57,7 +57,7 @@
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:background="?android:selectableItemBackground"
- android:src="@drawable/ic_action_send_now_offline" />
+ android:src="@drawable/ic_send_text_offline" />
-1
+
+ - @string/none
+ - @string/recently_used
+ - @string/attach_take_picture
+ - @string/attach_record_voice
+ - @string/send_location
+
+
+
+ - none
+ - recent
+ - photo
+ - voice
+ - location
+
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index cc7727d22..4631bd60c 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -1,397 +1,397 @@
- Conversations
- Settings
- New conversation
- Manage accounts
- End this conversation
- Contact details
- Conference details
- Secure conversation
- Add account
- Edit name
- Add to phone book
- Delete from roster
- Block contact
- Unblock contact
- Block domain
- Unblock domain
- Manage Accounts
- Settings
- Conference Details
- Contact Details
- Share with Conversation
- Start Conversation
- Choose contact
- Block list
- just now
- 1 min ago
- %d mins ago
- unread Conversations
- sending…
- Decrypting message. Please wait…
- Nickname is already in use
- Admin
- Owner
- Moderator
- Participant
- Visitor
- Would you like to remove %s from your roster? The conversation associated with this contact will not be removed.
- Would you like to block %s from sending you messages?
- Would you like to unblock %s and allow them to send you messages?
- Block all contacts from %s?
- Unblock all contacts from %s?
- Contact blocked
- Would you like to remove %s as a bookmark? The conversation associated with this bookmark will not be removed.
- Register new account on server
- Change password on server
- Share with…
- Start Conversation
- Invite Contact
- Contacts
- Cancel
- Set
- Add
- Edit
- Delete
- Block
- Unblock
- Save
- OK
- Conversations has crashed
- By sending in stack traces you are helping the ongoing development of Conversations\nWarning: This will use your XMPP account to send the stack trace to the developer.
- Send now
- Never ask again
- Unable to connect to account
- Unable to connect to multiple accounts
- Touch here to manage your accounts
- Attach file
- The contact is not in your roster. Would you like to add it?
- Add contact
- delivery failed
- rejected
- Preparing image for transmission
- Clear history
- Clear Conversation History
- Do you want to delete all messages within this Conversation?\n\nWarning: This will not influence messages stored on other devices or servers.
- Delete messages
- End this conversations afterwards
- Choose presence to contact
- Send plain text message
- Send OTR encrypted message
- Send OpenPGP encrypted message
- Your nickname has been changed
- Download Image
- Send unencrypted
- Decryption failed. Maybe you don’t have the proper private key.
- OpenKeychain
- Conversations utilizes a third party app called OpenKeychain to encrypt and decrypt messages and to manage your public keys.\n\nOpenKeychain is licensed under GPLv3 and available on F-Droid and Google Play.\n\n(Please restart Conversations afterwards.)
- Restart
- Install
- offering…
- waiting…
- No OpenPGP Key found
- Conversations is unable to encrypt your messages because your contact is not announcing his or hers public key.\n\nPlease ask your contact to setup OpenPGP.
- No OpenPGP Keys found
- Conversations is unable to encrypt your messages because your contacts are not announcing their public key.\n\nPlease ask your contacts to setup OpenPGP.
- Encrypted message received. Touch to view and decrypt.
- General
- XMPP resource
- The name this client identifies itself with
- Accept files
- Automatically accept files smaller than…
- Notification Settings
- Notifications
- Notify when a new message arrives
- Vibrate
- Also vibrate when a new message arrives
- Sound
- Play ringtone with notification
- Conference notifications
- Always notify when a new conference message arrives instead of only when highlighted
- Notification grace period
- Disable notifications for a short time after a carbon copy was received
- Advanced Options
- Never send crash reports
- By sending in stack traces you are helping the ongoing development of Conversations
- Confirm Messages
- Let your contact know when you have received and read a message
- UI Options
- OpenKeychain reported an error
- I/O Error decrypting file
- Accept
- An error has occurred
- Grant presence updates
- Preemptively grant and ask for presence subscription for contacts you created
- Subscriptions
- Your account
- Keys
- Send presence updates
- Receive presence updates
- Ask for presence updates
- Choose picture
- Take picture
- Preemptively grant subscription request
- The file you selected is not an image
- Error while converting the image file
- File not found
- General I/O error. Maybe you ran out of storage space?
- The app you used to select this image did not provide us with enough permissions to read the file.\n\nUse a different file manager to choose an image
- Unknown
- Temporarily disabled
- Online
- Connecting\u2026
- Offline
- Unauthorized
- Server not found
- No connectivity
- Registration failed
- Username already in use
- Registration completed
- Server does not support registration
- Security error
- Incompatible server
- Plain text
- OTR
- OpenPGP
- Edit account
- Delete account
- Temporarily disable
- Publish avatar
- Publish OpenPGP public key
- Enable account
- Are you sure?
- If you delete your account your entire conversation history will be lost
- Record voice
- Jabber ID
- Password
- username@example.com
- Confirm password
- Password
- Confirm password
- Passwords do not match
- This is not a valid Jabber ID
- Out of memory. Image is too large
- Do you want to add %s to your phones contact list?
- online
- free to chat
- away
- extended away
- do not disturb
- offline
- Conference
- Other Members
- Server info
- XEP-0313: MAM
- XEP-0280: Message Carbons
- XEP-0352: Client State Indication
- XEP-0191: Blocking Command
- XEP-0237: Roster Versioning
- XEP-0198: Stream Management
- XEP-0163: PEP (Avatars)
- available
- unavailable
- Missing public key announcements
- last seen just now
- last seen 1 minute ago
- last seen %d minutes ago
- last seen 1 hour ago
- last seen %d hours ago
- last seen 1 day ago
- last seen %d days ago
- never seen
- Encrypted message. Please install OpenKeychain to decrypt.
- Unknown OTR fingerprint
- OpenPGP encrypted messages found
- Reception failed
- Your fingerprint
- OTR fingerprint
- Verify
- Decrypt
- Conferences
- Search
- Create Contact
- Join Conference
- Delete Contact
- View contact details
- Block contact
- Unblock contact
- Create
- The contact already exists
- Join
- Conference address
- room@conference.example.com
- Save as bookmark
- Delete bookmark
- This bookmark already exists
- You
- Edit conference subject
- Conference not found
- Leave
- Contact added you to contact list
- Add back
- %s has read up to this point
- Publish
- Touch avatar to select picture from gallery
- Please note: Everyone subscribed to your presence updates will be allowed to see this picture.
- Publishing…
- The server rejected your publication
- Something went wrong while converting your picture
- Could not save avatar to disk
- (Or long press to bring back default)
- Your server does not support the publication of avatars
- whispered
- to %s
- Send private message to %s
- Connect
- This account already exists
- Next
- Current session established
- Additional Information
- Skip
- Disable notifications
- Disable notifications for this conversation
- Notifications are disabled
- Enable
- Conference requires password
- Enter password
- Missing presence updates from contact
- Please request presence updates from your contact first.\n\nThis will be used to determine what client(s) your contact is using.
- Request now
- Delete Fingerprint
- Are you sure you would like to delete this fingerprint?
- Ignore
- Warning: Sending this without mutual presence updates could cause unexpected problems.\n\nGo to contact details to verify your presence subscriptions.
- Encryption settings
- Force end-to-end encryption
- Always send messages encrypted (except for conferences)
- Don’t save encrypted messages
- Warning: This could lead to message loss
- Expert options
- Please be careful with these
- About Conversations
- Build and licensing information
-
- Conversations • the very last word in instant messaging.
- \n\nCopyright © 2014 Daniel Gultsch
- \n\nThis program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
- \n\nThis program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- \n\nYou should have received a copy of the GNU General Public License
- along with this program. If not, see https://www.gnu.org/licenses
- \n\nDownload the full source code at https://github.com/siacs/Conversations
- \n\n\nLibraries
- \n\nhttps://www.bouncycastle.org\n(The MIT License (MIT))
- \n\nhttps://www.gnu.org/software/libidn\n(Apache License, Version 2.0)
- \n\nhttps://github.com/ge0rg/MemorizingTrustManager\n(The MIT License (MIT))
- \n\nhttps://github.com/rtreffer/minidns\n(WTFPL)
- \n\nhttps://github.com/open-keychain/openkeychain-api-lib\n(Apache License, Version 2.0)
- \n\nhttps://github.com/jitsi/otr4j\n(LGPL-3.0)
- \n\nhttps://developer.android.com/tools/support-library\n(Apache License, Version 2.0)
- \n\nhttps://github.com/zxing/zxing\n(Apache License, Version 2.0)
- \n\nhttps://github.com/google/material-design-icons\n(CC BY 4.0)
- \n\nhttps://github.com/timroes/EnhancedListView\n(Apache License, Version 2.0)
-
- Quiet Hours
- Start time
- End time
- Enable quiet hours
- Notifications will be silenced during quiet hours
- Increase font size
- Use larger font sizes across the entire app
- Send button indicates status
- Request message receipts
- Received messages will be marked with a green tick if supported
- Colorize send button to indicate contact status
- Other
- Conference name
- Use room’s subject instead of JID to identify conferences
- OTR fingerprint copied to clipboard!
- You are banned from this conference
- This conference is members only
- You have been kicked from this conference
- using account %s
- Checking image on HTTP host
- The image file has been deleted
- You are not connected. Try again later
- Check image file size
- Message options
- Copy text
- Copy original URL
- Send again
- Image URL
- Message text
- URL copied to clipboard
- Message copied to clipboard
- Image transmission failed
- Scan QR code
- Show QR code
- Show block list
- Account details
- Verify OTR
- Remote Fingerprint
- scan
- (or touch phones)
- Socialist Millionaire Protocol
- Hint or Question
- Shared Secret
- Confirm
- In progress
- Respond
- Failed
- Secrets do not match
- Try again
- Finish
- Verified!
- Contact requested SMP verification
- No valid OTR session has been found!
- Conversations
- Keep service in foreground
- Prevents the operating system from killing your connection
- Choose file
- Receiving %1$s (%2$d%% completed)
- Download %s
- file
- Open %s
- sending (%1$d%% completed)
- Preparing file for transmission
- %s offered for download
- Cancel transmission
- file transmission failed
- The file has been deleted
- No application found to open file
- Could not verify fingerprint
- Manually verify
- Are you sure that you want to verify your contacts OTR fingerprint?
- Show dynamic tags
- Display read-only tags underneath contacts
- Enable notifications
- Create conference with…
- No conference server found
- Conference creation failed!
- Conference created!
- Secret accepted!
- Reset
- Account avatar
- Copy OTR fingerprint to clipboard
- Fetching history from server
- No more history on server
- Updating…
- Password changed!
- Could not change password
- Send a message to start an encrypted chat
- Ask question
- If you and your contact have a secret in common that no one else knows (like an inside joke or simply what you had for lunch the last time you met) you can use that secret to verify each other’s fingerprints.\n\nYou provide a hint or a question for your contact who will respond with a case-sensitive answer.
- Your contact would like to verify your fingerprint by challenging you with a shared secret. Your contact provided the following hint or question for that secret.
- Your hint should not be empty
- Your shared secret can not be empty
- Carefully compare the fingerprint shown below with the fingerprint of your contact.\nYou can use any trusted form of communication like an encrypted e-mail or a telephone call to exchange those.
+ Conversations
+ Settings
+ New conversation
+ Manage accounts
+ End this conversation
+ Contact details
+ Conference details
+ Secure conversation
+ Add account
+ Edit name
+ Add to phone book
+ Delete from roster
+ Block contact
+ Unblock contact
+ Block domain
+ Unblock domain
+ Manage Accounts
+ Settings
+ Conference Details
+ Contact Details
+ Share with Conversation
+ Start Conversation
+ Choose contact
+ Block list
+ just now
+ 1 min ago
+ %d mins ago
+ unread Conversations
+ sending…
+ Decrypting message. Please wait…
+ Nickname is already in use
+ Admin
+ Owner
+ Moderator
+ Participant
+ Visitor
+ Would you like to remove %s from your roster? The conversation associated with this contact will not be removed.
+ Would you like to block %s from sending you messages?
+ Would you like to unblock %s and allow them to send you messages?
+ Block all contacts from %s?
+ Unblock all contacts from %s?
+ Contact blocked
+ Would you like to remove %s as a bookmark? The conversation associated with this bookmark will not be removed.
+ Register new account on server
+ Change password on server
+ Share with…
+ Start Conversation
+ Invite Contact
+ Contacts
+ Cancel
+ Set
+ Add
+ Edit
+ Delete
+ Block
+ Unblock
+ Save
+ OK
+ Conversations has crashed
+ By sending in stack traces you are helping the ongoing development of Conversations\nWarning: This will use your XMPP account to send the stack trace to the developer.
+ Send now
+ Never ask again
+ Unable to connect to account
+ Unable to connect to multiple accounts
+ Touch here to manage your accounts
+ Attach file
+ The contact is not in your roster. Would you like to add it?
+ Add contact
+ delivery failed
+ rejected
+ Preparing image for transmission
+ Clear history
+ Clear Conversation History
+ Do you want to delete all messages within this Conversation?\n\nWarning: This will not influence messages stored on other devices or servers.
+ Delete messages
+ End this conversations afterwards
+ Choose presence to contact
+ Send plain text message
+ Send OTR encrypted message
+ Send OpenPGP encrypted message
+ Your nickname has been changed
+ Download Image
+ Send unencrypted
+ Decryption failed. Maybe you don’t have the proper private key.
+ OpenKeychain
+ Conversations utilizes a third party app called OpenKeychain to encrypt and decrypt messages and to manage your public keys.\n\nOpenKeychain is licensed under GPLv3 and available on F-Droid and Google Play.\n\n(Please restart Conversations afterwards.)
+ Restart
+ Install
+ offering…
+ waiting…
+ No OpenPGP Key found
+ Conversations is unable to encrypt your messages because your contact is not announcing his or hers public key.\n\nPlease ask your contact to setup OpenPGP.
+ No OpenPGP Keys found
+ Conversations is unable to encrypt your messages because your contacts are not announcing their public key.\n\nPlease ask your contacts to setup OpenPGP.
+ Encrypted message received. Touch to view and decrypt.
+ General
+ XMPP resource
+ The name this client identifies itself with
+ Accept files
+ Automatically accept files smaller than…
+ Notification Settings
+ Notifications
+ Notify when a new message arrives
+ Vibrate
+ Also vibrate when a new message arrives
+ Sound
+ Play ringtone with notification
+ Conference notifications
+ Always notify when a new conference message arrives instead of only when highlighted
+ Notification grace period
+ Disable notifications for a short time after a carbon copy was received
+ Advanced Options
+ Never send crash reports
+ By sending in stack traces you are helping the ongoing development of Conversations
+ Confirm Messages
+ Let your contact know when you have received and read a message
+ UI Options
+ OpenKeychain reported an error
+ I/O Error decrypting file
+ Accept
+ An error has occurred
+ Grant presence updates
+ Preemptively grant and ask for presence subscription for contacts you created
+ Subscriptions
+ Your account
+ Keys
+ Send presence updates
+ Receive presence updates
+ Ask for presence updates
+ Choose picture
+ Take picture
+ Preemptively grant subscription request
+ The file you selected is not an image
+ Error while converting the image file
+ File not found
+ General I/O error. Maybe you ran out of storage space?
+ The app you used to select this image did not provide us with enough permissions to read the file.\n\nUse a different file manager to choose an image
+ Unknown
+ Temporarily disabled
+ Online
+ Connecting\u2026
+ Offline
+ Unauthorized
+ Server not found
+ No connectivity
+ Registration failed
+ Username already in use
+ Registration completed
+ Server does not support registration
+ Security error
+ Incompatible server
+ Plain text
+ OTR
+ OpenPGP
+ Edit account
+ Delete account
+ Temporarily disable
+ Publish avatar
+ Publish OpenPGP public key
+ Enable account
+ Are you sure?
+ If you delete your account your entire conversation history will be lost
+ Record voice
+ Jabber ID
+ Password
+ username@example.com
+ Confirm password
+ Password
+ Confirm password
+ Passwords do not match
+ This is not a valid Jabber ID
+ Out of memory. Image is too large
+ Do you want to add %s to your phones contact list?
+ online
+ free to chat
+ away
+ extended away
+ do not disturb
+ offline
+ Conference
+ Other Members
+ Server info
+ XEP-0313: MAM
+ XEP-0280: Message Carbons
+ XEP-0352: Client State Indication
+ XEP-0191: Blocking Command
+ XEP-0237: Roster Versioning
+ XEP-0198: Stream Management
+ XEP-0163: PEP (Avatars)
+ available
+ unavailable
+ Missing public key announcements
+ last seen just now
+ last seen 1 minute ago
+ last seen %d minutes ago
+ last seen 1 hour ago
+ last seen %d hours ago
+ last seen 1 day ago
+ last seen %d days ago
+ never seen
+ Encrypted message. Please install OpenKeychain to decrypt.
+ Unknown OTR fingerprint
+ OpenPGP encrypted messages found
+ Reception failed
+ Your fingerprint
+ OTR fingerprint
+ Verify
+ Decrypt
+ Conferences
+ Search
+ Create Contact
+ Join Conference
+ Delete Contact
+ View contact details
+ Block contact
+ Unblock contact
+ Create
+ The contact already exists
+ Join
+ Conference address
+ room@conference.example.com
+ Save as bookmark
+ Delete bookmark
+ This bookmark already exists
+ You
+ Edit conference subject
+ Conference not found
+ Leave
+ Contact added you to contact list
+ Add back
+ %s has read up to this point
+ Publish
+ Touch avatar to select picture from gallery
+ Please note: Everyone subscribed to your presence updates will be allowed to see this picture.
+ Publishing…
+ The server rejected your publication
+ Something went wrong while converting your picture
+ Could not save avatar to disk
+ (Or long press to bring back default)
+ Your server does not support the publication of avatars
+ whispered
+ to %s
+ Send private message to %s
+ Connect
+ This account already exists
+ Next
+ Current session established
+ Additional Information
+ Skip
+ Disable notifications
+ Disable notifications for this conversation
+ Notifications are disabled
+ Enable
+ Conference requires password
+ Enter password
+ Missing presence updates from contact
+ Please request presence updates from your contact first.\n\nThis will be used to determine what client(s) your contact is using.
+ Request now
+ Delete Fingerprint
+ Are you sure you would like to delete this fingerprint?
+ Ignore
+ Warning: Sending this without mutual presence updates could cause unexpected problems.\n\nGo to contact details to verify your presence subscriptions.
+ Encryption settings
+ Force end-to-end encryption
+ Always send messages encrypted (except for conferences)
+ Don’t save encrypted messages
+ Warning: This could lead to message loss
+ Expert options
+ Please be careful with these
+ About Conversations
+ Build and licensing information
+
+ Conversations • the very last word in instant messaging.
+ \n\nCopyright © 2014 Daniel Gultsch
+ \n\nThis program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+ \n\nThis program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+ \n\nYou should have received a copy of the GNU General Public License
+ along with this program. If not, see https://www.gnu.org/licenses
+ \n\nDownload the full source code at https://github.com/siacs/Conversations
+ \n\n\nLibraries
+ \n\nhttps://www.bouncycastle.org\n(The MIT License (MIT))
+ \n\nhttps://www.gnu.org/software/libidn\n(Apache License, Version 2.0)
+ \n\nhttps://github.com/ge0rg/MemorizingTrustManager\n(The MIT License (MIT))
+ \n\nhttps://github.com/rtreffer/minidns\n(WTFPL)
+ \n\nhttps://github.com/open-keychain/openkeychain-api-lib\n(Apache License, Version 2.0)
+ \n\nhttps://github.com/jitsi/otr4j\n(LGPL-3.0)
+ \n\nhttps://developer.android.com/tools/support-library\n(Apache License, Version 2.0)
+ \n\nhttps://github.com/zxing/zxing\n(Apache License, Version 2.0)
+ \n\nhttps://github.com/google/material-design-icons\n(CC BY 4.0)
+ \n\nhttps://github.com/timroes/EnhancedListView\n(Apache License, Version 2.0)
+
+ Quiet Hours
+ Start time
+ End time
+ Enable quiet hours
+ Notifications will be silenced during quiet hours
+ Increase font size
+ Use larger font sizes across the entire app
+ Send button indicates status
+ Request message receipts
+ Received messages will be marked with a green tick if supported
+ Colorize send button to indicate contact status
+ Other
+ Conference name
+ Use room’s subject instead of JID to identify conferences
+ OTR fingerprint copied to clipboard!
+ You are banned from this conference
+ This conference is members only
+ You have been kicked from this conference
+ using account %s
+ Checking image on HTTP host
+ The image file has been deleted
+ You are not connected. Try again later
+ Check image file size
+ Message options
+ Copy text
+ Copy original URL
+ Send again
+ Image URL
+ Message text
+ URL copied to clipboard
+ Message copied to clipboard
+ Image transmission failed
+ Scan QR code
+ Show QR code
+ Show block list
+ Account details
+ Verify OTR
+ Remote Fingerprint
+ scan
+ (or touch phones)
+ Socialist Millionaire Protocol
+ Hint or Question
+ Shared Secret
+ Confirm
+ In progress
+ Respond
+ Failed
+ Secrets do not match
+ Try again
+ Finish
+ Verified!
+ Contact requested SMP verification
+ No valid OTR session has been found!
+ Conversations
+ Keep service in foreground
+ Prevents the operating system from killing your connection
+ Choose file
+ Receiving %1$s (%2$d%% completed)
+ Download %s
+ file
+ Open %s
+ sending (%1$d%% completed)
+ Preparing file for transmission
+ %s offered for download
+ Cancel transmission
+ file transmission failed
+ The file has been deleted
+ No application found to open file
+ Could not verify fingerprint
+ Manually verify
+ Are you sure that you want to verify your contacts OTR fingerprint?
+ Show dynamic tags
+ Display read-only tags underneath contacts
+ Enable notifications
+ Create conference with…
+ No conference server found
+ Conference creation failed!
+ Conference created!
+ Secret accepted!
+ Reset
+ Account avatar
+ Copy OTR fingerprint to clipboard
+ Fetching history from server
+ No more history on server
+ Updating…
+ Password changed!
+ Could not change password
+ Send a message to start an encrypted chat
+ Ask question
+ If you and your contact have a secret in common that no one else knows (like an inside joke or simply what you had for lunch the last time you met) you can use that secret to verify each other’s fingerprints.\n\nYou provide a hint or a question for your contact who will respond with a case-sensitive answer.
+ Your contact would like to verify your fingerprint by challenging you with a shared secret. Your contact provided the following hint or question for that secret.
+ Your hint should not be empty
+ Your shared secret can not be empty
+ Carefully compare the fingerprint shown below with the fingerprint of your contact.\nYou can use any trusted form of communication like an encrypted e-mail or a telephone call to exchange those.
Change password
Current password
New password
@@ -442,19 +442,19 @@
Disable foreground service
Touch to open Conversations
Avatar has been published!
- Sending %s
- Offering %s
- Hide offline
- Disable Account
- %s is typing...
- %s has stopped typing
- Typing notifications
- Let your contact know when you are writing a new message
- Send location
- Show location
- No application found to display location
- Location
- Received location
+ Sending %s
+ Offering %s
+ Hide offline
+ Disable Account
+ %s is typing...
+ %s has stopped typing
+ Typing notifications
+ Let your contact know when you are writing a new message
+ Send location
+ Show location
+ No application found to display location
+ Location
+ Received location
Conversation closed
Left conference
Certificate options
@@ -474,4 +474,9 @@
- Select %d contact
- Select %d contacts
+ Replace send button with quick action
+ Quick Action
+ None
+ Most recently used
+ Choose quick action
diff --git a/src/main/res/xml/preferences.xml b/src/main/res/xml/preferences.xml
index 417e60a43..5b7d69040 100644
--- a/src/main/res/xml/preferences.xml
+++ b/src/main/res/xml/preferences.xml
@@ -105,6 +105,14 @@
android:key="send_button_status"
android:summary="@string/pref_use_send_button_to_indicate_status_summary"
android:title="@string/pref_use_send_button_to_indicate_status" />
+