From 1ad36e2dbdd7f6e6d6c68723fe82512dd6c01371 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Fri, 19 Sep 2014 13:44:17 +0200 Subject: Beautify key id (thanks to Tim Bray) --- .../keychain/ui/util/KeyFormattingUtils.java | 54 ++++++++++++++++++++++ 1 file changed, 54 insertions(+) (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/KeyFormattingUtils.java') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/KeyFormattingUtils.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/KeyFormattingUtils.java index fc206aaf5..2b56dd3a7 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/KeyFormattingUtils.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/KeyFormattingUtils.java @@ -22,9 +22,13 @@ import android.content.Context; import android.database.Cursor; import android.graphics.Color; import android.graphics.PorterDuff; +import android.graphics.Typeface; import android.text.Spannable; +import android.text.SpannableString; import android.text.SpannableStringBuilder; import android.text.style.ForegroundColorSpan; +import android.text.style.StyleSpan; +import android.text.style.TypefaceSpan; import android.view.View; import android.widget.ImageView; @@ -250,6 +254,56 @@ public class KeyFormattingUtils { return hexString; } + /** + * Makes a human-readable version of a key ID, which is usually 64 bits: lower-case, no + * leading 0x, space-separated quartets (for keys whose length in hex is divisible by 4) + * + * @param idHex - the key id + * @return - the beautified form + */ + public static SpannableString beautifyKeyId(String idHex) { + if (idHex.startsWith("0x")) { + idHex = idHex.substring(2); + } + if ((idHex.length() % 4) == 0) { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < idHex.length(); i += 4) { + if (i != 0) { + sb.appendCodePoint(0x2008); // U+2008 PUNCTUATION SPACE + } + sb.append(idHex.substring(i, i + 4).toLowerCase(Locale.US)); + } + idHex = sb.toString(); + } + + SpannableString ss = new SpannableString(idHex); + ss.setSpan(new TypefaceSpan("monospace"), 0, idHex.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + return ss; + } + + /** + * Makes a human-readable version of a key ID, which is usually 64 bits: lower-case, no + * leading 0x, space-separated quartets (for keys whose length in hex is divisible by 4) + * + * @param keyId - the key id + * @return - the beautified form + */ + public static SpannableString beautifyKeyId(long keyId) { + return beautifyKeyId(convertKeyIdToHex(keyId)); + } + + public static SpannableStringBuilder beautifyKeyIdWithPrefix(Context context, String idHex) { + SpannableStringBuilder ssb = new SpannableStringBuilder(); + ssb.append("ID"); + ssb.append(": "); + ssb.append(beautifyKeyId(idHex)); + return ssb; + } + + public static SpannableStringBuilder beautifyKeyIdWithPrefix(Context context, long keyId) { + return beautifyKeyIdWithPrefix(context, convertKeyIdToHex(keyId)); + } + public static SpannableStringBuilder colorizeFingerprint(String fingerprint) { // split by 4 characters fingerprint = fingerprint.replaceAll("(.{4})(?!$)", "$1 "); -- cgit v1.2.3