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.PreferenceManager;
|
||||
import android.support.v7.preference.PreferenceViewHolder;
|
||||
import android.support.v7.widget.SwitchCompat;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
|
@ -100,22 +101,28 @@ public abstract class AccountsListPreference extends PreferenceCategory implemen
|
|||
OnSharedPreferenceChangeListener {
|
||||
|
||||
private final AccountDetails mAccount;
|
||||
@Nullable
|
||||
private final String mSwitchKey;
|
||||
private final boolean mSwitchDefault;
|
||||
private final SharedPreferences mSwitchPreference;
|
||||
|
||||
@Inject
|
||||
MediaLoaderWrapper mImageLoader;
|
||||
|
||||
public AccountItemPreference(final Context context, final AccountDetails account, final String switchKey,
|
||||
final boolean switchDefault) {
|
||||
public AccountItemPreference(final Context context, final AccountDetails account,
|
||||
@Nullable final String switchKey, final boolean switchDefault) {
|
||||
super(context);
|
||||
GeneralComponentHelper.build(context).inject(this);
|
||||
final String switchPreferenceName = ACCOUNT_PREFERENCES_NAME_PREFIX + account.key;
|
||||
mAccount = account;
|
||||
mSwitchKey = switchKey;
|
||||
mSwitchDefault = switchDefault;
|
||||
mSwitchPreference = context.getSharedPreferences(switchPreferenceName, Context.MODE_PRIVATE);
|
||||
mSwitchPreference.registerOnSharedPreferenceChangeListener(this);
|
||||
setTitle(mAccount.user.name);
|
||||
setSummary(String.format("@%s", mAccount.user.screen_name));
|
||||
mImageLoader.loadProfileImage(mAccount, this);
|
||||
setWidgetLayoutResource(R.layout.layout_preference_switch_indicator);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -168,6 +175,13 @@ public abstract class AccountsListPreference extends PreferenceCategory implemen
|
|||
if (summaryView instanceof TextView) {
|
||||
((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() {
|
||||
|
||||
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
|
||||
get() = R.xml.preferences_account_notifications
|
||||
|
||||
|
@ -43,4 +34,13 @@ class AccountNotificationSettingsFragment : BaseAccountPreferenceFragment() {
|
|||
override val switchPreferenceKey: String?
|
||||
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
|
||||
|
||||
override val switchPreferenceKey: String?
|
||||
get() = null
|
||||
get() = KEY_AUTO_REFRESH
|
||||
|
||||
override fun onSharedPreferenceChanged(preferences: SharedPreferences, key: String) {
|
||||
val activity = activity ?: return
|
||||
if (KEY_AUTO_REFRESH == key) {
|
||||
Utils.startRefreshServiceIfNeeded(activity)
|
||||
}
|
||||
|
|
|
@ -30,7 +30,7 @@ import android.widget.CompoundButton
|
|||
import android.widget.CompoundButton.OnCheckedChangeListener
|
||||
import org.mariotaku.twidere.R
|
||||
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.model.AccountDetails
|
||||
|
||||
|
@ -43,7 +43,7 @@ abstract class BaseAccountPreferenceFragment : BasePreferenceFragment(), OnCheck
|
|||
|
||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||
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}"
|
||||
pm.sharedPreferencesName = preferenceName
|
||||
addPreferencesFromResource(preferencesResource)
|
||||
|
@ -73,14 +73,15 @@ abstract class BaseAccountPreferenceFragment : BasePreferenceFragment(), OnCheck
|
|||
if (prefs.getBoolean(switchPreferenceKey, switchPreferenceDefault) != isChecked) {
|
||||
editor.putBoolean(switchPreferenceKey, isChecked)
|
||||
editor.apply()
|
||||
updatePreferenceScreen()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) {
|
||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
||||
val switchKey = switchPreferenceKey
|
||||
if (!TextUtils.isEmpty(switchKey)) {
|
||||
inflater!!.inflate(R.menu.menu_switch_preference, menu)
|
||||
val actionView = menu!!.findItem(R.id.toggle).actionView
|
||||
inflater.inflate(R.menu.menu_switch_preference, menu)
|
||||
val actionView = menu.findItem(R.id.toggle).actionView
|
||||
val toggle = actionView.findViewById(android.R.id.toggle) as CompoundButton
|
||||
val prefs = preferenceManager.sharedPreferences
|
||||
toggle.setOnCheckedChangeListener(this)
|
||||
|
@ -97,8 +98,7 @@ abstract class BaseAccountPreferenceFragment : BasePreferenceFragment(), OnCheck
|
|||
|
||||
protected val account: AccountDetails?
|
||||
get() {
|
||||
val args = arguments ?: return null
|
||||
return args.getParcelable<AccountDetails>(IntentConstants.EXTRA_ACCOUNT)
|
||||
return arguments?.getParcelable(EXTRA_ACCOUNT)
|
||||
}
|
||||
|
||||
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"
|
||||
android:title="@string/auto_refresh">
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
android:disableDependentsState="false"
|
||||
android:key="auto_refresh"
|
||||
android:title="@string/auto_refresh"/>
|
||||
|
||||
<PreferenceCategory
|
||||
android:dependency="auto_refresh"
|
||||
android:key="cat_refresh_content"
|
||||
android:title="@string/content_to_refresh">
|
||||
<SwitchPreferenceCompat
|
||||
|
@ -32,13 +26,13 @@
|
|||
</PreferenceCategory>
|
||||
|
||||
<!--<PreferenceCategory-->
|
||||
<!--android:enabled="false"-->
|
||||
<!--android:key="cat_streaming"-->
|
||||
<!--android:title="@string/streaming">-->
|
||||
<!--android:enabled="false"-->
|
||||
<!--android:key="cat_streaming"-->
|
||||
<!--android:title="@string/streaming">-->
|
||||
|
||||
<!--<SwitchPreference-->
|
||||
<!--android:key="enable_streaming"-->
|
||||
<!--android:title="@string/enable_streaming"/>-->
|
||||
<!--<SwitchPreference-->
|
||||
<!--android:key="enable_streaming"-->
|
||||
<!--android:title="@string/enable_streaming"/>-->
|
||||
|
||||
<!--</PreferenceCategory>-->
|
||||
|
||||
|
|
Loading…
Reference in New Issue