MiscPrefs extends InjectingPreferenceActivity

pull/253/head
Alex Baker 10 years ago
parent e9d8bd730a
commit 333adec1ff

@ -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,39 +122,26 @@ 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;
try {
if (curKey != null && curKey.equals(key)) { if (enabled && !voiceOutputAssistant.isTTSInitialized()) {
group.removePreference(preference); Intent checkIntent = new Intent();
return true; checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
} startActivityForResult(checkIntent, REQUEST_CODE_TTS_CHECK);
} else if (!enabled && voiceOutputAssistant.isTTSInitialized()) {
if (preference instanceof PreferenceGroup) { voiceOutputAssistant.shutdown();
if (searchForAndRemovePreference((PreferenceGroup) preference, key)) { }
return true; } catch (VerifyError e) {
log.error(e.getMessage(), e);
preference.setEnabled(false);
preferences.setBoolean(preference.getKey(), false);
} }
return true;
} }
} });
return false;
}
private void onVoiceReminderStatusChanged(final Preference preference, boolean enabled) {
try {
if(enabled && !voiceOutputAssistant.isTTSInitialized()) {
Intent checkIntent = new Intent();
checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(checkIntent, REQUEST_CODE_TTS_CHECK);
} else if (!enabled && voiceOutputAssistant.isTTSInitialized()) {
voiceOutputAssistant.shutdown();
}
} catch (VerifyError e) {
log.error(e.getMessage(), e);
preference.setEnabled(false);
preferences.setBoolean(preference.getKey(), false);
}
} }
} }

@ -2,7 +2,7 @@
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:title="@string/miscellaneous"> android:title="@string/miscellaneous">
<PreferenceScreen <Preference
android:key="@string/p_files_dir" android:key="@string/p_files_dir"
android:title="@string/attachment_directory" /> android:title="@string/attachment_directory" />

Loading…
Cancel
Save