make jids appear as monospace in dialogs
This commit is contained in:
		
							parent
							
								
									fd165e5106
								
							
						
					
					
						commit
						8980a0c631
					
				|  | @ -1,6 +1,7 @@ | ||||||
| package eu.siacs.conversations.ui; | package eu.siacs.conversations.ui; | ||||||
| 
 | 
 | ||||||
| import android.databinding.DataBindingUtil; | import android.databinding.DataBindingUtil; | ||||||
|  | import android.support.annotation.StringRes; | ||||||
| import android.support.v7.app.AlertDialog; | import android.support.v7.app.AlertDialog; | ||||||
| import android.text.SpannableString; | import android.text.SpannableString; | ||||||
| import android.text.Spanned; | import android.text.Spanned; | ||||||
|  | @ -12,6 +13,7 @@ import eu.siacs.conversations.R; | ||||||
| import eu.siacs.conversations.databinding.DialogBlockContactBinding; | import eu.siacs.conversations.databinding.DialogBlockContactBinding; | ||||||
| import eu.siacs.conversations.entities.Blockable; | import eu.siacs.conversations.entities.Blockable; | ||||||
| import eu.siacs.conversations.entities.Conversation; | import eu.siacs.conversations.entities.Conversation; | ||||||
|  | import eu.siacs.conversations.ui.util.JidDialog; | ||||||
| import rocks.xmpp.addr.Jid; | import rocks.xmpp.addr.Jid; | ||||||
| 
 | 
 | ||||||
