mirror of
https://github.com/oxen-io/session-android.git
synced 2024-11-21 15:05:19 +00:00
Converted SwitchPreferenceCompat to Kotlin and fixed the BlockedDialog using the joinCommunity string for some bizarre reason
This commit is contained in:
parent
d3fb440d05
commit
5bd55ea993
@ -1,66 +0,0 @@
|
||||
package org.thoughtcrime.securesms.components;
|
||||
|
||||
import static org.session.libsession.utilities.StringSubstitutionConstants.APP_NAME_KEY;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.AttributeSet;
|
||||
import androidx.preference.CheckBoxPreference;
|
||||
import androidx.preference.Preference;
|
||||
import com.squareup.phrase.Phrase;
|
||||
import network.loki.messenger.R;
|
||||
|
||||
public class SwitchPreferenceCompat extends CheckBoxPreference {
|
||||
|
||||
private static String LOCK_SCREEN_KEY = "pref_android_screen_lock";
|
||||
|
||||
private Preference.OnPreferenceClickListener listener;
|
||||
|
||||
public SwitchPreferenceCompat(Context context, AttributeSet attrs, int defStyleAttr) {
|
||||
super(context, attrs, defStyleAttr);
|
||||
setLayoutRes();
|
||||
}
|
||||
|
||||
public SwitchPreferenceCompat(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
|
||||
super(context, attrs, defStyleAttr, defStyleRes);
|
||||
setLayoutRes();
|
||||
}
|
||||
|
||||
public SwitchPreferenceCompat(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
setLayoutRes();
|
||||
}
|
||||
|
||||
public SwitchPreferenceCompat(Context context) {
|
||||
super(context);
|
||||
setLayoutRes();
|
||||
}
|
||||
|
||||
private void setLayoutRes() {
|
||||
setWidgetLayoutResource(R.layout.switch_compat_preference);
|
||||
|
||||
if (this.hasKey()) {
|
||||
String key = this.getKey();
|
||||
|
||||
// Substitute app name into lockscreen preference summary
|
||||
if (key.equalsIgnoreCase(LOCK_SCREEN_KEY)) {
|
||||
Context c = getContext();
|
||||
CharSequence substitutedSummaryCS = Phrase.from(c, R.string.lockAppDescription)
|
||||
.put(APP_NAME_KEY, c.getString(R.string.app_name))
|
||||
.format();
|
||||
this.setSummary(substitutedSummaryCS);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOnPreferenceClickListener(Preference.OnPreferenceClickListener listener) {
|
||||
this.listener = listener;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onClick() {
|
||||
if (listener == null || !listener.onPreferenceClick(this)) {
|
||||
super.onClick();
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,59 @@
|
||||
package org.thoughtcrime.securesms.components
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import androidx.preference.CheckBoxPreference
|
||||
import com.squareup.phrase.Phrase
|
||||
import network.loki.messenger.R
|
||||
import org.session.libsession.utilities.StringSubstitutionConstants.APP_NAME_KEY
|
||||
import org.thoughtcrime.securesms.ui.getSubbedCharSequence
|
||||
import org.thoughtcrime.securesms.ui.getSubbedString
|
||||
|
||||
class SwitchPreferenceCompat : CheckBoxPreference {
|
||||
private var listener: OnPreferenceClickListener? = null
|
||||
|
||||
constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context!!, attrs, defStyleAttr) {
|
||||
setLayoutRes()
|
||||
}
|
||||
|
||||
constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) : super(context!!, attrs, defStyleAttr, defStyleRes) {
|
||||
setLayoutRes()
|
||||
}
|
||||
|
||||
constructor(context: Context?, attrs: AttributeSet?) : super(context!!, attrs) {
|
||||
setLayoutRes()
|
||||
}
|
||||
|
||||
constructor(context: Context?) : super(context!!) {
|
||||
setLayoutRes()
|
||||
}
|
||||
|
||||
private fun setLayoutRes() {
|
||||
widgetLayoutResource = R.layout.switch_compat_preference
|
||||
|
||||
if (this.hasKey()) {
|
||||
val key = this.key
|
||||
|
||||
// Substitute app name into lockscreen preference summary
|
||||
if (key.equals(LOCK_SCREEN_KEY, ignoreCase = true)) {
|
||||
val c = context
|
||||
val substitutedSummaryCS = c.getSubbedCharSequence(R.string.lockAppDescription, APP_NAME_KEY to c.getString(R.string.app_name))
|
||||
this.summary = substitutedSummaryCS
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun setOnPreferenceClickListener(listener: OnPreferenceClickListener?) {
|
||||
this.listener = listener
|
||||
}
|
||||
|
||||
override fun onClick() {
|
||||
if (listener == null || !listener!!.onPreferenceClick(this)) {
|
||||
super.onClick()
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val LOCK_SCREEN_KEY = "pref_android_screen_lock"
|
||||
}
|
||||
}
|
@ -8,14 +8,14 @@ import android.text.Spannable
|
||||
import android.text.SpannableStringBuilder
|
||||
import android.text.style.StyleSpan
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import com.squareup.phrase.Phrase
|
||||
import network.loki.messenger.R
|
||||
import org.session.libsession.messaging.MessagingModuleConfiguration
|
||||
import org.session.libsession.messaging.contacts.Contact
|
||||
import org.session.libsession.utilities.StringSubstitutionConstants.COMMUNITY_NAME_KEY
|
||||
import org.session.libsession.utilities.StringSubstitutionConstants.NAME_KEY
|
||||
import org.session.libsession.utilities.recipients.Recipient
|
||||
import org.thoughtcrime.securesms.createSessionDialog
|
||||
import org.thoughtcrime.securesms.dependencies.DatabaseComponent
|
||||
import org.thoughtcrime.securesms.ui.getSubbedCharSequence
|
||||
|
||||
/** Shown upon sending a message to a user that's blocked. */
|
||||
class BlockedDialog(private val recipient: Recipient, private val context: Context) : DialogFragment() {
|
||||
@ -26,9 +26,9 @@ class BlockedDialog(private val recipient: Recipient, private val context: Conte
|
||||
val contact = contactDB.getContactWithAccountID(accountID)
|
||||
val name = contact?.displayName(Contact.ContactContext.REGULAR) ?: accountID
|
||||
|
||||
val explanation = Phrase.from(context, R.string.communityJoinDescription).put(COMMUNITY_NAME_KEY, name).format()
|
||||
val spannable = SpannableStringBuilder(explanation)
|
||||
val startIndex = explanation.indexOf(name)
|
||||
val explanationCS = context.getSubbedCharSequence(R.string.blockUnblockName, NAME_KEY to name)
|
||||
val spannable = SpannableStringBuilder(explanationCS)
|
||||
val startIndex = explanationCS.indexOf(name)
|
||||
spannable.setSpan(StyleSpan(Typeface.BOLD), startIndex, startIndex + name.count(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
|
||||
|
||||
title(resources.getString(R.string.blockUnblock))
|
||||
|
@ -19,12 +19,17 @@ fun Context.createThemedComposeView(content: @Composable () -> Unit): ComposeVie
|
||||
setThemedContent(content)
|
||||
}
|
||||
|
||||
// Extension method to use the Phrase library to substitute strings & return a CharSequence.
|
||||
// The pair is the key name, such as APP_NAME_KEY and the value is the localised string, such as context.getString(R.string.app_name).
|
||||
// Note: We cannot have Pair<String, Int> versions of this or the `getSubbedString` method because the JVM sees the signatures as identical.
|
||||
fun Context.getSubbedCharSequence(stringId: Int, vararg substitutionPairs: Pair<String, String>): CharSequence {
|
||||
val phrase = Phrase.from(this, stringId)
|
||||
for ((key, value) in substitutionPairs) { phrase.put(key, value) }
|
||||
return phrase.format()
|
||||
}
|
||||
|
||||
// Extension method to use the Phrase library to substitute strings & return the substituted String.
|
||||
// The pair is the key name, such as APP_NAME_KEY and the value is the localised string, such as context.getString(R.string.app_name).
|
||||
fun Context.getSubbedString(stringId: Int, vararg substitutionPairs: Pair<String, String>): String {
|
||||
return getSubbedCharSequence(stringId, *substitutionPairs).toString()
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user