|
|
@ -1,29 +1,26 @@
|
|
|
|
package org.tasks.preferences;
|
|
|
|
package org.tasks.preferences;
|
|
|
|
|
|
|
|
|
|
|
|
import android.content.Intent;
|
|
|
|
import android.content.Intent;
|
|
|
|
import android.content.res.Resources;
|
|
|
|
|
|
|
|
import android.os.Bundle;
|
|
|
|
import android.os.Bundle;
|
|
|
|
import android.preference.Preference;
|
|
|
|
import android.preference.Preference;
|
|
|
|
import android.preference.PreferenceGroup;
|
|
|
|
|
|
|
|
import android.preference.PreferenceScreen;
|
|
|
|
|
|
|
|
import android.speech.tts.TextToSpeech;
|
|
|
|
import android.speech.tts.TextToSpeech;
|
|
|
|
import android.text.TextUtils;
|
|
|
|
import android.text.TextUtils;
|
|
|
|
|
|
|
|
|
|
|
|
import com.todoroo.astrid.data.TaskAttachment;
|
|
|
|
import com.todoroo.astrid.data.TaskAttachment;
|
|
|
|
import com.todoroo.astrid.files.FileExplore;
|
|
|
|
import com.todoroo.astrid.files.FileExplore;
|
|
|
|
import com.todoroo.astrid.gcal.CalendarAlarmScheduler;
|
|
|
|
import com.todoroo.astrid.gcal.CalendarAlarmScheduler;
|
|
|
|
import com.todoroo.astrid.utility.TodorooPreferenceActivity;
|
|
|
|
|
|
|
|
import com.todoroo.astrid.voice.VoiceOutputAssistant;
|
|
|
|
import com.todoroo.astrid.voice.VoiceOutputAssistant;
|
|
|
|
|
|
|
|
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
import org.tasks.R;
|
|
|
|
import org.tasks.R;
|
|
|
|
|
|
|
|
import org.tasks.injection.InjectingPreferenceActivity;
|
|
|
|
|
|
|
|
|
|
|
|
import javax.inject.Inject;
|
|
|
|
import javax.inject.Inject;
|
|
|
|
|
|
|
|
|
|
|
|
import static com.todoroo.andlib.utility.AndroidUtilities.preFroyo;
|
|
|
|
import static com.todoroo.andlib.utility.AndroidUtilities.preFroyo;
|
|
|
|
|
|
|
|
|
|
|
|
public class MiscellaneousPreferences extends TodorooPreferenceActivity {
|
|
|
|
public class MiscellaneousPreferences extends InjectingPreferenceActivity {
|
|
|
|
|
|
|
|
|
|
|
|
private static final Logger log = LoggerFactory.getLogger(MiscellaneousPreferences.class);
|
|
|
|
private static final Logger log = LoggerFactory.getLogger(MiscellaneousPreferences.class);
|
|
|
|
private static final int REQUEST_CODE_FILES_DIR = 2;
|
|
|
|
private static final int REQUEST_CODE_FILES_DIR = 2;
|
|
|
@ -37,37 +34,19 @@ public class MiscellaneousPreferences extends TodorooPreferenceActivity {
|
|
|
|
public void onCreate(Bundle savedInstanceState) {
|
|
|
|
public void onCreate(Bundle savedInstanceState) {
|
|
|
|
super.onCreate(savedInstanceState);
|
|
|
|
super.onCreate(savedInstanceState);
|
|
|
|
|
|
|
|
|
|
|
|
PreferenceScreen screen = getPreferenceScreen();
|
|
|
|
addPreferencesFromResource(R.xml.preferences_misc);
|
|
|
|
|
|
|
|
|
|
|
|
screen.findPreference(getString(R.string.p_files_dir)).setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
|
|
|
|
findPreference(getString(R.string.p_debug_logging)).setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public boolean onPreferenceClick(Preference p) {
|
|
|
|
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
|
|
|
Intent filesDir = new Intent(MiscellaneousPreferences.this, FileExplore.class);
|
|
|
|
preferences.setupLogger((boolean) newValue);
|
|
|
|
filesDir.putExtra(FileExplore.EXTRA_DIRECTORIES_SELECTABLE, true);
|
|
|
|
|
|
|
|
startActivityForResult(filesDir, REQUEST_CODE_FILES_DIR);
|
|
|
|
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
addPreferenceListeners();
|
|
|
|
initializeAttachmentDirectoryPreference();
|
|
|
|
}
|
|
|
|
initializeCalendarReminderPreference();
|
|
|
|
|
|
|
|
initializeVoiceReminderPreference();
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public int getPreferenceResource() {
|
|
|
|
|
|
|
|
return R.xml.preferences_misc;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void updatePreferences(Preference preference, Object value) {
|
|
|
|
|
|
|
|
final Resources r = getResources();
|
|
|
|
|
|
|
|
if (r.getString(R.string.p_files_dir).equals(preference.getKey())) {
|
|
|
|
|
|
|
|
String dir = preferences.getStringValue(TaskAttachment.FILES_DIRECTORY_PREF);
|
|
|
|
|
|
|
|
preference.setSummary(TextUtils.isEmpty(dir)
|
|
|
|
|
|
|
|
? r.getString(R.string.p_files_dir_desc_default)
|
|
|
|
|
|
|
|
: dir);
|
|
|
|
|
|
|
|
} else if (r.getString(R.string.p_voiceRemindersEnabled).equals(preference.getKey())) {
|
|
|
|
|
|
|
|
onVoiceReminderStatusChanged(preference, (Boolean) value);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
@ -76,6 +55,7 @@ public class MiscellaneousPreferences extends TodorooPreferenceActivity {
|
|
|
|
if (data != null) {
|
|
|
|
if (data != null) {
|
|
|
|
String dir = data.getStringExtra(FileExplore.RESULT_DIR_SELECTED);
|
|
|
|
String dir = data.getStringExtra(FileExplore.RESULT_DIR_SELECTED);
|
|
|
|
preferences.setString(TaskAttachment.FILES_DIRECTORY_PREF, dir);
|
|
|
|
preferences.setString(TaskAttachment.FILES_DIRECTORY_PREF, dir);
|
|
|
|
|
|
|
|
updateAttachmentDirectory();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -105,19 +85,32 @@ public class MiscellaneousPreferences extends TodorooPreferenceActivity {
|
|
|
|
voiceOutputAssistant.shutdown();
|
|
|
|
voiceOutputAssistant.shutdown();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void addPreferenceListeners() {
|
|
|
|
private void initializeAttachmentDirectoryPreference() {
|
|
|
|
findPreference(getString(R.string.p_debug_logging)).setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
|
|
|
findPreference(getString(R.string.p_files_dir)).setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
|
|
|
public boolean onPreferenceClick(Preference p) {
|
|
|
|
preferences.setupLogger((boolean) newValue);
|
|
|
|
Intent filesDir = new Intent(MiscellaneousPreferences.this, FileExplore.class);
|
|
|
|
|
|
|
|
filesDir.putExtra(FileExplore.EXTRA_DIRECTORIES_SELECTABLE, true);
|
|
|
|
|
|
|
|
startActivityForResult(filesDir, REQUEST_CODE_FILES_DIR);
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
updateAttachmentDirectory();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void updateAttachmentDirectory() {
|
|
|
|
|
|
|
|
String dir = preferences.getStringValue(TaskAttachment.FILES_DIRECTORY_PREF);
|
|
|
|
|
|
|
|
findPreference(getString(R.string.p_files_dir)).setSummary(TextUtils.isEmpty(dir)
|
|
|
|
|
|
|
|
? getString(R.string.p_files_dir_desc_default)
|
|
|
|
|
|
|
|
: dir);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void initializeCalendarReminderPreference() {
|
|
|
|
|
|
|
|
Preference calendarReminderPreference = findPreference(getString(R.string.p_calendar_reminders));
|
|
|
|
if (preFroyo()) {
|
|
|
|
if (preFroyo()) {
|
|
|
|
searchForAndRemovePreference(getPreferenceScreen(), getString(R.string.p_calendar_reminders));
|
|
|
|
getPreferenceScreen().removePreference(calendarReminderPreference);
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
findPreference(getString(R.string.p_calendar_reminders)).setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
|
|
|
calendarReminderPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
|
|
|
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
|
|
|
if (newValue != null && ((Boolean) newValue)) {
|
|
|
|
if (newValue != null && ((Boolean) newValue)) {
|
|
|
@ -129,27 +122,11 @@ public class MiscellaneousPreferences extends TodorooPreferenceActivity {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private static boolean searchForAndRemovePreference(PreferenceGroup group, String key) {
|
|
|
|
private void initializeVoiceReminderPreference() {
|
|
|
|
int preferenceCount = group.getPreferenceCount();
|
|
|
|
findPreference(getString(R.string.p_voiceRemindersEnabled)).setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
|
|
|
for (int i = 0; i < preferenceCount; i++) {
|
|
|
|
@Override
|
|
|
|
final Preference preference = group.getPreference(i);
|
|
|
|
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
|
|
|
final String curKey = preference.getKey();
|
|
|
|
boolean enabled = (boolean) newValue;
|
|
|
|
|
|
|
|
|
|
|
|
if (curKey != null && curKey.equals(key)) {
|
|
|
|
|
|
|
|
group.removePreference(preference);
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (preference instanceof PreferenceGroup) {
|
|
|
|
|
|
|
|
if (searchForAndRemovePreference((PreferenceGroup) preference, key)) {
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void onVoiceReminderStatusChanged(final Preference preference, boolean enabled) {
|
|
|
|
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
if (enabled && !voiceOutputAssistant.isTTSInitialized()) {
|
|
|
|
if (enabled && !voiceOutputAssistant.isTTSInitialized()) {
|
|
|
|
Intent checkIntent = new Intent();
|
|
|
|
Intent checkIntent = new Intent();
|
|
|
@ -163,5 +140,8 @@ public class MiscellaneousPreferences extends TodorooPreferenceActivity {
|
|
|
|
preference.setEnabled(false);
|
|
|
|
preference.setEnabled(false);
|
|
|
|
preferences.setBoolean(preference.getKey(), false);
|
|
|
|
preferences.setBoolean(preference.getKey(), false);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|