improved refresh & notifications settings ui
This commit is contained in:
parent
f56df676d0
commit
e311e9e5a4
|
@ -33,6 +33,7 @@ import android.support.v7.preference.Preference;
|
||||||
import android.support.v7.preference.PreferenceCategory;
|
import android.support.v7.preference.PreferenceCategory;
|
||||||
import android.support.v7.preference.PreferenceManager;
|
import android.support.v7.preference.PreferenceManager;
|
||||||
import android.support.v7.preference.PreferenceViewHolder;
|
import android.support.v7.preference.PreferenceViewHolder;
|
||||||
|
import android.support.v7.widget.SwitchCompat;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.view.Gravity;
|
import android.view.Gravity;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
@ -100,22 +101,28 @@ public abstract class AccountsListPreference extends PreferenceCategory implemen
|
||||||
OnSharedPreferenceChangeListener {
|
OnSharedPreferenceChangeListener {
|
||||||
|
|
||||||
private final AccountDetails mAccount;
|
private final AccountDetails mAccount;
|
||||||
|
@Nullable
|
||||||
|
private final String mSwitchKey;
|
||||||
|
private final boolean mSwitchDefault;
|
||||||
private final SharedPreferences mSwitchPreference;
|
private final SharedPreferences mSwitchPreference;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
MediaLoaderWrapper mImageLoader;
|
MediaLoaderWrapper mImageLoader;
|
||||||
|
|
||||||
public AccountItemPreference(final Context context, final AccountDetails account, final String switchKey,
|
public AccountItemPreference(final Context context, final AccountDetails account,
|
||||||
final boolean switchDefault) {
|
@Nullable final String switchKey, final boolean switchDefault) {
|
||||||
super(context);
|
super(context);
|
||||||
GeneralComponentHelper.build(context).inject(this);
|
GeneralComponentHelper.build(context).inject(this);
|
||||||
final String switchPreferenceName = ACCOUNT_PREFERENCES_NAME_PREFIX + account.key;
|
final String switchPreferenceName = ACCOUNT_PREFERENCES_NAME_PREFIX + account.key;
|
||||||
mAccount = account;
|
mAccount = account;
|
||||||
|
mSwitchKey = switchKey;
|
||||||
|
mSwitchDefault = switchDefault;
|
||||||
mSwitchPreference = context.getSharedPreferences(switchPreferenceName, Context.MODE_PRIVATE);
|
mSwitchPreference = context.getSharedPreferences(switchPreferenceName, Context.MODE_PRIVATE);
|
||||||
mSwitchPreference.registerOnSharedPreferenceChangeListener(this);
|
mSwitchPreference.registerOnSharedPreferenceChangeListener(this);
|
||||||
setTitle(mAccount.user.name);
|
setTitle(mAccount.user.name);
|
||||||
setSummary(String.format("@%s", mAccount.user.screen_name));
|
setSummary(String.format("@%s", mAccount.user.screen_name));
|
||||||
mImageLoader.loadProfileImage(mAccount, this);
|
mImageLoader.loadProfileImage(mAccount, this);
|
||||||
|
setWidgetLayoutResource(R.layout.layout_preference_switch_indicator);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -168,6 +175,13 @@ public abstract class AccountsListPreference extends PreferenceCategory implemen
|
||||||
if (summaryView instanceof TextView) {
|
if (summaryView instanceof TextView) {
|
||||||
((TextView) summaryView).setSingleLine(true);
|
((TextView) summaryView).setSingleLine(true);
|
||||||
}
|
}
|
||||||
|
final SwitchCompat switchView = (SwitchCompat) holder.findViewById(android.R.id.toggle);
|
||||||
|
if (mSwitchKey != null) {
|
||||||
|
switchView.setChecked(mSwitchPreference.getBoolean(mSwitchKey, mSwitchDefault));
|
||||||
|
switchView.setVisibility(View.VISIBLE);
|
||||||
|
} else {
|
||||||
|
switchView.setVisibility(View.GONE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,15 +25,6 @@ import org.mariotaku.twidere.constant.SharedPreferenceConstants.*
|
||||||
|
|
||||||
class AccountNotificationSettingsFragment : BaseAccountPreferenceFragment() {
|
class AccountNotificationSettingsFragment : BaseAccountPreferenceFragment() {
|
||||||
|
|
||||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
|
||||||
super.onActivityCreated(savedInstanceState)
|
|
||||||
val preference = findPreference(KEY_NOTIFICATION_LIGHT_COLOR)
|
|
||||||
val account = account
|
|
||||||
if (preference != null && account != null) {
|
|
||||||
preference.setDefaultValue(account.color)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override val preferencesResource: Int
|
override val preferencesResource: Int
|
||||||
get() = R.xml.preferences_account_notifications
|
get() = R.xml.preferences_account_notifications
|
||||||
|
|
||||||
|
@ -43,4 +34,13 @@ class AccountNotificationSettingsFragment : BaseAccountPreferenceFragment() {
|
||||||
override val switchPreferenceKey: String?
|
override val switchPreferenceKey: String?
|
||||||
get() = KEY_NOTIFICATION
|
get() = KEY_NOTIFICATION
|
||||||
|
|
||||||
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
|
super.onActivityCreated(savedInstanceState)
|
||||||
|
val preference = findPreference(KEY_NOTIFICATION_LIGHT_COLOR)
|
||||||
|
val account = account
|
||||||
|
if (preference != null && account != null) {
|
||||||
|
preference.setDefaultValue(account.color)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,10 +34,9 @@ class AccountRefreshSettingsFragment : BaseAccountPreferenceFragment() {
|
||||||
get() = DEFAULT_AUTO_REFRESH
|
get() = DEFAULT_AUTO_REFRESH
|
||||||
|
|
||||||
override val switchPreferenceKey: String?
|
override val switchPreferenceKey: String?
|
||||||
get() = null
|
get() = KEY_AUTO_REFRESH
|
||||||
|
|
||||||
override fun onSharedPreferenceChanged(preferences: SharedPreferences, key: String) {
|
override fun onSharedPreferenceChanged(preferences: SharedPreferences, key: String) {
|
||||||
val activity = activity ?: return
|
|
||||||
if (KEY_AUTO_REFRESH == key) {
|
if (KEY_AUTO_REFRESH == key) {
|
||||||
Utils.startRefreshServiceIfNeeded(activity)
|
Utils.startRefreshServiceIfNeeded(activity)
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@ import android.widget.CompoundButton
|
||||||
import android.widget.CompoundButton.OnCheckedChangeListener
|
import android.widget.CompoundButton.OnCheckedChangeListener
|
||||||
import org.mariotaku.twidere.R
|
import org.mariotaku.twidere.R
|
||||||
import org.mariotaku.twidere.TwidereConstants.ACCOUNT_PREFERENCES_NAME_PREFIX
|
import org.mariotaku.twidere.TwidereConstants.ACCOUNT_PREFERENCES_NAME_PREFIX
|
||||||
import org.mariotaku.twidere.constant.IntentConstants
|
import org.mariotaku.twidere.constant.IntentConstants.EXTRA_ACCOUNT
|
||||||
import org.mariotaku.twidere.constant.SharedPreferenceConstants.KEY_NAME_FIRST
|
import org.mariotaku.twidere.constant.SharedPreferenceConstants.KEY_NAME_FIRST
|
||||||
import org.mariotaku.twidere.model.AccountDetails
|
import org.mariotaku.twidere.model.AccountDetails
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@ abstract class BaseAccountPreferenceFragment : BasePreferenceFragment(), OnCheck
|
||||||
|
|
||||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||||
val pm = preferenceManager
|
val pm = preferenceManager
|
||||||
val account: AccountDetails = arguments.getParcelable(IntentConstants.EXTRA_ACCOUNT) ?: return
|
val account: AccountDetails = arguments.getParcelable(EXTRA_ACCOUNT) ?: return
|
||||||
val preferenceName = "$ACCOUNT_PREFERENCES_NAME_PREFIX${account.key}"
|
val preferenceName = "$ACCOUNT_PREFERENCES_NAME_PREFIX${account.key}"
|
||||||
pm.sharedPreferencesName = preferenceName
|
pm.sharedPreferencesName = preferenceName
|
||||||
addPreferencesFromResource(preferencesResource)
|
addPreferencesFromResource(preferencesResource)
|
||||||
|
@ -73,14 +73,15 @@ abstract class BaseAccountPreferenceFragment : BasePreferenceFragment(), OnCheck
|
||||||
if (prefs.getBoolean(switchPreferenceKey, switchPreferenceDefault) != isChecked) {
|
if (prefs.getBoolean(switchPreferenceKey, switchPreferenceDefault) != isChecked) {
|
||||||
editor.putBoolean(switchPreferenceKey, isChecked)
|
editor.putBoolean(switchPreferenceKey, isChecked)
|
||||||
editor.apply()
|
editor.apply()
|
||||||
|
updatePreferenceScreen()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) {
|
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
||||||
val switchKey = switchPreferenceKey
|
val switchKey = switchPreferenceKey
|
||||||
if (!TextUtils.isEmpty(switchKey)) {
|
if (!TextUtils.isEmpty(switchKey)) {
|
||||||
inflater!!.inflate(R.menu.menu_switch_preference, menu)
|
inflater.inflate(R.menu.menu_switch_preference, menu)
|
||||||
val actionView = menu!!.findItem(R.id.toggle).actionView
|
val actionView = menu.findItem(R.id.toggle).actionView
|
||||||
val toggle = actionView.findViewById(android.R.id.toggle) as CompoundButton
|
val toggle = actionView.findViewById(android.R.id.toggle) as CompoundButton
|
||||||
val prefs = preferenceManager.sharedPreferences
|
val prefs = preferenceManager.sharedPreferences
|
||||||
toggle.setOnCheckedChangeListener(this)
|
toggle.setOnCheckedChangeListener(this)
|
||||||
|
@ -97,8 +98,7 @@ abstract class BaseAccountPreferenceFragment : BasePreferenceFragment(), OnCheck
|
||||||
|
|
||||||
protected val account: AccountDetails?
|
protected val account: AccountDetails?
|
||||||
get() {
|
get() {
|
||||||
val args = arguments ?: return null
|
return arguments?.getParcelable(EXTRA_ACCOUNT)
|
||||||
return args.getParcelable<AccountDetails>(IntentConstants.EXTRA_ACCOUNT)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract val preferencesResource: Int
|
protected abstract val preferencesResource: Int
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<FrameLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_gravity="center">
|
||||||
|
|
||||||
|
<android.support.v7.widget.SwitchCompat
|
||||||
|
android:id="@android:id/toggle"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:clickable="false"
|
||||||
|
android:focusable="false"/>
|
||||||
|
</FrameLayout>
|
|
@ -4,13 +4,7 @@
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:title="@string/auto_refresh">
|
android:title="@string/auto_refresh">
|
||||||
|
|
||||||
<SwitchPreferenceCompat
|
|
||||||
android:disableDependentsState="false"
|
|
||||||
android:key="auto_refresh"
|
|
||||||
android:title="@string/auto_refresh"/>
|
|
||||||
|
|
||||||
<PreferenceCategory
|
<PreferenceCategory
|
||||||
android:dependency="auto_refresh"
|
|
||||||
android:key="cat_refresh_content"
|
android:key="cat_refresh_content"
|
||||||
android:title="@string/content_to_refresh">
|
android:title="@string/content_to_refresh">
|
||||||
<SwitchPreferenceCompat
|
<SwitchPreferenceCompat
|
||||||
|
|
Loading…
Reference in New Issue