Skip to content

Commit

Permalink
Change using spans directly and use html.toHtml instead.
Browse files Browse the repository at this point in the history
  • Loading branch information
Andy Valdez committed Sep 13, 2024
1 parent 77d2a03 commit f1a36ae
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 37 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import android.content.Intent
import android.graphics.Color
import android.net.Uri
import android.os.Bundle
import android.text.Html
import android.text.method.LinkMovementMethod
import android.util.Log
import android.view.LayoutInflater
Expand All @@ -15,6 +16,7 @@ import android.widget.EditText
import android.widget.TextView
import android.widget.Toast
import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.content.ContextCompat
import androidx.fragment.app.viewModels
import com.automattic.simplenote.R
import com.automattic.simplenote.Simplenote
Expand Down Expand Up @@ -105,16 +107,19 @@ class SignInFragment: MagicLinkableFragment() {
)
}
val manualLoginTextView = view.findViewById<TextView>(R.id.sign_in_login_manually)
val message = getString(R.string.signin_login_with_email_manually);
val span = StrUtils.generateClickableSpannableString(LOGIN_MANUALLY_SUBSTRING, message
) {
context?.let {
val colorLink = Integer.toHexString(ContextCompat.getColor(it, R.color.text_link) and 16777215)
manualLoginTextView.text = Html.fromHtml(
String.format(
getString(R.string.signin_login_with_email_manually),
"<span style=\"color:#", colorLink, "\">", "</span>"
)
)
}
manualLoginTextView.setOnClickListener {
val email = getEmailEditText()
showLoginWithPassword(activity, email?.text?.toString())
}

manualLoginTextView.text = span
manualLoginTextView.movementMethod = LinkMovementMethod.getInstance()
manualLoginTextView.highlightColor = Color.TRANSPARENT
return view
}

Expand Down Expand Up @@ -169,7 +174,7 @@ class SignInFragment: MagicLinkableFragment() {

companion object {
const val LOGIN_MANUALLY_SUBSTRING = "log in manually"

fun showLoginWithPassword(activity: Activity?, username: String?) {
activity?.let { act ->
val intent = Intent(act, NewCredentialsActivity::class.java)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,8 @@

import static androidx.core.util.PatternsCompat.EMAIL_ADDRESS;

import android.text.SpannableString;
import android.text.Spanned;
import android.text.TextPaint;
import android.text.TextUtils;
import android.text.style.ClickableSpan;
import android.view.View;

import androidx.annotation.NonNull;

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
Expand Down Expand Up @@ -140,26 +134,4 @@ public static Spanned setTextToUpperCaseAndBold(String originalString) {

return HtmlCompat.fromHtml("<strong>" + originalString.toUpperCase() + "</strong>");
}

public static SpannableString generateClickableSpannableString(final String targetString, final String text, final View.OnClickListener onClickListener) {
final SpannableString spannableString = new SpannableString(text);
final int startIndex = text.indexOf(targetString);
if (startIndex == -1) {
return spannableString;
}
final int endIndex = startIndex + targetString.length();
spannableString.setSpan(new ClickableSpan() {
@Override
public void onClick(@NonNull View widget) {
onClickListener.onClick(widget);
}

@Override
public void updateDrawState(@NonNull TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(false);
}
}, startIndex, endIndex, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
return spannableString;
}
}
2 changes: 1 addition & 1 deletion Simplenote/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -452,5 +452,5 @@
<string name="magic_link_confirm_code_message">We\'ve sent a code to \n%1$s. The code will be valid for a few minutes.</string>
<string name="login_with_password_message">Enter the password for the account %1$s</string>

<string name="signin_login_with_email_manually">We\'ll email you a code to log in, or you can log in manually.</string>
<string name="signin_login_with_email_manually">We\'ll email you a code to log in, or you can %1$s%2$s%3$slog in manually%4$s.</string>
</resources>

0 comments on commit f1a36ae

Please sign in to comment.