mirror of https://github.com/tasks/tasks
Add DateShortcutPreferences
parent
739b6df9f0
commit
6c20f8852d
@ -0,0 +1,138 @@
|
|||||||
|
package org.tasks.preferences;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.preference.Preference;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import org.joda.time.DateTime;
|
||||||
|
import org.tasks.R;
|
||||||
|
import org.tasks.activities.TimePickerActivity;
|
||||||
|
import org.tasks.injection.InjectingPreferenceActivity;
|
||||||
|
import org.tasks.ui.TimePreference;
|
||||||
|
|
||||||
|
public class DateShortcutPreferences extends InjectingPreferenceActivity implements Preference.OnPreferenceChangeListener {
|
||||||
|
|
||||||
|
private static final int REQUEST_MORNING = 10001;
|
||||||
|
private static final int REQUEST_AFTERNOON = 10002;
|
||||||
|
private static final int REQUEST_EVENING = 10003;
|
||||||
|
private static final int REQUEST_NIGHT = 10004;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
|
addPreferencesFromResource(R.xml.preferences_date_shortcuts);
|
||||||
|
|
||||||
|
initializeTimePreference(getMorningPreference(), REQUEST_MORNING);
|
||||||
|
initializeTimePreference(getAfternoonPreference(), REQUEST_AFTERNOON);
|
||||||
|
initializeTimePreference(getEveningPreference(), REQUEST_EVENING);
|
||||||
|
initializeTimePreference(getNightPreference(), REQUEST_NIGHT);
|
||||||
|
}
|
||||||
|
|
||||||
|
private TimePreference getMorningPreference() {
|
||||||
|
return getTimePreference(R.string.p_date_shortcut_morning);
|
||||||
|
}
|
||||||
|
|
||||||
|
private TimePreference getAfternoonPreference() {
|
||||||
|
return getTimePreference(R.string.p_date_shortcut_afternoon);
|
||||||
|
}
|
||||||
|
|
||||||
|
private TimePreference getEveningPreference() {
|
||||||
|
return getTimePreference(R.string.p_date_shortcut_evening);
|
||||||
|
}
|
||||||
|
|
||||||
|
private TimePreference getNightPreference() {
|
||||||
|
return getTimePreference(R.string.p_date_shortcut_night);
|
||||||
|
}
|
||||||
|
|
||||||
|
private TimePreference getTimePreference(int resId) {
|
||||||
|
return (TimePreference) findPreference(getString(resId));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initializeTimePreference(final TimePreference preference, final int requestCode) {
|
||||||
|
preference.setOnPreferenceChangeListener(this);
|
||||||
|
preference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
|
||||||
|
@Override
|
||||||
|
public boolean onPreferenceClick(Preference ignored) {
|
||||||
|
final DateTime current = new DateTime().withMillisOfDay(preference.getMillisOfDay());
|
||||||
|
startActivityForResult(new Intent(DateShortcutPreferences.this, TimePickerActivity.class) {{
|
||||||
|
putExtra(TimePickerActivity.EXTRA_TIMESTAMP, current.getMillis());
|
||||||
|
}}, requestCode);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||||
|
if (resultCode == RESULT_OK) {
|
||||||
|
switch (requestCode) {
|
||||||
|
case REQUEST_MORNING:
|
||||||
|
getMorningPreference().handleTimePickerActivityIntent(data);
|
||||||
|
return;
|
||||||
|
case REQUEST_AFTERNOON:
|
||||||
|
getAfternoonPreference().handleTimePickerActivityIntent(data);
|
||||||
|
return;
|
||||||
|
case REQUEST_EVENING:
|
||||||
|
getEveningPreference().handleTimePickerActivityIntent(data);
|
||||||
|
return;
|
||||||
|
case REQUEST_NIGHT:
|
||||||
|
getNightPreference().handleTimePickerActivityIntent(data);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
super.onActivityResult(requestCode, resultCode, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||||
|
int millisOfDay = (int) newValue;
|
||||||
|
|
||||||
|
if (preference.equals(getMorningPreference())) {
|
||||||
|
if (millisOfDay >= getAfternoonPreference().getMillisOfDay()) {
|
||||||
|
mustComeBefore(R.string.date_shortcut_morning, R.string.date_shortcut_afternoon);
|
||||||
|
} else {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} else if (preference.equals(getAfternoonPreference())) {
|
||||||
|
if (millisOfDay <= getMorningPreference().getMillisOfDay()) {
|
||||||
|
mustComeAfter(R.string.date_shortcut_afternoon, R.string.date_shortcut_morning);
|
||||||
|
} else if (millisOfDay >= getEveningPreference().getMillisOfDay()) {
|
||||||
|
mustComeBefore(R.string.date_shortcut_afternoon, R.string.date_shortcut_evening);
|
||||||
|
} else {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} else if (preference.equals(getEveningPreference())) {
|
||||||
|
if (millisOfDay <= getAfternoonPreference().getMillisOfDay()) {
|
||||||
|
mustComeAfter(R.string.date_shortcut_evening, R.string.date_shortcut_afternoon);
|
||||||
|
} else if (millisOfDay >= getNightPreference().getMillisOfDay()) {
|
||||||
|
mustComeBefore(R.string.date_shortcut_evening, R.string.date_shortcut_night);
|
||||||
|
} else {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} else if (preference.equals(getNightPreference())) {
|
||||||
|
if (millisOfDay <= getEveningPreference().getMillisOfDay()) {
|
||||||
|
mustComeAfter(R.string.date_shortcut_night, R.string.date_shortcut_evening);
|
||||||
|
} else {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void mustComeBefore(int settingResId, int relativeResId) {
|
||||||
|
invalidSetting(R.string.date_shortcut_must_come_before, settingResId, relativeResId);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void mustComeAfter(int settingResId, int relativeResId) {
|
||||||
|
invalidSetting(R.string.date_shortcut_must_come_after, settingResId, relativeResId);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void invalidSetting(int errorResId, int settingResId, int relativeResId) {
|
||||||
|
Toast.makeText(this,
|
||||||
|
getString(errorResId, getString(settingResId), getString(relativeResId)),
|
||||||
|
Toast.LENGTH_SHORT)
|
||||||
|
.show();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,25 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
|
<org.tasks.ui.TimePreference
|
||||||
|
android:defaultValue="@integer/default_morning"
|
||||||
|
android:key="@string/p_date_shortcut_morning"
|
||||||
|
android:title="@string/date_shortcut_morning" />
|
||||||
|
|
||||||
|
<org.tasks.ui.TimePreference
|
||||||
|
android:defaultValue="@integer/default_afternoon"
|
||||||
|
android:key="@string/p_date_shortcut_afternoon"
|
||||||
|
android:title="@string/date_shortcut_afternoon" />
|
||||||
|
|
||||||
|
<org.tasks.ui.TimePreference
|
||||||
|
android:defaultValue="@integer/default_evening"
|
||||||
|
android:key="@string/p_date_shortcut_evening"
|
||||||
|
android:title="@string/date_shortcut_evening" />
|
||||||
|
|
||||||
|
<org.tasks.ui.TimePreference
|
||||||
|
android:defaultValue="@integer/default_night"
|
||||||
|
android:key="@string/p_date_shortcut_night"
|
||||||
|
android:title="@string/date_shortcut_night" />
|
||||||
|
|
||||||
|
|
||||||
|
</PreferenceScreen>
|
||||||
Loading…
Reference in New Issue