aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDaniel Gultsch <daniel@gultsch.de>2015-05-02 11:38:56 +0200
committerDaniel Gultsch <daniel@gultsch.de>2015-05-02 11:38:56 +0200
commit53fea9e1fe25a1f0f2a7fe219195b0009ecb4f5b (patch)
tree43b9e09d39aa58201585e4879ee8fbaa8aae0173 /src
parent8617932aad2f9604d7d5ce1321da6926a7bf2f37 (diff)
replace send button with quick action button as long as no text has been entered
Diffstat (limited to 'src')
-rw-r--r--src/main/java/eu/siacs/conversations/ui/ConversationActivity.java23
-rw-r--r--src/main/java/eu/siacs/conversations/ui/ConversationFragment.java275
-rw-r--r--src/main/res/drawable-hdpi/ic_action_send_now_away.pngbin932 -> 0 bytes
-rw-r--r--src/main/res/drawable-hdpi/ic_action_send_now_dnd.pngbin1135 -> 0 bytes
-rw-r--r--src/main/res/drawable-hdpi/ic_action_send_now_offline.pngbin767 -> 0 bytes
-rw-r--r--src/main/res/drawable-hdpi/ic_action_send_now_online.pngbin1095 -> 0 bytes
-rw-r--r--src/main/res/drawable-hdpi/ic_launcher.pngbin4497 -> 4486 bytes
-rw-r--r--src/main/res/drawable-hdpi/ic_notification.pngbin806 -> 798 bytes
-rw-r--r--src/main/res/drawable-hdpi/ic_received_indicator.pngbin686 -> 560 bytes
-rw-r--r--src/main/res/drawable-hdpi/ic_send_location_away.pngbin0 -> 1159 bytes
-rw-r--r--src/main/res/drawable-hdpi/ic_send_location_dnd.pngbin0 -> 1333 bytes
-rw-r--r--src/main/res/drawable-hdpi/ic_send_location_offline.pngbin0 -> 971 bytes
-rw-r--r--src/main/res/drawable-hdpi/ic_send_location_online.pngbin0 -> 1341 bytes
-rw-r--r--src/main/res/drawable-hdpi/ic_send_photo_away.pngbin0 -> 1203 bytes
-rw-r--r--src/main/res/drawable-hdpi/ic_send_photo_dnd.pngbin0 -> 1381 bytes
-rw-r--r--src/main/res/drawable-hdpi/ic_send_photo_offline.pngbin0 -> 987 bytes
-rw-r--r--src/main/res/drawable-hdpi/ic_send_photo_online.pngbin0 -> 1400 bytes
-rw-r--r--src/main/res/drawable-hdpi/ic_send_text_away.pngbin0 -> 982 bytes
-rw-r--r--src/main/res/drawable-hdpi/ic_send_text_dnd.pngbin0 -> 1126 bytes
-rw-r--r--src/main/res/drawable-hdpi/ic_send_text_offline.pngbin0 -> 800 bytes
-rw-r--r--src/main/res/drawable-hdpi/ic_send_text_online.pngbin0 -> 1143 bytes
-rw-r--r--src/main/res/drawable-hdpi/ic_send_voice_away.pngbin0 -> 1017 bytes
-rw-r--r--src/main/res/drawable-hdpi/ic_send_voice_dnd.pngbin0 -> 1149 bytes
-rw-r--r--src/main/res/drawable-hdpi/ic_send_voice_offline.pngbin0 -> 844 bytes
-rw-r--r--src/main/res/drawable-hdpi/ic_send_voice_online.pngbin0 -> 1162 bytes
-rw-r--r--src/main/res/drawable-mdpi/ic_action_send_now_away.pngbin650 -> 0 bytes
-rw-r--r--src/main/res/drawable-mdpi/ic_action_send_now_dnd.pngbin784 -> 0 bytes
-rw-r--r--src/main/res/drawable-mdpi/ic_action_send_now_offline.pngbin535 -> 0 bytes
-rw-r--r--src/main/res/drawable-mdpi/ic_action_send_now_online.pngbin779 -> 0 bytes
-rw-r--r--src/main/res/drawable-mdpi/ic_launcher.pngbin2741 -> 2762 bytes
-rw-r--r--src/main/res/drawable-mdpi/ic_notification.pngbin553 -> 554 bytes
-rw-r--r--src/main/res/drawable-mdpi/ic_received_indicator.pngbin447 -> 402 bytes
-rw-r--r--src/main/res/drawable-mdpi/ic_send_location_away.pngbin0 -> 784 bytes
-rw-r--r--src/main/res/drawable-mdpi/ic_send_location_dnd.pngbin0 -> 908 bytes
-rw-r--r--src/main/res/drawable-mdpi/ic_send_location_offline.pngbin0 -> 673 bytes
-rw-r--r--src/main/res/drawable-mdpi/ic_send_location_online.pngbin0 -> 919 bytes
-rw-r--r--src/main/res/drawable-mdpi/ic_send_photo_away.pngbin0 -> 776 bytes
-rw-r--r--src/main/res/drawable-mdpi/ic_send_photo_dnd.pngbin0 -> 909 bytes
-rw-r--r--src/main/res/drawable-mdpi/ic_send_photo_offline.pngbin0 -> 666 bytes
-rw-r--r--src/main/res/drawable-mdpi/ic_send_photo_online.pngbin0 -> 938 bytes
-rw-r--r--src/main/res/drawable-mdpi/ic_send_text_away.pngbin0 -> 677 bytes
-rw-r--r--src/main/res/drawable-mdpi/ic_send_text_dnd.pngbin0 -> 769 bytes
-rw-r--r--src/main/res/drawable-mdpi/ic_send_text_offline.pngbin0 -> 542 bytes
-rw-r--r--src/main/res/drawable-mdpi/ic_send_text_online.pngbin0 -> 793 bytes
-rw-r--r--src/main/res/drawable-mdpi/ic_send_voice_away.pngbin0 -> 679 bytes
-rw-r--r--src/main/res/drawable-mdpi/ic_send_voice_dnd.pngbin0 -> 774 bytes
-rw-r--r--src/main/res/drawable-mdpi/ic_send_voice_offline.pngbin0 -> 575 bytes
-rw-r--r--src/main/res/drawable-mdpi/ic_send_voice_online.pngbin0 -> 788 bytes
-rw-r--r--src/main/res/drawable-xhdpi/ic_action_send_now_away.pngbin1180 -> 0 bytes
-rw-r--r--src/main/res/drawable-xhdpi/ic_action_send_now_dnd.pngbin1438 -> 0 bytes
-rw-r--r--src/main/res/drawable-xhdpi/ic_action_send_now_offline.pngbin968 -> 0 bytes
-rw-r--r--src/main/res/drawable-xhdpi/ic_action_send_now_online.pngbin1395 -> 0 bytes
-rw-r--r--src/main/res/drawable-xhdpi/ic_launcher.pngbin6336 -> 6377 bytes
-rw-r--r--src/main/res/drawable-xhdpi/ic_notification.pngbin1079 -> 1075 bytes
-rw-r--r--src/main/res/drawable-xhdpi/ic_received_indicator.pngbin855 -> 717 bytes
-rw-r--r--src/main/res/drawable-xhdpi/ic_send_location_away.pngbin0 -> 1507 bytes
-rw-r--r--src/main/res/drawable-xhdpi/ic_send_location_dnd.pngbin0 -> 1721 bytes
-rw-r--r--src/main/res/drawable-xhdpi/ic_send_location_offline.pngbin0 -> 1278 bytes
-rw-r--r--src/main/res/drawable-xhdpi/ic_send_location_online.pngbin0 -> 1751 bytes
-rw-r--r--src/main/res/drawable-xhdpi/ic_send_photo_away.pngbin0 -> 1516 bytes
-rw-r--r--src/main/res/drawable-xhdpi/ic_send_photo_dnd.pngbin0 -> 1723 bytes
-rw-r--r--src/main/res/drawable-xhdpi/ic_send_photo_offline.pngbin0 -> 1247 bytes
-rw-r--r--src/main/res/drawable-xhdpi/ic_send_photo_online.pngbin0 -> 1755 bytes
-rw-r--r--src/main/res/drawable-xhdpi/ic_send_text_away.pngbin0 -> 1270 bytes
-rw-r--r--src/main/res/drawable-xhdpi/ic_send_text_dnd.pngbin0 -> 1395 bytes
-rw-r--r--src/main/res/drawable-xhdpi/ic_send_text_offline.pngbin0 -> 1007 bytes
-rw-r--r--src/main/res/drawable-xhdpi/ic_send_text_online.pngbin0 -> 1468 bytes
-rw-r--r--src/main/res/drawable-xhdpi/ic_send_voice_away.pngbin0 -> 1257 bytes
-rw-r--r--src/main/res/drawable-xhdpi/ic_send_voice_dnd.pngbin0 -> 1426 bytes
-rw-r--r--src/main/res/drawable-xhdpi/ic_send_voice_offline.pngbin0 -> 1075 bytes
-rw-r--r--src/main/res/drawable-xhdpi/ic_send_voice_online.pngbin0 -> 1433 bytes
-rw-r--r--src/main/res/drawable-xxhdpi/ic_action_send_now_away.pngbin1426 -> 0 bytes
-rw-r--r--src/main/res/drawable-xxhdpi/ic_action_send_now_dnd.pngbin1456 -> 0 bytes
-rw-r--r--src/main/res/drawable-xxhdpi/ic_action_send_now_offline.pngbin1433 -> 0 bytes
-rw-r--r--src/main/res/drawable-xxhdpi/ic_action_send_now_online.pngbin1458 -> 0 bytes
-rw-r--r--src/main/res/drawable-xxhdpi/ic_launcher.pngbin10221 -> 10254 bytes
-rw-r--r--src/main/res/drawable-xxhdpi/ic_notification.pngbin1573 -> 1618 bytes
-rw-r--r--src/main/res/drawable-xxhdpi/ic_received_indicator.pngbin1236 -> 1016 bytes
-rw-r--r--src/main/res/drawable-xxhdpi/ic_send_location_away.pngbin0 -> 2229 bytes
-rw-r--r--src/main/res/drawable-xxhdpi/ic_send_location_dnd.pngbin0 -> 2578 bytes
-rw-r--r--src/main/res/drawable-xxhdpi/ic_send_location_offline.pngbin0 -> 1881 bytes
-rw-r--r--src/main/res/drawable-xxhdpi/ic_send_location_online.pngbin0 -> 2605 bytes
-rw-r--r--src/main/res/drawable-xxhdpi/ic_send_photo_away.pngbin0 -> 2256 bytes
-rw-r--r--src/main/res/drawable-xxhdpi/ic_send_photo_dnd.pngbin0 -> 2588 bytes
-rw-r--r--src/main/res/drawable-xxhdpi/ic_send_photo_offline.pngbin0 -> 1802 bytes
-rw-r--r--src/main/res/drawable-xxhdpi/ic_send_photo_online.pngbin0 -> 2571 bytes
-rw-r--r--src/main/res/drawable-xxhdpi/ic_send_text_away.pngbin0 -> 1776 bytes
-rw-r--r--src/main/res/drawable-xxhdpi/ic_send_text_dnd.pngbin0 -> 2004 bytes
-rw-r--r--src/main/res/drawable-xxhdpi/ic_send_text_offline.pngbin0 -> 1410 bytes
-rw-r--r--src/main/res/drawable-xxhdpi/ic_send_text_online.pngbin0 -> 2001 bytes
-rw-r--r--src/main/res/drawable-xxhdpi/ic_send_voice_away.pngbin0 -> 1895 bytes
-rw-r--r--src/main/res/drawable-xxhdpi/ic_send_voice_dnd.pngbin0 -> 2152 bytes
-rw-r--r--src/main/res/drawable-xxhdpi/ic_send_voice_offline.pngbin0 -> 1621 bytes
-rw-r--r--src/main/res/drawable-xxhdpi/ic_send_voice_online.pngbin0 -> 2183 bytes
-rw-r--r--src/main/res/drawable-xxxhdpi/ic_launcher.pngbin14234 -> 14117 bytes
-rw-r--r--src/main/res/drawable-xxxhdpi/ic_notification.pngbin2063 -> 2117 bytes
-rw-r--r--src/main/res/drawable-xxxhdpi/ic_received_indicator.pngbin1608 -> 1303 bytes
-rw-r--r--src/main/res/drawable-xxxhdpi/ic_send_location_away.pngbin0 -> 3015 bytes
-rw-r--r--src/main/res/drawable-xxxhdpi/ic_send_location_dnd.pngbin0 -> 3456 bytes
-rw-r--r--src/main/res/drawable-xxxhdpi/ic_send_location_offline.pngbin0 -> 2523 bytes
-rw-r--r--src/main/res/drawable-xxxhdpi/ic_send_location_online.pngbin0 -> 3514 bytes
-rw-r--r--src/main/res/drawable-xxxhdpi/ic_send_photo_away.pngbin0 -> 3040 bytes
-rw-r--r--src/main/res/drawable-xxxhdpi/ic_send_photo_dnd.pngbin0 -> 3544 bytes
-rw-r--r--src/main/res/drawable-xxxhdpi/ic_send_photo_offline.pngbin0 -> 2491 bytes
-rw-r--r--src/main/res/drawable-xxxhdpi/ic_send_photo_online.pngbin0 -> 3566 bytes
-rw-r--r--src/main/res/drawable-xxxhdpi/ic_send_text_away.pngbin0 -> 2311 bytes
-rw-r--r--src/main/res/drawable-xxxhdpi/ic_send_text_dnd.pngbin0 -> 2597 bytes
-rw-r--r--src/main/res/drawable-xxxhdpi/ic_send_text_offline.pngbin0 -> 1862 bytes
-rw-r--r--src/main/res/drawable-xxxhdpi/ic_send_text_online.pngbin0 -> 2708 bytes
-rw-r--r--src/main/res/drawable-xxxhdpi/ic_send_voice_away.pngbin0 -> 2491 bytes
-rw-r--r--src/main/res/drawable-xxxhdpi/ic_send_voice_dnd.pngbin0 -> 2811 bytes
-rw-r--r--src/main/res/drawable-xxxhdpi/ic_send_voice_offline.pngbin0 -> 2092 bytes
-rw-r--r--src/main/res/drawable-xxxhdpi/ic_send_voice_online.pngbin0 -> 2868 bytes
-rw-r--r--src/main/res/layout/fragment_conversation.xml2
-rw-r--r--src/main/res/values/arrays.xml15
-rw-r--r--src/main/res/values/strings.xml813
-rw-r--r--src/main/res/xml/preferences.xml8
117 files changed, 625 insertions, 511 deletions
diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java
index aec755fc..a76efbc3 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 5b1e9b4d..37ae00a3 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<Message> 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();
}
- public void updateSendButton() {
- Conversation c = this.conversation;
- if (activity.useSendButtonToIndicateStatus() && c != null
- && c.getAccount().getStatus() == Account.State.ONLINE) {
- if (c.getMode() == Conversation.MODE_SINGLE) {
- switch (c.getContact().getMostAvailableStatus()) {
+ 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:
- 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;
+ return R.drawable.ic_send_text_online;
case Presences.AWAY:
- this.mSendButton
- .setImageResource(R.drawable.ic_action_send_now_away);
- break;
+ return R.drawable.ic_send_text_away;
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);
+ 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() {
+ 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:
- this.mSendButton
- .setImageResource(R.drawable.ic_action_send_now_offline);
+ action = SendButtonAction.TEXT;
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);
- }
} else {
- this.mSendButton
- .setImageResource(R.drawable.ic_action_send_now_offline);
+ action = SendButtonAction.TEXT;
+ }
+ }
+ if (activity.useSendButtonToIndicateStatus() && c != null
+ && c.getAccount().getStatus() == Account.State.ONLINE) {
+ if (c.getMode() == Conversation.MODE_SINGLE) {
+ status = c.getContact().getMostAvailableStatus();
+ } else {
+ 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 505cbe63..00000000
--- a/src/main/res/drawable-hdpi/ic_action_send_now_away.png
+++ /dev/null
Binary files 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 a376524d..00000000
--- a/src/main/res/drawable-hdpi/ic_action_send_now_dnd.png
+++ /dev/null
Binary files 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 d4d2d510..00000000
--- a/src/main/res/drawable-hdpi/ic_action_send_now_offline.png
+++ /dev/null
Binary files 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 48676f7b..00000000
--- a/src/main/res/drawable-hdpi/ic_action_send_now_online.png
+++ /dev/null
Binary files differ
diff --git a/src/main/res/drawable-hdpi/ic_launcher.png b/src/main/res/drawable-hdpi/ic_launcher.png
index bffc1c65..25fc8591 100644
--- a/src/main/res/drawable-hdpi/ic_launcher.png
+++ b/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/src/main/res/drawable-hdpi/ic_notification.png b/src/main/res/drawable-hdpi/ic_notification.png
index c466a7b1..31c0ee1a 100644
--- a/src/main/res/drawable-hdpi/ic_notification.png
+++ b/src/main/res/drawable-hdpi/ic_notification.png
Binary files differ
diff --git a/src/main/res/drawable-hdpi/ic_received_indicator.png b/src/main/res/drawable-hdpi/ic_received_indicator.png
index b1e3f274..4d2eab56 100644
--- a/src/main/res/drawable-hdpi/ic_received_indicator.png
+++ b/src/main/res/drawable-hdpi/ic_received_indicator.png
Binary files 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 00000000..d139818b
--- /dev/null
+++ b/src/main/res/drawable-hdpi/ic_send_location_away.png
Binary files 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 00000000..3bcbe18a
--- /dev/null
+++ b/src/main/res/drawable-hdpi/ic_send_location_dnd.png
Binary files 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 00000000..4aec18af
--- /dev/null
+++ b/src/main/res/drawable-hdpi/ic_send_location_offline.png
Binary files 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 00000000..19ddc51e
--- /dev/null
+++ b/src/main/res/drawable-hdpi/ic_send_location_online.png
Binary files 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 00000000..f6beb23c
--- /dev/null
+++ b/src/main/res/drawable-hdpi/ic_send_photo_away.png
Binary files 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 00000000..2eb85679
--- /dev/null
+++ b/src/main/res/drawable-hdpi/ic_send_photo_dnd.png
Binary files 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 00000000..046f989b
--- /dev/null
+++ b/src/main/res/drawable-hdpi/ic_send_photo_offline.png
Binary files 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 00000000..3fd20d10
--- /dev/null
+++ b/src/main/res/drawable-hdpi/ic_send_photo_online.png
Binary files 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 00000000..d9ef99c5
--- /dev/null
+++ b/src/main/res/drawable-hdpi/ic_send_text_away.png
Binary files 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 00000000..706b6505
--- /dev/null
+++ b/src/main/res/drawable-hdpi/ic_send_text_dnd.png
Binary files 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 00000000..0f23fdbb
--- /dev/null
+++ b/src/main/res/drawable-hdpi/ic_send_text_offline.png
Binary files 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 00000000..305f1ec2
--- /dev/null
+++ b/src/main/res/drawable-hdpi/ic_send_text_online.png
Binary files 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 00000000..e87d9751
--- /dev/null
+++ b/src/main/res/drawable-hdpi/ic_send_voice_away.png
Binary files 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 00000000..50184ee8
--- /dev/null
+++ b/src/main/res/drawable-hdpi/ic_send_voice_dnd.png
Binary files 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 00000000..68ce48b8
--- /dev/null
+++ b/src/main/res/drawable-hdpi/ic_send_voice_offline.png
Binary files 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 00000000..bfd7dfa7
--- /dev/null
+++ b/src/main/res/drawable-hdpi/ic_send_voice_online.png
Binary files 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 0fdca901..00000000
--- a/src/main/res/drawable-mdpi/ic_action_send_now_away.png
+++ /dev/null
Binary files 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 c0aef36c..00000000
--- a/src/main/res/drawable-mdpi/ic_action_send_now_dnd.png
+++ /dev/null
Binary files 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 7723f4aa..00000000
--- a/src/main/res/drawable-mdpi/ic_action_send_now_offline.png
+++ /dev/null
Binary files 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 39d00ee4..00000000
--- a/src/main/res/drawable-mdpi/ic_action_send_now_online.png
+++ /dev/null
Binary files differ
diff --git a/src/main/res/drawable-mdpi/ic_launcher.png b/src/main/res/drawable-mdpi/ic_launcher.png
index 063ee15d..733e9615 100644
--- a/src/main/res/drawable-mdpi/ic_launcher.png
+++ b/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/src/main/res/drawable-mdpi/ic_notification.png b/src/main/res/drawable-mdpi/ic_notification.png
index fa35b7c1..aafc54f5 100644
--- a/src/main/res/drawable-mdpi/ic_notification.png
+++ b/src/main/res/drawable-mdpi/ic_notification.png
Binary files differ
diff --git a/src/main/res/drawable-mdpi/ic_received_indicator.png b/src/main/res/drawable-mdpi/ic_received_indicator.png
index 88ff1efb..2ba92b69 100644
--- a/src/main/res/drawable-mdpi/ic_received_indicator.png
+++ b/src/main/res/drawable-mdpi/ic_received_indicator.png
Binary files 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 00000000..821e80d2
--- /dev/null
+++ b/src/main/res/drawable-mdpi/ic_send_location_away.png
Binary files 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 00000000..92e68ee3
--- /dev/null
+++ b/src/main/res/drawable-mdpi/ic_send_location_dnd.png
Binary files 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 00000000..ff11a080
--- /dev/null
+++ b/src/main/res/drawable-mdpi/ic_send_location_offline.png
Binary files 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 00000000..a0eb4018
--- /dev/null
+++ b/src/main/res/drawable-mdpi/ic_send_location_online.png
Binary files 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 00000000..d9c1f266
--- /dev/null
+++ b/src/main/res/drawable-mdpi/ic_send_photo_away.png
Binary files 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 00000000..7b6700d6
--- /dev/null
+++ b/src/main/res/drawable-mdpi/ic_send_photo_dnd.png
Binary files 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 00000000..f3e6e1fa
--- /dev/null
+++ b/src/main/res/drawable-mdpi/ic_send_photo_offline.png
Binary files 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 00000000..0aaab38d
--- /dev/null
+++ b/src/main/res/drawable-mdpi/ic_send_photo_online.png
Binary files 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 00000000..ddd983b5
--- /dev/null
+++ b/src/main/res/drawable-mdpi/ic_send_text_away.png
Binary files 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 00000000..92df9d3d
--- /dev/null
+++ b/src/main/res/drawable-mdpi/ic_send_text_dnd.png
Binary files 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 00000000..72b9da27
--- /dev/null
+++ b/src/main/res/drawable-mdpi/ic_send_text_offline.png
Binary files 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 00000000..86d1e330
--- /dev/null
+++ b/src/main/res/drawable-mdpi/ic_send_text_online.png
Binary files 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 00000000..943f690f
--- /dev/null
+++ b/src/main/res/drawable-mdpi/ic_send_voice_away.png
Binary files 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 00000000..ef25b1c4
--- /dev/null
+++ b/src/main/res/drawable-mdpi/ic_send_voice_dnd.png
Binary files 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 00000000..e6b2355f
--- /dev/null
+++ b/src/main/res/drawable-mdpi/ic_send_voice_offline.png
Binary files 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 00000000..bd0e1f87
--- /dev/null
+++ b/src/main/res/drawable-mdpi/ic_send_voice_online.png
Binary files 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 bb999d85..00000000
--- a/src/main/res/drawable-xhdpi/ic_action_send_now_away.png
+++ /dev/null
Binary files 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 a0bf5561..00000000
--- a/src/main/res/drawable-xhdpi/ic_action_send_now_dnd.png
+++ /dev/null
Binary files 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 6da9ff7b..00000000
--- a/src/main/res/drawable-xhdpi/ic_action_send_now_offline.png
+++ /dev/null
Binary files 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 348ba657..00000000
--- a/src/main/res/drawable-xhdpi/ic_action_send_now_online.png
+++ /dev/null
Binary files differ
diff --git a/src/main/res/drawable-xhdpi/ic_launcher.png b/src/main/res/drawable-xhdpi/ic_launcher.png
index fd9937f1..c9e48859 100644
--- a/src/main/res/drawable-xhdpi/ic_launcher.png
+++ b/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/src/main/res/drawable-xhdpi/ic_notification.png b/src/main/res/drawable-xhdpi/ic_notification.png
index 43daff65..042d2cda 100644
--- a/src/main/res/drawable-xhdpi/ic_notification.png
+++ b/src/main/res/drawable-xhdpi/ic_notification.png
Binary files differ
diff --git a/src/main/res/drawable-xhdpi/ic_received_indicator.png b/src/main/res/drawable-xhdpi/ic_received_indicator.png
index 2c871933..cf7c2bb8 100644
--- a/src/main/res/drawable-xhdpi/ic_received_indicator.png
+++ b/src/main/res/drawable-xhdpi/ic_received_indicator.png
Binary files 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 00000000..0a5f3d54
--- /dev/null
+++ b/src/main/res/drawable-xhdpi/ic_send_location_away.png
Binary files 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 00000000..90ce346c
--- /dev/null
+++ b/src/main/res/drawable-xhdpi/ic_send_location_dnd.png
Binary files 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 00000000..114ce01b
--- /dev/null
+++ b/src/main/res/drawable-xhdpi/ic_send_location_offline.png
Binary files 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 00000000..17204eea
--- /dev/null
+++ b/src/main/res/drawable-xhdpi/ic_send_location_online.png
Binary files 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 00000000..7ac674ea
--- /dev/null
+++ b/src/main/res/drawable-xhdpi/ic_send_photo_away.png
Binary files 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 00000000..2c37db74
--- /dev/null
+++ b/src/main/res/drawable-xhdpi/ic_send_photo_dnd.png
Binary files 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 00000000..6ef1e16a
--- /dev/null
+++ b/src/main/res/drawable-xhdpi/ic_send_photo_offline.png
Binary files 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 00000000..f585ef98
--- /dev/null
+++ b/src/main/res/drawable-xhdpi/ic_send_photo_online.png
Binary files 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 00000000..41f223f6
--- /dev/null
+++ b/src/main/res/drawable-xhdpi/ic_send_text_away.png
Binary files 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 00000000..0a749f8d
--- /dev/null
+++ b/src/main/res/drawable-xhdpi/ic_send_text_dnd.png
Binary files 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 00000000..d0a98e5d
--- /dev/null
+++ b/src/main/res/drawable-xhdpi/ic_send_text_offline.png
Binary files 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 00000000..91d240d2
--- /dev/null
+++ b/src/main/res/drawable-xhdpi/ic_send_text_online.png
Binary files 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 00000000..34f8ea86
--- /dev/null
+++ b/src/main/res/drawable-xhdpi/ic_send_voice_away.png
Binary files 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 00000000..cea4212a
--- /dev/null
+++ b/src/main/res/drawable-xhdpi/ic_send_voice_dnd.png
Binary files 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 00000000..fc4cff1f
--- /dev/null
+++ b/src/main/res/drawable-xhdpi/ic_send_voice_offline.png
Binary files 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 00000000..d2f03dd5
--- /dev/null
+++ b/src/main/res/drawable-xhdpi/ic_send_voice_online.png
Binary files 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 12ec4d33..00000000
--- a/src/main/res/drawable-xxhdpi/ic_action_send_now_away.png
+++ /dev/null
Binary files 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 7719f81a..00000000
--- a/src/main/res/drawable-xxhdpi/ic_action_send_now_dnd.png
+++ /dev/null
Binary files 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 18895813..00000000
--- a/src/main/res/drawable-xxhdpi/ic_action_send_now_offline.png
+++ /dev/null
Binary files 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 29bde36e..00000000
--- a/src/main/res/drawable-xxhdpi/ic_action_send_now_online.png
+++ /dev/null
Binary files differ
diff --git a/src/main/res/drawable-xxhdpi/ic_launcher.png b/src/main/res/drawable-xxhdpi/ic_launcher.png
index 0e06656f..e69b9c8d 100644
--- a/src/main/res/drawable-xxhdpi/ic_launcher.png
+++ b/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/src/main/res/drawable-xxhdpi/ic_notification.png b/src/main/res/drawable-xxhdpi/ic_notification.png
index c2ee5dec..42c62d32 100644
--- a/src/main/res/drawable-xxhdpi/ic_notification.png
+++ b/src/main/res/drawable-xxhdpi/ic_notification.png
Binary files differ
diff --git a/src/main/res/drawable-xxhdpi/ic_received_indicator.png b/src/main/res/drawable-xxhdpi/ic_received_indicator.png
index 039a9ef9..5d1c9b87 100644
--- a/src/main/res/drawable-xxhdpi/ic_received_indicator.png
+++ b/src/main/res/drawable-xxhdpi/ic_received_indicator.png
Binary files 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 00000000..4fb370ff
--- /dev/null
+++ b/src/main/res/drawable-xxhdpi/ic_send_location_away.png
Binary files 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 00000000..ea3d1502
--- /dev/null
+++ b/src/main/res/drawable-xxhdpi/ic_send_location_dnd.png
Binary files 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 00000000..b4317aae
--- /dev/null
+++ b/src/main/res/drawable-xxhdpi/ic_send_location_offline.png
Binary files 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 00000000..10dfed81
--- /dev/null
+++ b/src/main/res/drawable-xxhdpi/ic_send_location_online.png
Binary files 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 00000000..78eea39e
--- /dev/null
+++ b/src/main/res/drawable-xxhdpi/ic_send_photo_away.png
Binary files 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 00000000..09c11a81
--- /dev/null
+++ b/src/main/res/drawable-xxhdpi/ic_send_photo_dnd.png
Binary files 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 00000000..6b41c3bd
--- /dev/null
+++ b/src/main/res/drawable-xxhdpi/ic_send_photo_offline.png
Binary files 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 00000000..1c8992c5
--- /dev/null
+++ b/src/main/res/drawable-xxhdpi/ic_send_photo_online.png
Binary files 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 00000000..2b2b0793
--- /dev/null
+++ b/src/main/res/drawable-xxhdpi/ic_send_text_away.png
Binary files 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 00000000..0d7e7053
--- /dev/null
+++ b/src/main/res/drawable-xxhdpi/ic_send_text_dnd.png
Binary files 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 00000000..6bd9c414
--- /dev/null
+++ b/src/main/res/drawable-xxhdpi/ic_send_text_offline.png
Binary files 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 00000000..cb6a2dba
--- /dev/null
+++ b/src/main/res/drawable-xxhdpi/ic_send_text_online.png
Binary files 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 00000000..b8b9e807
--- /dev/null
+++ b/src/main/res/drawable-xxhdpi/ic_send_voice_away.png
Binary files 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 00000000..a5151331
--- /dev/null
+++ b/src/main/res/drawable-xxhdpi/ic_send_voice_dnd.png
Binary files 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 00000000..3d58f699
--- /dev/null
+++ b/src/main/res/drawable-xxhdpi/ic_send_voice_offline.png
Binary files 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 00000000..600371eb
--- /dev/null
+++ b/src/main/res/drawable-xxhdpi/ic_send_voice_online.png
Binary files differ
diff --git a/src/main/res/drawable-xxxhdpi/ic_launcher.png b/src/main/res/drawable-xxxhdpi/ic_launcher.png
index b6dcb0b9..668504df 100644
--- a/src/main/res/drawable-xxxhdpi/ic_launcher.png
+++ b/src/main/res/drawable-xxxhdpi/ic_launcher.png
Binary files differ
diff --git a/src/main/res/drawable-xxxhdpi/ic_notification.png b/src/main/res/drawable-xxxhdpi/ic_notification.png
index ee2f3a43..c3439f1a 100644
--- a/src/main/res/drawable-xxxhdpi/ic_notification.png
+++ b/src/main/res/drawable-xxxhdpi/ic_notification.png
Binary files differ
diff --git a/src/main/res/drawable-xxxhdpi/ic_received_indicator.png b/src/main/res/drawable-xxxhdpi/ic_received_indicator.png
index 86db9890..f35c8b44 100644
--- a/src/main/res/drawable-xxxhdpi/ic_received_indicator.png
+++ b/src/main/res/drawable-xxxhdpi/ic_received_indicator.png
Binary files 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 00000000..0fab2554
--- /dev/null
+++ b/src/main/res/drawable-xxxhdpi/ic_send_location_away.png
Binary files 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 00000000..08e2b39b
--- /dev/null
+++ b/src/main/res/drawable-xxxhdpi/ic_send_location_dnd.png
Binary files 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 00000000..2af75cde
--- /dev/null
+++ b/src/main/res/drawable-xxxhdpi/ic_send_location_offline.png
Binary files 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 00000000..2e54ef89
--- /dev/null
+++ b/src/main/res/drawable-xxxhdpi/ic_send_location_online.png
Binary files 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 00000000..ba171ce1
--- /dev/null
+++ b/src/main/res/drawable-xxxhdpi/ic_send_photo_away.png
Binary files 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 00000000..fccb32dc
--- /dev/null
+++ b/src/main/res/drawable-xxxhdpi/ic_send_photo_dnd.png
Binary files 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 00000000..e94e930d
--- /dev/null
+++ b/src/main/res/drawable-xxxhdpi/ic_send_photo_offline.png
Binary files 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 00000000..1bf680eb
--- /dev/null
+++ b/src/main/res/drawable-xxxhdpi/ic_send_photo_online.png
Binary files 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 00000000..afcfa89d
--- /dev/null
+++ b/src/main/res/drawable-xxxhdpi/ic_send_text_away.png
Binary files 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 00000000..929a33a4
--- /dev/null
+++ b/src/main/res/drawable-xxxhdpi/ic_send_text_dnd.png
Binary files 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 00000000..b9122e45
--- /dev/null
+++ b/src/main/res/drawable-xxxhdpi/ic_send_text_offline.png
Binary files 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 00000000..abec2e0b
--- /dev/null
+++ b/src/main/res/drawable-xxxhdpi/ic_send_text_online.png
Binary files 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 00000000..de1375e2
--- /dev/null
+++ b/src/main/res/drawable-xxxhdpi/ic_send_voice_away.png
Binary files 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 00000000..8ac667be
--- /dev/null
+++ b/src/main/res/drawable-xxxhdpi/ic_send_voice_dnd.png
Binary files 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 00000000..eec3d8f2
--- /dev/null
+++ b/src/main/res/drawable-xxxhdpi/ic_send_voice_offline.png
Binary files 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 00000000..fcdfcb43
--- /dev/null
+++ b/src/main/res/drawable-xxxhdpi/ic_send_voice_online.png
Binary files differ
diff --git a/src/main/res/layout/fragment_conversation.xml b/src/main/res/layout/fragment_conversation.xml
index f9aae10a..5aa7dffa 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" />
</RelativeLayout>
<RelativeLayout
diff --git a/src/main/res/values/arrays.xml b/src/main/res/values/arrays.xml
index c413a3c4..fec077cc 100644
--- a/src/main/res/values/arrays.xml
+++ b/src/main/res/values/arrays.xml
@@ -40,4 +40,19 @@
<item>-1</item>
</integer-array>
+ <string-array name="quick_actions">
+ <item>@string/none</item>
+ <item>@string/recently_used</item>
+ <item>@string/attach_take_picture</item>
+ <item>@string/attach_record_voice</item>
+ <item>@string/send_location</item>
+ </string-array>
+
+ <string-array name="quick_action_values">
+ <item>none</item>
+ <item>recent</item>
+ <item>photo</item>
+ <item>voice</item>
+ <item>location</item>
+ </string-array>
</resources>
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index cc7727d2..4631bd60 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -1,397 +1,397 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
- <string name="app_name" translatable="false">Conversations</string>
- <string name="action_settings">Settings</string>
- <string name="action_add">New conversation</string>
- <string name="action_accounts">Manage accounts</string>
- <string name="action_end_conversation">End this conversation</string>
- <string name="action_contact_details">Contact details</string>
- <string name="action_muc_details">Conference details</string>
- <string name="action_secure">Secure conversation</string>
- <string name="action_add_account">Add account</string>
- <string name="action_edit_contact">Edit name</string>
- <string name="action_add_phone_book">Add to phone book</string>
- <string name="action_delete_contact">Delete from roster</string>
- <string name="action_block_contact">Block contact</string>
- <string name="action_unblock_contact">Unblock contact</string>
- <string name="action_block_domain">Block domain</string>
- <string name="action_unblock_domain">Unblock domain</string>
- <string name="title_activity_manage_accounts">Manage Accounts</string>
- <string name="title_activity_settings">Settings</string>
- <string name="title_activity_conference_details">Conference Details</string>
- <string name="title_activity_contact_details">Contact Details</string>
- <string name="title_activity_sharewith">Share with Conversation</string>
- <string name="title_activity_start_conversation">Start Conversation</string>
- <string name="title_activity_choose_contact">Choose contact</string>
- <string name="title_activity_block_list">Block list</string>
- <string name="just_now">just now</string>
- <string name="minute_ago">1 min ago</string>
- <string name="minutes_ago">%d mins ago</string>
- <string name="unread_conversations">unread Conversations</string>
- <string name="sending">sending…</string>
- <string name="encrypted_message">Decrypting message. Please wait…</string>
- <string name="nick_in_use">Nickname is already in use</string>
- <string name="admin">Admin</string>
- <string name="owner">Owner</string>
- <string name="moderator">Moderator</string>
- <string name="participant">Participant</string>
- <string name="visitor">Visitor</string>
- <string name="remove_contact_text">Would you like to remove %s from your roster? The conversation associated with this contact will not be removed.</string>
- <string name="block_contact_text">Would you like to block %s from sending you messages?</string>
- <string name="unblock_contact_text">Would you like to unblock %s and allow them to send you messages?</string>
- <string name="block_domain_text">Block all contacts from %s?</string>
- <string name="unblock_domain_text">Unblock all contacts from %s?</string>
- <string name="contact_blocked">Contact blocked</string>
- <string name="remove_bookmark_text">Would you like to remove %s as a bookmark? The conversation associated with this bookmark will not be removed.</string>
- <string name="register_account">Register new account on server</string>
- <string name="change_password_on_server">Change password on server</string>
- <string name="share_with">Share with…</string>
- <string name="start_conversation">Start Conversation</string>
- <string name="invite_contact">Invite Contact</string>
- <string name="contacts">Contacts</string>
- <string name="cancel">Cancel</string>
- <string name="set">Set</string>
- <string name="add">Add</string>
- <string name="edit">Edit</string>
- <string name="delete">Delete</string>
- <string name="block">Block</string>
- <string name="unblock">Unblock</string>
- <string name="save">Save</string>
- <string name="ok">OK</string>
- <string name="crash_report_title">Conversations has crashed</string>
- <string name="crash_report_message">By sending in stack traces you are helping the ongoing development of Conversations\n<b>Warning:</b> This will use your XMPP account to send the stack trace to the developer.</string>
- <string name="send_now">Send now</string>
- <string name="send_never">Never ask again</string>
- <string name="problem_connecting_to_account">Unable to connect to account</string>
- <string name="problem_connecting_to_accounts">Unable to connect to multiple accounts</string>
- <string name="touch_to_fix">Touch here to manage your accounts</string>
- <string name="attach_file">Attach file</string>
- <string name="not_in_roster">The contact is not in your roster. Would you like to add it?</string>
- <string name="add_contact">Add contact</string>
- <string name="send_failed">delivery failed</string>
- <string name="send_rejected">rejected</string>
- <string name="preparing_image">Preparing image for transmission</string>
- <string name="action_clear_history">Clear history</string>
- <string name="clear_conversation_history">Clear Conversation History</string>
- <string name="clear_histor_msg">Do you want to delete all messages within this Conversation?\n\n<b>Warning:</b> This will not influence messages stored on other devices or servers.</string>
- <string name="delete_messages">Delete messages</string>
- <string name="also_end_conversation">End this conversations afterwards</string>
- <string name="choose_presence">Choose presence to contact</string>
- <string name="send_plain_text_message">Send plain text message</string>
- <string name="send_otr_message">Send OTR encrypted message</string>
- <string name="send_pgp_message">Send OpenPGP encrypted message</string>
- <string name="your_nick_has_been_changed">Your nickname has been changed</string>
- <string name="download_image">Download Image</string>
- <string name="send_unencrypted">Send unencrypted</string>
- <string name="decryption_failed">Decryption failed. Maybe you don’t have the proper private key.</string>
- <string name="openkeychain_required">OpenKeychain</string>
- <string name="openkeychain_required_long">Conversations utilizes a third party app called <b>OpenKeychain</b> 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<small>(Please restart Conversations afterwards.)</small></string>
- <string name="restart">Restart</string>
- <string name="install">Install</string>
- <string name="offering">offering…</string>
- <string name="waiting">waiting…</string>
- <string name="no_pgp_key">No OpenPGP Key found</string>
- <string name="contact_has_no_pgp_key">Conversations is unable to encrypt your messages because your contact is not announcing his or hers public key.\n\n<small>Please ask your contact to setup OpenPGP.</small></string>
- <string name="no_pgp_keys">No OpenPGP Keys found</string>
- <string name="contacts_have_no_pgp_keys">Conversations is unable to encrypt your messages because your contacts are not announcing their public key.\n\n<small>Please ask your contacts to setup OpenPGP.</small></string>
- <string name="encrypted_message_received"><i>Encrypted message received. Touch to view and decrypt.</i></string>
- <string name="pref_general">General</string>
- <string name="pref_xmpp_resource">XMPP resource</string>
- <string name="pref_xmpp_resource_summary">The name this client identifies itself with</string>
- <string name="pref_accept_files">Accept files</string>
- <string name="pref_accept_files_summary">Automatically accept files smaller than…</string>
- <string name="pref_notification_settings">Notification Settings</string>
- <string name="pref_notifications">Notifications</string>
- <string name="pref_notifications_summary">Notify when a new message arrives</string>
- <string name="pref_vibrate">Vibrate</string>
- <string name="pref_vibrate_summary">Also vibrate when a new message arrives</string>
- <string name="pref_sound">Sound</string>
- <string name="pref_sound_summary">Play ringtone with notification</string>
- <string name="pref_conference_notifications">Conference notifications</string>
- <string name="pref_conference_notifications_summary">Always notify when a new conference message arrives instead of only when highlighted</string>
- <string name="pref_notification_grace_period">Notification grace period</string>
- <string name="pref_notification_grace_period_summary">Disable notifications for a short time after a carbon copy was received</string>
- <string name="pref_advanced_options">Advanced Options</string>
- <string name="pref_never_send_crash">Never send crash reports</string>
- <string name="pref_never_send_crash_summary">By sending in stack traces you are helping the ongoing development of Conversations</string>
- <string name="pref_confirm_messages">Confirm Messages</string>
- <string name="pref_confirm_messages_summary">Let your contact know when you have received and read a message</string>
- <string name="pref_ui_options">UI Options</string>
- <string name="openpgp_error">OpenKeychain reported an error</string>
- <string name="error_decrypting_file">I/O Error decrypting file</string>
- <string name="accept">Accept</string>
- <string name="error">An error has occurred</string>
- <string name="pref_grant_presence_updates">Grant presence updates</string>
- <string name="pref_grant_presence_updates_summary">Preemptively grant and ask for presence subscription for contacts you created</string>
- <string name="subscriptions">Subscriptions</string>
- <string name="your_account">Your account</string>
- <string name="keys">Keys</string>
- <string name="send_presence_updates">Send presence updates</string>
- <string name="receive_presence_updates">Receive presence updates</string>
- <string name="ask_for_presence_updates">Ask for presence updates</string>
- <string name="attach_choose_picture">Choose picture</string>
- <string name="attach_take_picture">Take picture</string>
- <string name="preemptively_grant">Preemptively grant subscription request</string>
- <string name="error_not_an_image_file">The file you selected is not an image</string>
- <string name="error_compressing_image">Error while converting the image file</string>
- <string name="error_file_not_found">File not found</string>
- <string name="error_io_exception">General I/O error. Maybe you ran out of storage space?</string>
- <string name="error_security_exception_during_image_copy">The app you used to select this image did not provide us with enough permissions to read the file.\n\n<small>Use a different file manager to choose an image</small></string>
- <string name="account_status_unknown">Unknown</string>
- <string name="account_status_disabled">Temporarily disabled</string>
- <string name="account_status_online">Online</string>
- <string name="account_status_connecting">Connecting\u2026</string>
- <string name="account_status_offline">Offline</string>
- <string name="account_status_unauthorized">Unauthorized</string>
- <string name="account_status_not_found">Server not found</string>
- <string name="account_status_no_internet">No connectivity</string>
- <string name="account_status_regis_fail">Registration failed</string>
- <string name="account_status_regis_conflict">Username already in use</string>
- <string name="account_status_regis_success">Registration completed</string>
- <string name="account_status_regis_not_sup">Server does not support registration</string>
- <string name="account_status_security_error">Security error</string>
- <string name="account_status_incompatible_server">Incompatible server</string>
- <string name="encryption_choice_none">Plain text</string>
- <string name="encryption_choice_otr">OTR</string>
- <string name="encryption_choice_pgp">OpenPGP</string>
- <string name="mgmt_account_edit">Edit account</string>
- <string name="mgmt_account_delete">Delete account</string>
- <string name="mgmt_account_disable">Temporarily disable</string>
- <string name="mgmt_account_publish_avatar">Publish avatar</string>
- <string name="mgmt_account_publish_pgp">Publish OpenPGP public key</string>
- <string name="mgmt_account_enable">Enable account</string>
- <string name="mgmt_account_are_you_sure">Are you sure?</string>
- <string name="mgmt_account_delete_confirm_text">If you delete your account your entire conversation history will be lost</string>
- <string name="attach_record_voice">Record voice</string>
- <string name="account_settings_jabber_id">Jabber ID</string>
- <string name="account_settings_password">Password</string>
- <string name="account_settings_example_jabber_id">username@example.com</string>
- <string name="account_settings_confirm_password">Confirm password</string>
- <string name="password">Password</string>
- <string name="confirm_password">Confirm password</string>
- <string name="passwords_do_not_match">Passwords do not match</string>
- <string name="invalid_jid">This is not a valid Jabber ID</string>
- <string name="error_out_of_memory">Out of memory. Image is too large</string>
- <string name="add_phone_book_text">Do you want to add %s to your phones contact list?</string>
- <string name="contact_status_online">online</string>
- <string name="contact_status_free_to_chat">free to chat</string>
- <string name="contact_status_away">away</string>
- <string name="contact_status_extended_away">extended away</string>
- <string name="contact_status_do_not_disturb">do not disturb</string>
- <string name="contact_status_offline">offline</string>
- <string name="muc_details_conference">Conference</string>
- <string name="muc_details_other_members">Other Members</string>
- <string name="server_info_show_more">Server info</string>
- <string name="server_info_mam">XEP-0313: MAM</string>
- <string name="server_info_carbon_messages">XEP-0280: Message Carbons</string>
- <string name="server_info_csi">XEP-0352: Client State Indication</string>
- <string name="server_info_blocking">XEP-0191: Blocking Command</string>
- <string name="server_info_roster_version">XEP-0237: Roster Versioning</string>
- <string name="server_info_stream_management">XEP-0198: Stream Management</string>
- <string name="server_info_pep">XEP-0163: PEP (Avatars)</string>
- <string name="server_info_available">available</string>
- <string name="server_info_unavailable">unavailable</string>
- <string name="missing_public_keys">Missing public key announcements</string>
- <string name="last_seen_now">last seen just now</string>
- <string name="last_seen_min">last seen 1 minute ago</string>
- <string name="last_seen_mins">last seen %d minutes ago</string>
- <string name="last_seen_hour">last seen 1 hour ago</string>
- <string name="last_seen_hours">last seen %d hours ago</string>
- <string name="last_seen_day">last seen 1 day ago</string>
- <string name="last_seen_days">last seen %d days ago</string>
- <string name="never_seen">never seen</string>
- <string name="install_openkeychain">Encrypted message. Please install OpenKeychain to decrypt.</string>
- <string name="unknown_otr_fingerprint">Unknown OTR fingerprint</string>
- <string name="openpgp_messages_found">OpenPGP encrypted messages found</string>
- <string name="reception_failed">Reception failed</string>
- <string name="your_fingerprint">Your fingerprint</string>
- <string name="otr_fingerprint">OTR fingerprint</string>
- <string name="verify">Verify</string>
- <string name="decrypt">Decrypt</string>
- <string name="conferences">Conferences</string>
- <string name="search">Search</string>
- <string name="create_contact">Create Contact</string>
- <string name="join_conference">Join Conference</string>
- <string name="delete_contact">Delete Contact</string>
- <string name="view_contact_details">View contact details</string>
- <string name="block_contact">Block contact</string>
- <string name="unblock_contact">Unblock contact</string>
- <string name="create">Create</string>
- <string name="contact_already_exists">The contact already exists</string>
- <string name="join">Join</string>
- <string name="conference_address">Conference address</string>
- <string name="conference_address_example">room@conference.example.com</string>
- <string name="save_as_bookmark">Save as bookmark</string>
- <string name="delete_bookmark">Delete bookmark</string>
- <string name="bookmark_already_exists">This bookmark already exists</string>
- <string name="you">You</string>
- <string name="action_edit_subject">Edit conference subject</string>
- <string name="conference_not_found">Conference not found</string>
- <string name="leave">Leave</string>
- <string name="contact_added_you">Contact added you to contact list</string>
- <string name="add_back">Add back</string>
- <string name="contact_has_read_up_to_this_point">%s has read up to this point</string>
- <string name="publish">Publish</string>
- <string name="touch_to_choose_picture">Touch avatar to select picture from gallery</string>
- <string name="publish_avatar_explanation">Please note: Everyone subscribed to your presence updates will be allowed to see this picture.</string>
- <string name="publishing">Publishing…</string>
- <string name="error_publish_avatar_server_reject">The server rejected your publication</string>
- <string name="error_publish_avatar_converting">Something went wrong while converting your picture</string>
- <string name="error_saving_avatar">Could not save avatar to disk</string>
- <string name="or_long_press_for_default">(Or long press to bring back default)</string>
- <string name="error_publish_avatar_no_server_support">Your server does not support the publication of avatars</string>
- <string name="private_message">whispered</string>
- <string name="private_message_to">to %s</string>
- <string name="send_private_message_to">Send private message to %s</string>
- <string name="connect">Connect</string>
- <string name="account_already_exists">This account already exists</string>
- <string name="next">Next</string>
- <string name="server_info_session_established">Current session established</string>
- <string name="additional_information">Additional Information</string>
- <string name="skip">Skip</string>
- <string name="disable_notifications">Disable notifications</string>
- <string name="disable_notifications_for_this_conversation">Disable notifications for this conversation</string>
- <string name="notifications_disabled">Notifications are disabled</string>
- <string name="enable">Enable</string>
- <string name="conference_requires_password">Conference requires password</string>
- <string name="enter_password">Enter password</string>
- <string name="missing_presence_updates">Missing presence updates from contact</string>
- <string name="request_presence_updates">Please request presence updates from your contact first.\n\n<small>This will be used to determine what client(s) your contact is using.</small></string>
- <string name="request_now">Request now</string>
- <string name="delete_fingerprint">Delete Fingerprint</string>
- <string name="sure_delete_fingerprint">Are you sure you would like to delete this fingerprint?</string>
- <string name="ignore">Ignore</string>
- <string name="without_mutual_presence_updates"><b>Warning:</b> Sending this without mutual presence updates could cause unexpected problems.\n\n<small>Go to contact details to verify your presence subscriptions.</small></string>
- <string name="pref_encryption_settings">Encryption settings</string>
- <string name="pref_force_encryption">Force end-to-end encryption</string>
- <string name="pref_force_encryption_summary">Always send messages encrypted (except for conferences)</string>
- <string name="pref_dont_save_encrypted">Don’t save encrypted messages</string>
- <string name="pref_dont_save_encrypted_summary">Warning: This could lead to message loss</string>
- <string name="pref_expert_options">Expert options</string>
- <string name="pref_expert_options_summary">Please be careful with these</string>
- <string name="title_activity_about">About Conversations</string>
- <string name="pref_about_conversations_summary">Build and licensing information</string>
- <string name="pref_about_message" translatable="false">
- 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)
- </string>
- <string name="title_pref_quiet_hours">Quiet Hours</string>
- <string name="title_pref_quiet_hours_start_time">Start time</string>
- <string name="title_pref_quiet_hours_end_time">End time</string>
- <string name="title_pref_enable_quiet_hours">Enable quiet hours</string>
- <string name="pref_quiet_hours_summary">Notifications will be silenced during quiet hours</string>
- <string name="pref_use_larger_font">Increase font size</string>
- <string name="pref_use_larger_font_summary">Use larger font sizes across the entire app</string>
- <string name="pref_use_send_button_to_indicate_status">Send button indicates status</string>
- <string name="pref_use_indicate_received">Request message receipts</string>
- <string name="pref_use_indicate_received_summary">Received messages will be marked with a green tick if supported</string>
- <string name="pref_use_send_button_to_indicate_status_summary">Colorize send button to indicate contact status</string>
- <string name="pref_expert_options_other">Other</string>
- <string name="pref_conference_name">Conference name</string>
- <string name="pref_conference_name_summary">Use room’s subject instead of JID to identify conferences</string>
- <string name="toast_message_otr_fingerprint">OTR fingerprint copied to clipboard!</string>
- <string name="conference_banned">You are banned from this conference</string>
- <string name="conference_members_only">This conference is members only</string>
- <string name="conference_kicked">You have been kicked from this conference</string>
- <string name="using_account">using account %s</string>
- <string name="checking_image">Checking image on HTTP host</string>
- <string name="image_file_deleted">The image file has been deleted</string>
- <string name="not_connected_try_again">You are not connected. Try again later</string>
- <string name="check_image_filesize">Check image file size</string>
- <string name="message_options">Message options</string>
- <string name="copy_text">Copy text</string>
- <string name="copy_original_url">Copy original URL</string>
- <string name="send_again">Send again</string>
- <string name="image_url">Image URL</string>
- <string name="message_text">Message text</string>
- <string name="url_copied_to_clipboard">URL copied to clipboard</string>
- <string name="message_copied_to_clipboard">Message copied to clipboard</string>
- <string name="image_transmission_failed">Image transmission failed</string>
- <string name="scan_qr_code">Scan QR code</string>
- <string name="show_qr_code">Show QR code</string>
- <string name="show_block_list">Show block list</string>
- <string name="account_details">Account details</string>
- <string name="verify_otr">Verify OTR</string>
- <string name="remote_fingerprint">Remote Fingerprint</string>
- <string name="scan">scan</string>
- <string name="or_touch_phones">(or touch phones)</string>
- <string name="smp">Socialist Millionaire Protocol</string>
- <string name="shared_secret_hint">Hint or Question</string>
- <string name="shared_secret_secret">Shared Secret</string>
- <string name="confirm">Confirm</string>
- <string name="in_progress">In progress</string>
- <string name="respond">Respond</string>
- <string name="failed">Failed</string>
- <string name="secrets_do_not_match">Secrets do not match</string>
- <string name="try_again">Try again</string>
- <string name="finish">Finish</string>
- <string name="verified">Verified!</string>
- <string name="smp_requested">Contact requested SMP verification</string>
- <string name="no_otr_session_found">No valid OTR session has been found!</string>
- <string name="conversations_foreground_service">Conversations</string>
- <string name="pref_keep_foreground_service">Keep service in foreground</string>
- <string name="pref_keep_foreground_service_summary">Prevents the operating system from killing your connection</string>
- <string name="choose_file">Choose file</string>
- <string name="receiving_x_file">Receiving %1$s (%2$d%% completed)</string>
- <string name="download_x_file">Download %s</string>
- <string name="file">file</string>
- <string name="open_x_file">Open %s</string>
- <string name="sending_file">sending (%1$d%% completed)</string>
- <string name="preparing_file">Preparing file for transmission</string>
- <string name="x_file_offered_for_download">%s offered for download</string>
- <string name="cancel_transmission">Cancel transmission</string>
- <string name="file_transmission_failed">file transmission failed</string>
- <string name="file_deleted">The file has been deleted</string>
- <string name="no_application_found_to_open_file">No application found to open file</string>
- <string name="could_not_verify_fingerprint">Could not verify fingerprint</string>
- <string name="manually_verify">Manually verify</string>
- <string name="are_you_sure_verify_fingerprint">Are you sure that you want to verify your contacts OTR fingerprint?</string>
- <string name="pref_show_dynamic_tags">Show dynamic tags</string>
- <string name="pref_show_dynamic_tags_summary">Display read-only tags underneath contacts</string>
- <string name="enable_notifications">Enable notifications</string>
- <string name="conference_with">Create conference with…</string>
- <string name="no_conference_server_found">No conference server found</string>
- <string name="conference_creation_failed">Conference creation failed!</string>
- <string name="conference_created">Conference created!</string>
- <string name="secret_accepted">Secret accepted!</string>
- <string name="reset">Reset</string>
- <string name="account_image_description">Account avatar</string>
- <string name="copy_otr_clipboard_description">Copy OTR fingerprint to clipboard</string>
- <string name="fetching_history_from_server">Fetching history from server</string>
- <string name="no_more_history_on_server">No more history on server</string>
- <string name="updating">Updating…</string>
- <string name="password_changed">Password changed!</string>
- <string name="could_not_change_password">Could not change password</string>
- <string name="otr_session_not_started">Send a message to start an encrypted chat</string>
- <string name="ask_question">Ask question</string>
- <string name="smp_explain_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.</string>
- <string name="smp_explain_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.</string>
- <string name="shared_secret_hint_should_not_be_empty">Your hint should not be empty</string>
- <string name="shared_secret_can_not_be_empty">Your shared secret can not be empty</string>
- <string name="manual_verification_explanation">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.</string>
+ <string name="app_name" translatable="false">Conversations</string>
+ <string name="action_settings">Settings</string>
+ <string name="action_add">New conversation</string>
+ <string name="action_accounts">Manage accounts</string>
+ <string name="action_end_conversation">End this conversation</string>
+ <string name="action_contact_details">Contact details</string>
+ <string name="action_muc_details">Conference details</string>
+ <string name="action_secure">Secure conversation</string>
+ <string name="action_add_account">Add account</string>
+ <string name="action_edit_contact">Edit name</string>
+ <string name="action_add_phone_book">Add to phone book</string>
+ <string name="action_delete_contact">Delete from roster</string>
+ <string name="action_block_contact">Block contact</string>
+ <string name="action_unblock_contact">Unblock contact</string>
+ <string name="action_block_domain">Block domain</string>
+ <string name="action_unblock_domain">Unblock domain</string>
+ <string name="title_activity_manage_accounts">Manage Accounts</string>
+ <string name="title_activity_settings">Settings</string>
+ <string name="title_activity_conference_details">Conference Details</string>
+ <string name="title_activity_contact_details">Contact Details</string>
+ <string name="title_activity_sharewith">Share with Conversation</string>
+ <string name="title_activity_start_conversation">Start Conversation</string>
+ <string name="title_activity_choose_contact">Choose contact</string>
+ <string name="title_activity_block_list">Block list</string>
+ <string name="just_now">just now</string>
+ <string name="minute_ago">1 min ago</string>
+ <string name="minutes_ago">%d mins ago</string>
+ <string name="unread_conversations">unread Conversations</string>
+ <string name="sending">sending…</string>
+ <string name="encrypted_message">Decrypting message. Please wait…</string>
+ <string name="nick_in_use">Nickname is already in use</string>
+ <string name="admin">Admin</string>
+ <string name="owner">Owner</string>
+ <string name="moderator">Moderator</string>
+ <string name="participant">Participant</string>
+ <string name="visitor">Visitor</string>
+ <string name="remove_contact_text">Would you like to remove %s from your roster? The conversation associated with this contact will not be removed.</string>
+ <string name="block_contact_text">Would you like to block %s from sending you messages?</string>
+ <string name="unblock_contact_text">Would you like to unblock %s and allow them to send you messages?</string>
+ <string name="block_domain_text">Block all contacts from %s?</string>
+ <string name="unblock_domain_text">Unblock all contacts from %s?</string>
+ <string name="contact_blocked">Contact blocked</string>
+ <string name="remove_bookmark_text">Would you like to remove %s as a bookmark? The conversation associated with this bookmark will not be removed.</string>
+ <string name="register_account">Register new account on server</string>
+ <string name="change_password_on_server">Change password on server</string>
+ <string name="share_with">Share with…</string>
+ <string name="start_conversation">Start Conversation</string>
+ <string name="invite_contact">Invite Contact</string>
+ <string name="contacts">Contacts</string>
+ <string name="cancel">Cancel</string>
+ <string name="set">Set</string>
+ <string name="add">Add</string>
+ <string name="edit">Edit</string>
+ <string name="delete">Delete</string>
+ <string name="block">Block</string>
+ <string name="unblock">Unblock</string>
+ <string name="save">Save</string>
+ <string name="ok">OK</string>
+ <string name="crash_report_title">Conversations has crashed</string>
+ <string name="crash_report_message">By sending in stack traces you are helping the ongoing development of Conversations\n<b>Warning:</b> This will use your XMPP account to send the stack trace to the developer.</string>
+ <string name="send_now">Send now</string>
+ <string name="send_never">Never ask again</string>
+ <string name="problem_connecting_to_account">Unable to connect to account</string>
+ <string name="problem_connecting_to_accounts">Unable to connect to multiple accounts</string>
+ <string name="touch_to_fix">Touch here to manage your accounts</string>
+ <string name="attach_file">Attach file</string>
+ <string name="not_in_roster">The contact is not in your roster. Would you like to add it?</string>
+ <string name="add_contact">Add contact</string>
+ <string name="send_failed">delivery failed</string>
+ <string name="send_rejected">rejected</string>
+ <string name="preparing_image">Preparing image for transmission</string>
+ <string name="action_clear_history">Clear history</string>
+ <string name="clear_conversation_history">Clear Conversation History</string>
+ <string name="clear_histor_msg">Do you want to delete all messages within this Conversation?\n\n<b>Warning:</b> This will not influence messages stored on other devices or servers.</string>
+ <string name="delete_messages">Delete messages</string>
+ <string name="also_end_conversation">End this conversations afterwards</string>
+ <string name="choose_presence">Choose presence to contact</string>
+ <string name="send_plain_text_message">Send plain text message</string>
+ <string name="send_otr_message">Send OTR encrypted message</string>
+ <string name="send_pgp_message">Send OpenPGP encrypted message</string>
+ <string name="your_nick_has_been_changed">Your nickname has been changed</string>
+ <string name="download_image">Download Image</string>
+ <string name="send_unencrypted">Send unencrypted</string>
+ <string name="decryption_failed">Decryption failed. Maybe you don’t have the proper private key.</string>
+ <string name="openkeychain_required">OpenKeychain</string>
+ <string name="openkeychain_required_long">Conversations utilizes a third party app called <b>OpenKeychain</b> 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<small>(Please restart Conversations afterwards.)</small></string>
+ <string name="restart">Restart</string>
+ <string name="install">Install</string>
+ <string name="offering">offering…</string>
+ <string name="waiting">waiting…</string>
+ <string name="no_pgp_key">No OpenPGP Key found</string>
+ <string name="contact_has_no_pgp_key">Conversations is unable to encrypt your messages because your contact is not announcing his or hers public key.\n\n<small>Please ask your contact to setup OpenPGP.</small></string>
+ <string name="no_pgp_keys">No OpenPGP Keys found</string>
+ <string name="contacts_have_no_pgp_keys">Conversations is unable to encrypt your messages because your contacts are not announcing their public key.\n\n<small>Please ask your contacts to setup OpenPGP.</small></string>
+ <string name="encrypted_message_received"><i>Encrypted message received. Touch to view and decrypt.</i></string>
+ <string name="pref_general">General</string>
+ <string name="pref_xmpp_resource">XMPP resource</string>
+ <string name="pref_xmpp_resource_summary">The name this client identifies itself with</string>
+ <string name="pref_accept_files">Accept files</string>
+ <string name="pref_accept_files_summary">Automatically accept files smaller than…</string>
+ <string name="pref_notification_settings">Notification Settings</string>
+ <string name="pref_notifications">Notifications</string>
+ <string name="pref_notifications_summary">Notify when a new message arrives</string>
+ <string name="pref_vibrate">Vibrate</string>
+ <string name="pref_vibrate_summary">Also vibrate when a new message arrives</string>
+ <string name="pref_sound">Sound</string>
+ <string name="pref_sound_summary">Play ringtone with notification</string>
+ <string name="pref_conference_notifications">Conference notifications</string>
+ <string name="pref_conference_notifications_summary">Always notify when a new conference message arrives instead of only when highlighted</string>
+ <string name="pref_notification_grace_period">Notification grace period</string>
+ <string name="pref_notification_grace_period_summary">Disable notifications for a short time after a carbon copy was received</string>
+ <string name="pref_advanced_options">Advanced Options</string>
+ <string name="pref_never_send_crash">Never send crash reports</string>
+ <string name="pref_never_send_crash_summary">By sending in stack traces you are helping the ongoing development of Conversations</string>
+ <string name="pref_confirm_messages">Confirm Messages</string>
+ <string name="pref_confirm_messages_summary">Let your contact know when you have received and read a message</string>
+ <string name="pref_ui_options">UI Options</string>
+ <string name="openpgp_error">OpenKeychain reported an error</string>
+ <string name="error_decrypting_file">I/O Error decrypting file</string>
+ <string name="accept">Accept</string>
+ <string name="error">An error has occurred</string>
+ <string name="pref_grant_presence_updates">Grant presence updates</string>
+ <string name="pref_grant_presence_updates_summary">Preemptively grant and ask for presence subscription for contacts you created</string>
+ <string name="subscriptions">Subscriptions</string>
+ <string name="your_account">Your account</string>
+ <string name="keys">Keys</string>
+ <string name="send_presence_updates">Send presence updates</string>
+ <string name="receive_presence_updates">Receive presence updates</string>
+ <string name="ask_for_presence_updates">Ask for presence updates</string>
+ <string name="attach_choose_picture">Choose picture</string>
+ <string name="attach_take_picture">Take picture</string>
+ <string name="preemptively_grant">Preemptively grant subscription request</string>
+ <string name="error_not_an_image_file">The file you selected is not an image</string>
+ <string name="error_compressing_image">Error while converting the image file</string>
+ <string name="error_file_not_found">File not found</string>
+ <string name="error_io_exception">General I/O error. Maybe you ran out of storage space?</string>
+ <string name="error_security_exception_during_image_copy">The app you used to select this image did not provide us with enough permissions to read the file.\n\n<small>Use a different file manager to choose an image</small></string>
+ <string name="account_status_unknown">Unknown</string>
+ <string name="account_status_disabled">Temporarily disabled</string>
+ <string name="account_status_online">Online</string>
+ <string name="account_status_connecting">Connecting\u2026</string>
+ <string name="account_status_offline">Offline</string>
+ <string name="account_status_unauthorized">Unauthorized</string>
+ <string name="account_status_not_found">Server not found</string>
+ <string name="account_status_no_internet">No connectivity</string>
+ <string name="account_status_regis_fail">Registration failed</string>
+ <string name="account_status_regis_conflict">Username already in use</string>
+ <string name="account_status_regis_success">Registration completed</string>
+ <string name="account_status_regis_not_sup">Server does not support registration</string>
+ <string name="account_status_security_error">Security error</string>
+ <string name="account_status_incompatible_server">Incompatible server</string>
+ <string name="encryption_choice_none">Plain text</string>
+ <string name="encryption_choice_otr">OTR</string>
+ <string name="encryption_choice_pgp">OpenPGP</string>
+ <string name="mgmt_account_edit">Edit account</string>
+ <string name="mgmt_account_delete">Delete account</string>
+ <string name="mgmt_account_disable">Temporarily disable</string>
+ <string name="mgmt_account_publish_avatar">Publish avatar</string>
+ <string name="mgmt_account_publish_pgp">Publish OpenPGP public key</string>
+ <string name="mgmt_account_enable">Enable account</string>
+ <string name="mgmt_account_are_you_sure">Are you sure?</string>
+ <string name="mgmt_account_delete_confirm_text">If you delete your account your entire conversation history will be lost</string>
+ <string name="attach_record_voice">Record voice</string>
+ <string name="account_settings_jabber_id">Jabber ID</string>
+ <string name="account_settings_password">Password</string>
+ <string name="account_settings_example_jabber_id">username@example.com</string>
+ <string name="account_settings_confirm_password">Confirm password</string>
+ <string name="password">Password</string>
+ <string name="confirm_password">Confirm password</string>
+ <string name="passwords_do_not_match">Passwords do not match</string>
+ <string name="invalid_jid">This is not a valid Jabber ID</string>
+ <string name="error_out_of_memory">Out of memory. Image is too large</string>
+ <string name="add_phone_book_text">Do you want to add %s to your phones contact list?</string>
+ <string name="contact_status_online">online</string>
+ <string name="contact_status_free_to_chat">free to chat</string>
+ <string name="contact_status_away">away</string>
+ <string name="contact_status_extended_away">extended away</string>
+ <string name="contact_status_do_not_disturb">do not disturb</string>
+ <string name="contact_status_offline">offline</string>
+ <string name="muc_details_conference">Conference</string>
+ <string name="muc_details_other_members">Other Members</string>
+ <string name="server_info_show_more">Server info</string>
+ <string name="server_info_mam">XEP-0313: MAM</string>
+ <string name="server_info_carbon_messages">XEP-0280: Message Carbons</string>
+ <string name="server_info_csi">XEP-0352: Client State Indication</string>
+ <string name="server_info_blocking">XEP-0191: Blocking Command</string>
+ <string name="server_info_roster_version">XEP-0237: Roster Versioning</string>
+ <string name="server_info_stream_management">XEP-0198: Stream Management</string>
+ <string name="server_info_pep">XEP-0163: PEP (Avatars)</string>
+ <string name="server_info_available">available</string>
+ <string name="server_info_unavailable">unavailable</string>
+ <string name="missing_public_keys">Missing public key announcements</string>
+ <string name="last_seen_now">last seen just now</string>
+ <string name="last_seen_min">last seen 1 minute ago</string>
+ <string name="last_seen_mins">last seen %d minutes ago</string>
+ <string name="last_seen_hour">last seen 1 hour ago</string>
+ <string name="last_seen_hours">last seen %d hours ago</string>
+ <string name="last_seen_day">last seen 1 day ago</string>
+ <string name="last_seen_days">last seen %d days ago</string>
+ <string name="never_seen">never seen</string>
+ <string name="install_openkeychain">Encrypted message. Please install OpenKeychain to decrypt.</string>
+ <string name="unknown_otr_fingerprint">Unknown OTR fingerprint</string>
+ <string name="openpgp_messages_found">OpenPGP encrypted messages found</string>
+ <string name="reception_failed">Reception failed</string>
+ <string name="your_fingerprint">Your fingerprint</string>
+ <string name="otr_fingerprint">OTR fingerprint</string>
+ <string name="verify">Verify</string>
+ <string name="decrypt">Decrypt</string>
+ <string name="conferences">Conferences</string>
+ <string name="search">Search</string>
+ <string name="create_contact">Create Contact</string>
+ <string name="join_conference">Join Conference</string>
+ <string name="delete_contact">Delete Contact</string>
+ <string name="view_contact_details">View contact details</string>
+ <string name="block_contact">Block contact</string>
+ <string name="unblock_contact">Unblock contact</string>
+ <string name="create">Create</string>
+ <string name="contact_already_exists">The contact already exists</string>
+ <string name="join">Join</string>
+ <string name="conference_address">Conference address</string>
+ <string name="conference_address_example">room@conference.example.com</string>
+ <string name="save_as_bookmark">Save as bookmark</string>
+ <string name="delete_bookmark">Delete bookmark</string>
+ <string name="bookmark_already_exists">This bookmark already exists</string>
+ <string name="you">You</string>
+ <string name="action_edit_subject">Edit conference subject</string>
+ <string name="conference_not_found">Conference not found</string>
+ <string name="leave">Leave</string>
+ <string name="contact_added_you">Contact added you to contact list</string>
+ <string name="add_back">Add back</string>
+ <string name="contact_has_read_up_to_this_point">%s has read up to this point</string>
+ <string name="publish">Publish</string>
+ <string name="touch_to_choose_picture">Touch avatar to select picture from gallery</string>
+ <string name="publish_avatar_explanation">Please note: Everyone subscribed to your presence updates will be allowed to see this picture.</string>
+ <string name="publishing">Publishing…</string>
+ <string name="error_publish_avatar_server_reject">The server rejected your publication</string>
+ <string name="error_publish_avatar_converting">Something went wrong while converting your picture</string>
+ <string name="error_saving_avatar">Could not save avatar to disk</string>
+ <string name="or_long_press_for_default">(Or long press to bring back default)</string>
+ <string name="error_publish_avatar_no_server_support">Your server does not support the publication of avatars</string>
+ <string name="private_message">whispered</string>
+ <string name="private_message_to">to %s</string>
+ <string name="send_private_message_to">Send private message to %s</string>
+ <string name="connect">Connect</string>
+ <string name="account_already_exists">This account already exists</string>
+ <string name="next">Next</string>
+ <string name="server_info_session_established">Current session established</string>
+ <string name="additional_information">Additional Information</string>
+ <string name="skip">Skip</string>
+ <string name="disable_notifications">Disable notifications</string>
+ <string name="disable_notifications_for_this_conversation">Disable notifications for this conversation</string>
+ <string name="notifications_disabled">Notifications are disabled</string>
+ <string name="enable">Enable</string>
+ <string name="conference_requires_password">Conference requires password</string>
+ <string name="enter_password">Enter password</string>
+ <string name="missing_presence_updates">Missing presence updates from contact</string>
+ <string name="request_presence_updates">Please request presence updates from your contact first.\n\n<small>This will be used to determine what client(s) your contact is using.</small></string>
+ <string name="request_now">Request now</string>
+ <string name="delete_fingerprint">Delete Fingerprint</string>
+ <string name="sure_delete_fingerprint">Are you sure you would like to delete this fingerprint?</string>
+ <string name="ignore">Ignore</string>
+ <string name="without_mutual_presence_updates"><b>Warning:</b> Sending this without mutual presence updates could cause unexpected problems.\n\n<small>Go to contact details to verify your presence subscriptions.</small></string>
+ <string name="pref_encryption_settings">Encryption settings</string>
+ <string name="pref_force_encryption">Force end-to-end encryption</string>
+ <string name="pref_force_encryption_summary">Always send messages encrypted (except for conferences)</string>
+ <string name="pref_dont_save_encrypted">Don’t save encrypted messages</string>
+ <string name="pref_dont_save_encrypted_summary">Warning: This could lead to message loss</string>
+ <string name="pref_expert_options">Expert options</string>
+ <string name="pref_expert_options_summary">Please be careful with these</string>
+ <string name="title_activity_about">About Conversations</string>
+ <string name="pref_about_conversations_summary">Build and licensing information</string>
+ <string name="pref_about_message" translatable="false">
+ 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)
+ </string>
+ <string name="title_pref_quiet_hours">Quiet Hours</string>
+ <string name="title_pref_quiet_hours_start_time">Start time</string>
+ <string name="title_pref_quiet_hours_end_time">End time</string>
+ <string name="title_pref_enable_quiet_hours">Enable quiet hours</string>
+ <string name="pref_quiet_hours_summary">Notifications will be silenced during quiet hours</string>
+ <string name="pref_use_larger_font">Increase font size</string>
+ <string name="pref_use_larger_font_summary">Use larger font sizes across the entire app</string>
+ <string name="pref_use_send_button_to_indicate_status">Send button indicates status</string>
+ <string name="pref_use_indicate_received">Request message receipts</string>
+ <string name="pref_use_indicate_received_summary">Received messages will be marked with a green tick if supported</string>
+ <string name="pref_use_send_button_to_indicate_status_summary">Colorize send button to indicate contact status</string>
+ <string name="pref_expert_options_other">Other</string>
+ <string name="pref_conference_name">Conference name</string>
+ <string name="pref_conference_name_summary">Use room’s subject instead of JID to identify conferences</string>
+ <string name="toast_message_otr_fingerprint">OTR fingerprint copied to clipboard!</string>
+ <string name="conference_banned">You are banned from this conference</string>
+ <string name="conference_members_only">This conference is members only</string>
+ <string name="conference_kicked">You have been kicked from this conference</string>
+ <string name="using_account">using account %s</string>
+ <string name="checking_image">Checking image on HTTP host</string>
+ <string name="image_file_deleted">The image file has been deleted</string>
+ <string name="not_connected_try_again">You are not connected. Try again later</string>
+ <string name="check_image_filesize">Check image file size</string>
+ <string name="message_options">Message options</string>
+ <string name="copy_text">Copy text</string>
+ <string name="copy_original_url">Copy original URL</string>
+ <string name="send_again">Send again</string>
+ <string name="image_url">Image URL</string>
+ <string name="message_text">Message text</string>
+ <string name="url_copied_to_clipboard">URL copied to clipboard</string>
+ <string name="message_copied_to_clipboard">Message copied to clipboard</string>
+ <string name="image_transmission_failed">Image transmission failed</string>
+ <string name="scan_qr_code">Scan QR code</string>
+ <string name="show_qr_code">Show QR code</string>
+ <string name="show_block_list">Show block list</string>
+ <string name="account_details">Account details</string>
+ <string name="verify_otr">Verify OTR</string>
+ <string name="remote_fingerprint">Remote Fingerprint</string>
+ <string name="scan">scan</string>
+ <string name="or_touch_phones">(or touch phones)</string>
+ <string name="smp">Socialist Millionaire Protocol</string>
+ <string name="shared_secret_hint">Hint or Question</string>
+ <string name="shared_secret_secret">Shared Secret</string>
+ <string name="confirm">Confirm</string>
+ <string name="in_progress">In progress</string>
+ <string name="respond">Respond</string>
+ <string name="failed">Failed</string>
+ <string name="secrets_do_not_match">Secrets do not match</string>
+ <string name="try_again">Try again</string>
+ <string name="finish">Finish</string>
+ <string name="verified">Verified!</string>
+ <string name="smp_requested">Contact requested SMP verification</string>
+ <string name="no_otr_session_found">No valid OTR session has been found!</string>
+ <string name="conversations_foreground_service">Conversations</string>
+ <string name="pref_keep_foreground_service">Keep service in foreground</string>
+ <string name="pref_keep_foreground_service_summary">Prevents the operating system from killing your connection</string>
+ <string name="choose_file">Choose file</string>
+ <string name="receiving_x_file">Receiving %1$s (%2$d%% completed)</string>
+ <string name="download_x_file">Download %s</string>
+ <string name="file">file</string>
+ <string name="open_x_file">Open %s</string>
+ <string name="sending_file">sending (%1$d%% completed)</string>
+ <string name="preparing_file">Preparing file for transmission</string>
+ <string name="x_file_offered_for_download">%s offered for download</string>
+ <string name="cancel_transmission">Cancel transmission</string>
+ <string name="file_transmission_failed">file transmission failed</string>
+ <string name="file_deleted">The file has been deleted</string>
+ <string name="no_application_found_to_open_file">No application found to open file</string>
+ <string name="could_not_verify_fingerprint">Could not verify fingerprint</string>
+ <string name="manually_verify">Manually verify</string>
+ <string name="are_you_sure_verify_fingerprint">Are you sure that you want to verify your contacts OTR fingerprint?</string>
+ <string name="pref_show_dynamic_tags">Show dynamic tags</string>
+ <string name="pref_show_dynamic_tags_summary">Display read-only tags underneath contacts</string>
+ <string name="enable_notifications">Enable notifications</string>
+ <string name="conference_with">Create conference with…</string>
+ <string name="no_conference_server_found">No conference server found</string>
+ <string name="conference_creation_failed">Conference creation failed!</string>
+ <string name="conference_created">Conference created!</string>
+ <string name="secret_accepted">Secret accepted!</string>
+ <string name="reset">Reset</string>
+ <string name="account_image_description">Account avatar</string>
+ <string name="copy_otr_clipboard_description">Copy OTR fingerprint to clipboard</string>
+ <string name="fetching_history_from_server">Fetching history from server</string>
+ <string name="no_more_history_on_server">No more history on server</string>
+ <string name="updating">Updating…</string>
+ <string name="password_changed">Password changed!</string>
+ <string name="could_not_change_password">Could not change password</string>
+ <string name="otr_session_not_started">Send a message to start an encrypted chat</string>
+ <string name="ask_question">Ask question</string>
+ <string name="smp_explain_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.</string>
+ <string name="smp_explain_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.</string>
+ <string name="shared_secret_hint_should_not_be_empty">Your hint should not be empty</string>
+ <string name="shared_secret_can_not_be_empty">Your shared secret can not be empty</string>
+ <string name="manual_verification_explanation">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.</string>
<string name="change_password">Change password</string>
<string name="current_password">Current password</string>
<string name="new_password">New password</string>
@@ -442,19 +442,19 @@
<string name="disable_foreground_service">Disable foreground service</string>
<string name="touch_to_open_conversations">Touch to open Conversations</string>
<string name="avatar_has_been_published">Avatar has been published!</string>
- <string name="sending_x_file">Sending %s</string>
- <string name="offering_x_file">Offering %s</string>
- <string name="hide_offline">Hide offline</string>
- <string name="disable_account">Disable Account</string>
- <string name="contact_is_typing">%s is typing...</string>
- <string name="contact_has_stopped_typing">%s has stopped typing</string>
- <string name="pref_chat_states">Typing notifications</string>
- <string name="pref_chat_states_summary">Let your contact know when you are writing a new message</string>
- <string name="send_location">Send location</string>
- <string name="show_location">Show location</string>
- <string name="no_application_found_to_display_location">No application found to display location</string>
- <string name="location">Location</string>
- <string name="received_location">Received location</string>
+ <string name="sending_x_file">Sending %s</string>
+ <string name="offering_x_file">Offering %s</string>
+ <string name="hide_offline">Hide offline</string>
+ <string name="disable_account">Disable Account</string>
+ <string name="contact_is_typing">%s is typing...</string>
+ <string name="contact_has_stopped_typing">%s has stopped typing</string>
+ <string name="pref_chat_states">Typing notifications</string>
+ <string name="pref_chat_states_summary">Let your contact know when you are writing a new message</string>
+ <string name="send_location">Send location</string>
+ <string name="show_location">Show location</string>
+ <string name="no_application_found_to_display_location">No application found to display location</string>
+ <string name="location">Location</string>
+ <string name="received_location">Received location</string>
<string name="title_undo_swipe_out_conversation">Conversation closed</string>
<string name="title_undo_swipe_out_muc">Left conference</string>
<string name="pref_certificate_options">Certificate options</string>
@@ -474,4 +474,9 @@
<item quantity="one">Select %d contact</item>
<item quantity="other">Select %d contacts</item>
</plurals>
+ <string name="pref_quick_action_summary">Replace send button with quick action</string>
+ <string name="pref_quick_action">Quick Action</string>
+ <string name="none">None</string>
+ <string name="recently_used">Most recently used</string>
+ <string name="choose_quick_action">Choose quick action</string>
</resources>
diff --git a/src/main/res/xml/preferences.xml b/src/main/res/xml/preferences.xml
index 417e60a4..5b7d6904 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" />
+ <ListPreference
+ android:key="quick_action"
+ android:defaultValue="recent"
+ android:entries="@array/quick_actions"
+ android:entryValues="@array/quick_action_values"
+ android:summary="@string/pref_quick_action_summary"
+ android:title="@string/pref_quick_action"
+ android:dialogTitle="@string/choose_quick_action"/>
<CheckBoxPreference
android:defaultValue="false"
android:key="show_dynamic_tags"