recreate settingsactivity when theme changed

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/ui/ContactDetailsActivity.java    | 2 
src/main/java/eu/siacs/conversations/ui/SettingsActivity.java          | 7 
src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java | 6 
src/main/java/eu/siacs/conversations/ui/XmppActivity.java              | 2 
src/main/java/eu/siacs/conversations/ui/adapter/ListItemAdapter.java   | 6 
5 files changed, 18 insertions(+), 5 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/ui/ContactDetailsActivity.java 🔗

@@ -250,7 +250,7 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp
 			recreate();
 		} else {
 			final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
-			this.showDynamicTags = preferences.getBoolean("show_dynamic_tags", false);
+			this.showDynamicTags = preferences.getBoolean(SettingsActivity.SHOW_DYNAMIC_TAGS, false);
 			this.showLastSeen = preferences.getBoolean("last_activity", false);
 		}
 	}

src/main/java/eu/siacs/conversations/ui/SettingsActivity.java 🔗

@@ -46,6 +46,8 @@ public class SettingsActivity extends XmppActivity implements
 	public static final String BLIND_TRUST_BEFORE_VERIFICATION = "btbv";
 	public static final String AUTOMATIC_MESSAGE_DELETION = "automatic_message_deletion";
 	public static final String BROADCAST_LAST_ACTIVITY = "last_activity";
+	public static final String THEME = "theme";
+	public static final String SHOW_DYNAMIC_TAGS = "show_dynamic_tags";
 
 	public static final int REQUEST_WRITE_LOGS = 0xbf8701;
 	private SettingsFragment mSettingsFragment;
@@ -371,6 +373,11 @@ public class SettingsActivity extends XmppActivity implements
 			reconnectAccounts();
 		} else if (name.equals(AUTOMATIC_MESSAGE_DELETION)) {
 			xmppConnectionService.expireOldMessages(true);
+		} else if (name.equals(THEME)) {
+			final int theme = findTheme();
+			if (this.mTheme != theme) {
+				recreate();
+			}
 		}
 
 	}

src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java 🔗

@@ -90,9 +90,9 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU
     private ViewPager mViewPager;
     private ListPagerAdapter mListPagerAdapter;
     private List<ListItem> contacts = new ArrayList<>();
-    private ArrayAdapter<ListItem> mContactsAdapter;
+    private ListItemAdapter mContactsAdapter;
     private List<ListItem> conferences = new ArrayList<>();
-    private ArrayAdapter<ListItem> mConferenceAdapter;
+    private ListItemAdapter mConferenceAdapter;
     private List<String> mActivatedAccounts = new ArrayList<>();
     private List<String> mKnownHosts;
     private List<String> mKnownConferenceHosts;
@@ -289,6 +289,8 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU
         } else {
             askForContactsPermissions();
         }
+        mConferenceAdapter.refreshSettings();
+        mContactsAdapter.refreshSettings();
     }
 
     @Override

src/main/java/eu/siacs/conversations/ui/XmppActivity.java 🔗

@@ -1038,7 +1038,7 @@ public abstract class XmppActivity extends Activity {
 	}
 
 	protected int findTheme() {
-		Boolean dark   = getPreferences().getString("theme", "light").equals("dark");
+		Boolean dark   = getPreferences().getString(SettingsActivity.THEME, "light").equals("dark");
 		Boolean larger = getPreferences().getBoolean("use_larger_font", false);
 
 		if(dark) {

src/main/java/eu/siacs/conversations/ui/adapter/ListItemAdapter.java 🔗

@@ -23,6 +23,7 @@ import java.util.concurrent.RejectedExecutionException;
 
 import eu.siacs.conversations.R;
 import eu.siacs.conversations.entities.ListItem;
+import eu.siacs.conversations.ui.SettingsActivity;
 import eu.siacs.conversations.ui.XmppActivity;
 import eu.siacs.conversations.utils.UIHelper;
 
@@ -45,8 +46,11 @@ public class ListItemAdapter extends ArrayAdapter<ListItem> {
 	public ListItemAdapter(XmppActivity activity, List<ListItem> objects) {
 		super(activity, 0, objects);
 		this.activity = activity;
+	}
+
+	public void refreshSettings() {
 		SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(activity);
-		this.showDynamicTags = preferences.getBoolean("show_dynamic_tags",false);
+		this.showDynamicTags = preferences.getBoolean(SettingsActivity.SHOW_DYNAMIC_TAGS,false);
 	}
 
 	@Override