Refactor Date & Time Settings

- Rid off AbstractPreferenceController

Test: robotest
Bug: 235445309
Change-Id: I61118a0ff580231973509c06e84e7088dba897f5
This commit is contained in:
Edgar Wang
2023-11-16 20:34:31 +08:00
parent 6bb2c73579
commit fdab44f9e7
16 changed files with 339 additions and 434 deletions

View File

@@ -33,14 +33,12 @@ import android.widget.DatePicker;
import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settingslib.RestrictedPreference;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settings.core.BasePreferenceController;
import java.util.Calendar;
public class DatePreferenceController extends AbstractPreferenceController
implements PreferenceControllerMixin, DatePickerDialog.OnDateSetListener {
public class DatePreferenceController extends BasePreferenceController
implements DatePickerDialog.OnDateSetListener {
public interface DatePreferenceHost extends UpdateTimeAndDateCallback {
void showDatePicker();
@@ -49,49 +47,45 @@ public class DatePreferenceController extends AbstractPreferenceController
public static final int DIALOG_DATEPICKER = 0;
private static final String TAG = "DatePreferenceController";
private static final String KEY_DATE = "date";
private final DatePreferenceHost mHost;
private DatePreferenceHost mHost;
private final TimeManager mTimeManager;
public DatePreferenceController(Context context, DatePreferenceHost host) {
super(context);
mHost = host;
public DatePreferenceController(Context context, String preferenceKey) {
super(context, preferenceKey);
mTimeManager = context.getSystemService(TimeManager.class);
}
public void setHost(DatePreferenceHost host) {
mHost = host;
}
@Override
public boolean isAvailable() {
return true;
public int getAvailabilityStatus() {
return isEnabled() ? AVAILABLE : DISABLED_DEPENDENT_SETTING;
}
@Override
public void updateState(Preference preference) {
if (!(preference instanceof RestrictedPreference)) {
return;
}
final Calendar now = Calendar.getInstance();
preference.setSummary(DateFormat.getLongDateFormat(mContext).format(now.getTime()));
if (!((RestrictedPreference) preference).isDisabledByAdmin()) {
boolean enableManualDateSelection = isEnabled();
preference.setEnabled(enableManualDateSelection);
}
super.updateState(preference);
preference.setEnabled(isEnabled());
}
@Override
public CharSequence getSummary() {
Calendar now = Calendar.getInstance();
return DateFormat.getLongDateFormat(mContext).format(now.getTime());
}
@Override
public boolean handlePreferenceTreeClick(Preference preference) {
if (!TextUtils.equals(preference.getKey(), KEY_DATE)) {
if (!TextUtils.equals(getPreferenceKey(), preference.getKey())) {
return false;
}
mHost.showDatePicker();
return true;
}
@Override
public String getPreferenceKey() {
return KEY_DATE;
}
@Override
public void onDateSet(DatePicker view, int year, int month, int day) {
setDate(year, month, day);