ultrasonic-app-subsonic-and.../ultrasonic/src/main/java/org/moire/ultrasonic/util/TimeSpanPreferenceDialogFra...

87 lines
2.0 KiB
Java

package org.moire.ultrasonic.util;
import android.content.Context;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.preference.DialogPreference;
import androidx.preference.Preference;
import androidx.preference.PreferenceDialogFragmentCompat;
import org.moire.ultrasonic.R;
import java.util.Locale;
import java.util.regex.Pattern;
/**
* Created by Joshua Bahnsen on 12/22/13.
*/
public class TimeSpanPreferenceDialogFragmentCompat extends PreferenceDialogFragmentCompat implements DialogPreference.TargetFragment
{
private static final Pattern COMPILE = Pattern.compile(":");
Context context;
TimeSpanPicker picker;
@Override
protected View onCreateDialogView(Context context) {
picker = new TimeSpanPicker(context);
this.context = context;
picker.setTimeSpanDisableText(this.context.getResources().getString(R.string.no_expiration));
Preference preference = getPreference();
String persisted = preference.getSharedPreferences().getString(preference.getKey(), "");
if (!"".equals(persisted))
{
String[] split = COMPILE.split(persisted);
if (split.length == 2)
{
String amount = split[0];
if ("0".equals(amount) || "".equals(amount))
{
picker.setTimeSpanDisableCheckboxChecked(true);
}
picker.setTimeSpanAmount(amount);
picker.setTimeSpanType(split[1]);
}
}
else
{
picker.setTimeSpanDisableCheckboxChecked(true);
}
return picker;
}
@Override
public void onDialogClosed(boolean positiveResult)
{
String persisted = "";
if (picker.getTimeSpanEnabled())
{
int tsAmount = picker.getTimeSpanAmount();
if (tsAmount > 0)
{
String tsType = picker.getTimeSpanType();
persisted = String.format(Locale.US, "%d:%s", tsAmount, tsType);
}
}
Preference preference = getPreference();
preference.getSharedPreferences().edit().putString(preference.getKey(), persisted).apply();
}
@Nullable
@Override
public Preference findPreference(@NonNull CharSequence key) {
return getPreference();
}
}