Add DateShortcutPreferences

pull/281/head
Alex Baker 9 years ago
parent 739b6df9f0
commit 6c20f8852d

@ -299,6 +299,11 @@
android:label="@string/EPr_appearance_header"
android:theme="@style/Tasks" />
<activity
android:name=".preferences.DateShortcutPreferences"
android:label="@string/date_shortcuts"
android:theme="@style/Tasks" />
<activity
android:name="com.todoroo.astrid.core.DefaultsPreferences"
android:label="@string/task_defaults"

@ -36,6 +36,7 @@ import org.tasks.activities.PurgeDeletedActivity;
import org.tasks.preferences.AppearancePreferences;
import org.tasks.preferences.BackupPreferences;
import org.tasks.preferences.BasicPreferences;
import org.tasks.preferences.DateShortcutPreferences;
import org.tasks.preferences.HelpAndFeedbackActivity;
import org.tasks.preferences.MiscellaneousPreferences;
import org.tasks.reminders.NotificationActivity;
@ -86,7 +87,8 @@ import dagger.Provides;
BackupPreferences.class,
LocationPickerActivity.class,
NotificationActivity.class,
HelpAndFeedbackActivity.class
HelpAndFeedbackActivity.class,
DateShortcutPreferences.class
})
public class ActivityModule {

@ -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();
}
}

@ -44,7 +44,7 @@ public class SnoozeDialog extends InjectingDialogFragment {
}
private void add(int resId, DateTime dateTime) {
adapter.add(getString(resId, getTimeString(context, dateTime.toDate())));
adapter.add(String.format("%s (%s)", getString(resId), getTimeString(context, dateTime.toDate())));
snoozeTimes.add(dateTime.getMillis());
}

@ -3,4 +3,8 @@
<integer name="default_quiet_hours_start">79200000</integer> <!-- 22:00 -->
<integer name="default_quiet_hours_end">36000000</integer> <!-- 10:00 -->
<integer name="default_remind_time">64800000</integer> <!-- 18:00 -->
<integer name="default_morning">32400000</integer> <!-- 09:00 -->
<integer name="default_afternoon">46800000</integer> <!-- 13:00 -->
<integer name="default_evening">61200000</integer> <!-- 17:00 -->
<integer name="default_night">72000000</integer> <!-- 20:00 -->
</resources>

@ -105,13 +105,16 @@
<string name="geolocation_reminders">Geolocation Reminders</string>
<string name="tags">Tags</string>
<string name="filters">Filters</string>
<string name="date_shortcuts">Date shortcuts</string>
<string name="date_shortcut_hour">For an hour</string>
<string name="date_shortcut_morning">Morning (%s)</string>
<string name="date_shortcut_afternoon">Afternoon (%s)</string>
<string name="date_shortcut_evening">Evening (%s)</string>
<string name="date_shortcut_night">Night (%s)</string>
<string name="date_shortcut_tomorrow_morning">Tomorrow morning (%s)</string>
<string name="date_shortcut_tomorrow_afternoon">Tomorrow afternoon (%s)</string>
<string name="date_shortcut_morning">Morning</string>
<string name="date_shortcut_afternoon">Afternoon</string>
<string name="date_shortcut_evening">Evening</string>
<string name="date_shortcut_night">Night</string>
<string name="date_shortcut_tomorrow_morning">Tomorrow morning</string>
<string name="date_shortcut_tomorrow_afternoon">Tomorrow afternoon</string>
<string name="date_shortcut_must_come_before">%1$s must come before %2$s</string>
<string name="date_shortcut_must_come_after">%1$s must come after %2$s</string>
<string-array name="sync_SPr_interval_entries">
<!-- sync_SPr_interval_entries: Synchronization Intervals -->

@ -15,6 +15,12 @@
android:targetPackage="org.tasks" />
</Preference>
<Preference android:title="@string/date_shortcuts">
<intent
android:targetClass="org.tasks.preferences.DateShortcutPreferences"
android:targetPackage="org.tasks" />
</Preference>
<Preference
android:key="@string/synchronization"
android:title="@string/synchronization">

@ -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…
Cancel
Save