| public final class BlockContactDialog { | public final class BlockContactDialog { | ||||||
|  | @ -24,23 +26,19 @@ public final class BlockContactDialog { | ||||||
| 		binding.reportSpam.setVisibility(!isBlocked && reporting ? View.VISIBLE : View.GONE); | 		binding.reportSpam.setVisibility(!isBlocked && reporting ? View.VISIBLE : View.GONE); | ||||||
| 		builder.setView(binding.getRoot()); | 		builder.setView(binding.getRoot()); | ||||||
| 
 | 
 | ||||||
| 		String value; | 		final String value; | ||||||
| 		SpannableString spannable; | 		@StringRes int res; | ||||||
| 		if (blockable.getJid().getLocal() == null || blockable.getAccount().isBlocked(Jid.ofDomain(blockable.getJid().getDomain()))) { | 		if (blockable.getJid().getLocal() == null || blockable.getAccount().isBlocked(Jid.ofDomain(blockable.getJid().getDomain()))) { | ||||||
| 			builder.setTitle(isBlocked ? R.string.action_unblock_domain : R.string.action_block_domain); | 			builder.setTitle(isBlocked ? R.string.action_unblock_domain : R.string.action_block_domain); | ||||||
| 			value = Jid.ofDomain(blockable.getJid().getDomain()).toString(); | 			value = Jid.ofDomain(blockable.getJid().getDomain()).toString(); | ||||||
| 			spannable = new SpannableString(xmppActivity.getString(isBlocked ? R.string.unblock_domain_text : R.string.block_domain_text, value)); | 			res = isBlocked ? R.string.unblock_domain_text : R.string.block_domain_text; | ||||||
| 		} else { | 		} else { | ||||||
| 			int resBlockAction = blockable instanceof Conversation && ((Conversation) blockable).isWithStranger() ? R.string.block_stranger : R.string.action_block_contact; | 			int resBlockAction = blockable instanceof Conversation && ((Conversation) blockable).isWithStranger() ? R.string.block_stranger : R.string.action_block_contact; | ||||||
| 			builder.setTitle(isBlocked ? R.string.action_unblock_contact : resBlockAction); | 			builder.setTitle(isBlocked ? R.string.action_unblock_contact : resBlockAction); | ||||||
| 			value = blockable.getJid().asBareJid().toString(); | 			value = blockable.getJid().asBareJid().toString(); | ||||||
| 			spannable = new SpannableString(xmppActivity.getString(isBlocked ? R.string.unblock_contact_text : R.string.block_contact_text, value)); | 			res = isBlocked ? R.string.unblock_contact_text : R.string.block_contact_text; | ||||||
| 		} | 		} | ||||||
| 		int start = spannable.toString().indexOf(value); | 		binding.text.setText(JidDialog.style(xmppActivity, res, value)); | ||||||
| 		if (start >= 0) { |  | ||||||
| 			spannable.setSpan(new TypefaceSpan("monospace"), start, start + value.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); |  | ||||||
| 		} |  | ||||||
| 		binding.text.setText(spannable); |  | ||||||
| 		builder.setPositiveButton(isBlocked ? R.string.unblock : R.string.block, (dialog, which) -> { | 		builder.setPositiveButton(isBlocked ? R.string.unblock : R.string.block, (dialog, which) -> { | ||||||
| 			if (isBlocked) { | 			if (isBlocked) { | ||||||
| 				xmppActivity.xmppConnectionService.sendUnblockRequest(blockable); | 				xmppActivity.xmppConnectionService.sendUnblockRequest(blockable); | ||||||
|  |  | ||||||
|  | @ -44,6 +44,7 @@ import eu.siacs.conversations.ui.adapter.MediaAdapter; | ||||||
| import eu.siacs.conversations.ui.interfaces.OnMediaLoaded; | import eu.siacs.conversations.ui.interfaces.OnMediaLoaded; | ||||||
| import eu.siacs.conversations.ui.util.Attachment; | import eu.siacs.conversations.ui.util.Attachment; | ||||||
| import eu.siacs.conversations.ui.util.GridManager; | import eu.siacs.conversations.ui.util.GridManager; | ||||||
|  | import eu.siacs.conversations.ui.util.JidDialog; | ||||||
| import eu.siacs.conversations.ui.util.MenuDoubleTabUtil; | import eu.siacs.conversations.ui.util.MenuDoubleTabUtil; | ||||||
| import eu.siacs.conversations.utils.Compatibility; | import eu.siacs.conversations.utils.Compatibility; | ||||||
| import eu.siacs.conversations.utils.IrregularUnicodeDetector; | import eu.siacs.conversations.utils.IrregularUnicodeDetector; | ||||||
|  | @ -241,7 +242,7 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp | ||||||
|                 break; |                 break; | ||||||
|             case R.id.action_delete_contact: |             case R.id.action_delete_contact: | ||||||
|                 builder.setTitle(getString(R.string.action_delete_contact)) |                 builder.setTitle(getString(R.string.action_delete_contact)) | ||||||
|                         .setMessage(getString(R.string.remove_contact_text, contact.getJid().toString())) |                         .setMessage(JidDialog.style(this, R.string.remove_contact_text, contact.getJid().toEscapedString())) | ||||||
|                         .setPositiveButton(getString(R.string.delete), |                         .setPositiveButton(getString(R.string.delete), | ||||||
|                                 removeFromRoster).create().show(); |                                 removeFromRoster).create().show(); | ||||||
|                 break; |                 break; | ||||||
|  |  | ||||||
|  | @ -71,6 +71,7 @@ import eu.siacs.conversations.services.XmppConnectionService.OnRosterUpdate; | ||||||
| import eu.siacs.conversations.ui.adapter.ListItemAdapter; | import eu.siacs.conversations.ui.adapter.ListItemAdapter; | ||||||
| import eu.siacs.conversations.ui.interfaces.OnBackendConnected; | import eu.siacs.conversations.ui.interfaces.OnBackendConnected; | ||||||
| import eu.siacs.conversations.ui.service.EmojiService; | import eu.siacs.conversations.ui.service.EmojiService; | ||||||
|  | import eu.siacs.conversations.ui.util.JidDialog; | ||||||
| import eu.siacs.conversations.ui.util.MenuDoubleTabUtil; | import eu.siacs.conversations.ui.util.MenuDoubleTabUtil; | ||||||
| import eu.siacs.conversations.ui.util.PendingItem; | import eu.siacs.conversations.ui.util.PendingItem; | ||||||
| import eu.siacs.conversations.ui.util.SoftKeyboardUtils; | import eu.siacs.conversations.ui.util.SoftKeyboardUtils; | ||||||
|  | @ -427,7 +428,7 @@ public class StartConversationActivity extends XmppActivity implements XmppConne | ||||||
| 		final AlertDialog.Builder builder = new AlertDialog.Builder(this); | 		final AlertDialog.Builder builder = new AlertDialog.Builder(this); | ||||||
| 		builder.setNegativeButton(R.string.cancel, null); | 		builder.setNegativeButton(R.string.cancel, null); | ||||||
| 		builder.setTitle(R.string.action_delete_contact); | 		builder.setTitle(R.string.action_delete_contact); | ||||||
| 		builder.setMessage(getString(R.string.remove_contact_text, contact.getJid())); | 		builder.setMessage(JidDialog.style(this, R.string.remove_contact_text, contact.getJid().toEscapedString())); | ||||||
| 		builder.setPositiveButton(R.string.delete, (dialog, which) -> { | 		builder.setPositiveButton(R.string.delete, (dialog, which) -> { | ||||||
| 			xmppConnectionService.deleteContactOnServer(contact); | 			xmppConnectionService.deleteContactOnServer(contact); | ||||||
| 			filter(mSearchEditText.getText().toString()); | 			filter(mSearchEditText.getText().toString()); | ||||||
|  | @ -442,8 +443,7 @@ public class StartConversationActivity extends XmppActivity implements XmppConne | ||||||
| 		AlertDialog.Builder builder = new AlertDialog.Builder(this); | 		AlertDialog.Builder builder = new AlertDialog.Builder(this); | ||||||
| 		builder.setNegativeButton(R.string.cancel, null); | 		builder.setNegativeButton(R.string.cancel, null); | ||||||
| 		builder.setTitle(R.string.delete_bookmark); | 		builder.setTitle(R.string.delete_bookmark); | ||||||
| 		builder.setMessage(getString(R.string.remove_bookmark_text, | 		builder.setMessage(JidDialog.style(this, R.string.remove_bookmark_text, bookmark.getJid().toEscapedString())); | ||||||
| 				bookmark.getJid())); |  | ||||||
| 		builder.setPositiveButton(R.string.delete, (dialog, which) -> { | 		builder.setPositiveButton(R.string.delete, (dialog, which) -> { | ||||||
| 			bookmark.setConversation(null); | 			bookmark.setConversation(null); | ||||||
| 			Account account = bookmark.getAccount(); | 			Account account = bookmark.getAccount(); | ||||||
|  | @ -821,13 +821,7 @@ public class StartConversationActivity extends XmppActivity implements XmppConne | ||||||
| 		View view = getLayoutInflater().inflate(R.layout.dialog_verify_fingerprints, null); | 		View view = getLayoutInflater().inflate(R.layout.dialog_verify_fingerprints, null); | ||||||
| 		final CheckBox isTrustedSource = view.findViewById(R.id.trusted_source); | 		final CheckBox isTrustedSource = view.findViewById(R.id.trusted_source); | ||||||
| 		TextView warning = view.findViewById(R.id.warning); | 		TextView warning = view.findViewById(R.id.warning); | ||||||
| 		String jid = contact.getJid().asBareJid().toString(); | 		warning.setText(JidDialog.style(this, R.string.verifying_omemo_keys_trusted_source, contact.getJid().asBareJid().toEscapedString(), contact.getDisplayName())); | ||||||
| 		SpannableString spannable = new SpannableString(getString(R.string.verifying_omemo_keys_trusted_source, jid, contact.getDisplayName())); |  | ||||||
| 		int start = spannable.toString().indexOf(jid); |  | ||||||
| 		if (start >= 0) { |  | ||||||
| 			spannable.setSpan(new TypefaceSpan("monospace"), start, start + jid.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); |  | ||||||
| 		} |  | ||||||
| 		warning.setText(spannable); |  | ||||||
| 		builder.setView(view); | 		builder.setView(view); | ||||||
| 		builder.setPositiveButton(R.string.confirm, (dialog, which) -> { | 		builder.setPositiveButton(R.string.confirm, (dialog, which) -> { | ||||||
| 			if (isTrustedSource.isChecked() && invite.hasFingerprints()) { | 			if (isTrustedSource.isChecked() && invite.hasFingerprints()) { | ||||||
|  |  | ||||||
|  | @ -0,0 +1,23 @@ | ||||||
|  | package eu.siacs.conversations.ui.util; | ||||||
|  | 
 | ||||||
|  | import android.content.Context; | ||||||
|  | import android.support.annotation.StringRes; | ||||||
|  | import android.text.SpannableString; | ||||||
|  | import android.text.Spanned; | ||||||
|  | import android.text.style.TypefaceSpan; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | public class JidDialog { | ||||||
|  | 
 | ||||||
|  |     public static SpannableString style(Context context, @StringRes int res, String... args) { | ||||||
|  |         SpannableString spannable = new SpannableString(context.getString(res, (Object[]) args)); | ||||||
|  |         if (args.length >= 1) { | ||||||
|  |             final String value = args[0]; | ||||||
|  |             int start = spannable.toString().indexOf(value); | ||||||
|  |             if (start >= 0) { | ||||||
|  |                 spannable.setSpan(new TypefaceSpan("monospace"), start, start + value.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return spannable; | ||||||
|  |     } | ||||||
|  | } | ||||||
		Loading…
	
		Reference in New Issue
	
	 Daniel Gultsch
						Daniel Gultsch