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