Only redraw task list if appearance prefs change

pull/253/head
Alex Baker 11 years ago
parent 1c9c44ce34
commit 85e219aa5e

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

@ -33,6 +33,7 @@ import org.tasks.activities.DonationActivity;
import org.tasks.activities.ExportTaskActivity;
import org.tasks.activities.ImportTaskActivity;
import org.tasks.activities.PurgeDeletedActivity;
import org.tasks.preferences.AppearancePreferences;
import org.tasks.preferences.BasicPreferences;
import org.tasks.preferences.HelpAndFeedbackActivity;
import org.tasks.preferences.MiscellaneousPreferences;
@ -80,7 +81,8 @@ import dagger.Provides;
ClearGtaskDataActivity.class,
ReminderPreferences.class,
HelpAndFeedbackActivity.class,
DonationActivity.class
DonationActivity.class,
AppearancePreferences.class
})
public class ActivityModule {

@ -0,0 +1,34 @@
package org.tasks.preferences;
import android.content.Intent;
import android.os.Bundle;
import android.preference.Preference;
import org.tasks.R;
import org.tasks.injection.InjectingPreferenceActivity;
public class AppearancePreferences extends InjectingPreferenceActivity {
public static String FORCE_REFRESH = "force_refresh";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences_appearance);
setRefreshOnChange(R.string.p_use_dark_theme);
setRefreshOnChange(R.string.p_fontSize);
setRefreshOnChange(R.string.p_fullTaskTitle);
}
private void setRefreshOnChange(int resId) {
findPreference(getString(resId)).setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
setResult(RESULT_OK, new Intent().putExtra(FORCE_REFRESH, true));
return true;
}
});
}
}

@ -1,12 +1,16 @@
package org.tasks.preferences;
import android.content.Intent;
import android.os.Bundle;
import android.preference.Preference;
import org.tasks.R;
import org.tasks.injection.InjectingPreferenceActivity;
public class BasicPreferences extends InjectingPreferenceActivity {
private static final int RC_PREFS = 10001;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@ -14,6 +18,13 @@ public class BasicPreferences extends InjectingPreferenceActivity {
String action = getIntent().getAction();
if (action == null) {
addPreferencesFromResource(R.xml.preferences);
findPreference(getString(R.string.EPr_appearance_header)).setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
startActivityForResult(new Intent(BasicPreferences.this, AppearancePreferences.class), RC_PREFS);
return true;
}
});
} else if (action.equals(getString(R.string.EPr_appearance_header))) {
toolbar.setTitle(getString(R.string.EPr_appearance_header));
addPreferencesFromResource(R.xml.preferences_appearance);
@ -22,4 +33,13 @@ public class BasicPreferences extends InjectingPreferenceActivity {
addPreferencesFromResource(R.xml.preferences_backup);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == RC_PREFS) {
setResult(resultCode, data);
} else {
super.onActivityResult(requestCode, resultCode, data);
}
}
}

@ -43,6 +43,7 @@ import org.tasks.filters.FilterCounter;
import org.tasks.filters.FilterProvider;
import org.tasks.injection.ForApplication;
import org.tasks.injection.InjectingFragment;
import org.tasks.preferences.AppearancePreferences;
import org.tasks.preferences.BasicPreferences;
import org.tasks.preferences.HelpAndFeedbackActivity;
import org.tasks.preferences.Preferences;
@ -115,8 +116,10 @@ public class NavigationDrawerFragment extends InjectingFragment {
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == ACTIVITY_SETTINGS) {
getActivity().finish();
getActivity().startActivity(getActivity().getIntent());
if (resultCode == Activity.RESULT_OK && data.getBooleanExtra(AppearancePreferences.FORCE_REFRESH, false)) {
getActivity().finish();
getActivity().startActivity(getActivity().getIntent());
}
} else {
super.onActivityResult(requestCode, resultCode, data);
}
@ -136,12 +139,14 @@ public class NavigationDrawerFragment extends InjectingFragment {
layout.findViewById(R.id.settings_row).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
closeMenu();
startActivityForResult(new Intent(getActivity(), BasicPreferences.class), ACTIVITY_SETTINGS);
}
});
layout.findViewById(R.id.help_row).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
closeMenu();
startActivity(new Intent(getActivity(), HelpAndFeedbackActivity.class));
}
});

@ -1,12 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<Preference android:title="@string/EPr_appearance_header">
<intent
android:action="@string/EPr_appearance_header"
android:targetClass="org.tasks.preferences.BasicPreferences"
android:targetPackage="org.tasks" />
</Preference>
<Preference
android:key="@string/EPr_appearance_header"
android:title="@string/EPr_appearance_header" />
<Preference android:title="@string/notifications">
<intent

Loading…
Cancel
Save