made font size selectable
This commit is contained in:
		
							parent
							
								
									1500299607
								
							
						
					
					
						commit
						8b70d945cc
					
				|  | @ -5,6 +5,7 @@ import android.preference.PreferenceManager; | |||
| import android.support.v7.app.AppCompatActivity; | ||||
| 
 | ||||
| import eu.siacs.conversations.R; | ||||
| import eu.siacs.conversations.utils.ThemeHelper; | ||||
| 
 | ||||
| import static eu.siacs.conversations.ui.XmppActivity.configureActionBar; | ||||
| 
 | ||||
|  | @ -14,10 +15,7 @@ public class AboutActivity extends AppCompatActivity { | |||
|     protected void onCreate(Bundle savedInstanceState) { | ||||
|         super.onCreate(savedInstanceState); | ||||
| 
 | ||||
|         Boolean dark = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()) | ||||
|                         .getString("theme", "light").equals("dark"); | ||||
|         int mTheme = dark ? R.style.ConversationsTheme_Dark : R.style.ConversationsTheme; | ||||
|         setTheme(mTheme); | ||||
|         setTheme(ThemeHelper.find(this)); | ||||
| 
 | ||||
|         setContentView(R.layout.activity_about); | ||||
|         setSupportActionBar(findViewById(R.id.toolbar)); | ||||
|  |  | |||
|  | @ -40,6 +40,7 @@ import java.util.logging.Logger; | |||
| import eu.siacs.conversations.R; | ||||
| import eu.siacs.conversations.entities.MTMDecision; | ||||
| import eu.siacs.conversations.services.MemorizingTrustManager; | ||||
| import eu.siacs.conversations.utils.ThemeHelper; | ||||
| 
 | ||||
| public class MemorizingActivity extends AppCompatActivity implements OnClickListener, OnCancelListener { | ||||
| 
 | ||||
|  | @ -52,7 +53,7 @@ public class MemorizingActivity extends AppCompatActivity implements OnClickList | |||
| 	@Override | ||||
| 	public void onCreate(Bundle savedInstanceState) { | ||||
| 		LOGGER.log(Level.FINE, "onCreate"); | ||||
| 		setTheme(findTheme()); | ||||
| 		setTheme(ThemeHelper.find(this)); | ||||
| 		super.onCreate(savedInstanceState); | ||||
| 		getLayoutInflater().inflate(R.layout.toolbar, findViewById(android.R.id.content)); | ||||
| 		setSupportActionBar(findViewById(R.id.toolbar)); | ||||
|  | @ -89,15 +90,6 @@ public class MemorizingActivity extends AppCompatActivity implements OnClickList | |||
| 		finish(); | ||||
| 	} | ||||
| 
 | ||||
| 	protected int findTheme() { | ||||
| 		return getPreferences().getString(SettingsActivity.THEME, getResources().getString(R.string.theme)).equals("dark") ? R.style.ConversationsTheme_Dark : R.style.ConversationsTheme; | ||||
| 	} | ||||
| 
 | ||||
| 	protected SharedPreferences getPreferences() { | ||||
| 		return PreferenceManager | ||||
| 				.getDefaultSharedPreferences(getApplicationContext()); | ||||
| 	} | ||||
| 
 | ||||
| 	// react on AlertDialog button press | ||||
| 	public void onClick(DialogInterface dialog, int btnId) { | ||||
| 		int decision; | ||||
|  |  | |||
|  | @ -71,6 +71,7 @@ import eu.siacs.conversations.services.XmppConnectionService.XmppConnectionBinde | |||
| import eu.siacs.conversations.ui.util.MenuDoubleTabUtil; | ||||
| import eu.siacs.conversations.ui.util.PresenceSelector; | ||||
| import eu.siacs.conversations.utils.ExceptionHelper; | ||||
| import eu.siacs.conversations.utils.ThemeHelper; | ||||
| import eu.siacs.conversations.xmpp.OnKeyStatusUpdated; | ||||
| import eu.siacs.conversations.xmpp.OnUpdateBlocklist; | ||||
| import rocks.xmpp.addr.Jid; | ||||
|  | @ -845,13 +846,7 @@ public abstract class XmppActivity extends AppCompatActivity { | |||
| 	} | ||||
| 
 | ||||
| 	protected int findTheme() { | ||||
| 		Boolean dark = getPreferences().getString(SettingsActivity.THEME, getResources().getString(R.string.theme)).equals("dark"); | ||||
| 
 | ||||
| 		if (dark) { | ||||
| 			return R.style.ConversationsTheme_Dark; | ||||
| 		} else { | ||||
| 			return R.style.ConversationsTheme; | ||||
| 		} | ||||
| 		return ThemeHelper.find(this); | ||||
| 	} | ||||
| 
 | ||||
| 	@Override | ||||
|  |  | |||
|  | @ -0,0 +1,56 @@ | |||
| /* | ||||
|  * Copyright (c) 2018, Daniel Gultsch All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without modification, | ||||
|  * are permitted provided that the following conditions are met: | ||||
|  * | ||||
|  * 1. Redistributions of source code must retain the above copyright notice, this | ||||
|  * list of conditions and the following disclaimer. | ||||
|  * | ||||
|  * 2. Redistributions in binary form must reproduce the above copyright notice, | ||||
|  * this list of conditions and the following disclaimer in the documentation and/or | ||||
|  * other materials provided with the distribution. | ||||
|  * | ||||
|  * 3. Neither the name of the copyright holder nor the names of its contributors | ||||
|  * may be used to endorse or promote products derived from this software without | ||||
|  * specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR | ||||
|  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON | ||||
|  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  */ | ||||
| 
 | ||||
| package eu.siacs.conversations.utils; | ||||
| 
 | ||||
| import android.content.Context; | ||||
| import android.content.SharedPreferences; | ||||
| import android.content.res.Resources; | ||||
| import android.preference.PreferenceManager; | ||||
| 
 | ||||
| import eu.siacs.conversations.R; | ||||
| import eu.siacs.conversations.ui.SettingsActivity; | ||||
| 
 | ||||
| public class ThemeHelper { | ||||
| 
 | ||||
| 	public static int find(Context context) { | ||||
| 		final SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context); | ||||
| 		final Resources resources = context.getResources(); | ||||
| 		final boolean dark = sharedPreferences.getString(SettingsActivity.THEME, resources.getString(R.string.theme)).equals("dark"); | ||||
| 		final String fontSize = sharedPreferences.getString("font_size", resources.getString(R.string.default_font_size)); | ||||
| 		switch (fontSize) { | ||||
| 			case "medium": | ||||
| 				return dark ? R.style.ConversationsTheme_Dark_Medium : R.style.ConversationsTheme_Medium; | ||||
| 			case "large": | ||||
| 				return dark ? R.style.ConversationsTheme_Dark_Large : R.style.ConversationsTheme_Large; | ||||
| 			default: | ||||
| 				return dark ? R.style.ConversationsTheme_Dark : R.style.ConversationsTheme; | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | @ -100,6 +100,14 @@ | |||
| 		<item>@string/default_on</item> | ||||
| 		<item>@string/default_off</item> | ||||
| 	</string-array> | ||||
| 	<string name="default_on">On by default</string> | ||||
| 	<string name="default_off">Off by default</string> | ||||
| 	<string-array name="font_size_entry_values"> | ||||
| 		<item>small</item> | ||||
| 		<item>medium</item> | ||||
| 		<item>large</item> | ||||
| 	</string-array> | ||||
| 	<string-array name="font_size_entries"> | ||||
| 		<item>@string/small</item> | ||||
| 		<item>@string/medium</item> | ||||
| 		<item>@string/large</item> | ||||
| 	</string-array> | ||||
| </resources> | ||||
|  |  | |||
|  | @ -43,4 +43,5 @@ | |||
|     <bool name="show_qr_code_scan">true</bool> | ||||
|     <bool name="scroll_to_bottom">true</bool> | ||||
|     <string name="omemo_setting_default">default_on</string> | ||||
|     <string name="default_font_size">small</string> | ||||
| </resources> | ||||
|  |  | |||
|  | @ -349,7 +349,7 @@ | |||
| 	<string name="could_not_verify_fingerprint">Could not verify fingerprint</string> | ||||
| 	<string name="manually_verify">Manually verify</string> | ||||
| 	<string name="are_you_sure_verify_fingerprint">Are you sure that you want to verify your contact’s OTR fingerprint?</string> | ||||
| 	<string name="pref_show_dynamic_tags">Show dynamic tags</string> | ||||
| 	<string name="pref_show_dynamic_tags">Dynamic Tags</string> | ||||
| 	<string name="pref_show_dynamic_tags_summary">Display read-only tags underneath contacts</string> | ||||
| 	<string name="enable_notifications">Enable notifications</string> | ||||
| 	<string name="no_conference_server_found">No group chat server found</string> | ||||
|  | @ -739,4 +739,11 @@ | |||
| 	<string name="pref_omemo_setting_summary_always">OMEMO will always be used for one-on-one and private group chats.</string> | ||||
| 	<string name="pref_omemo_setting_summary_default_on">OMEMO will be used by default for new conversations.</string> | ||||
| 	<string name="pref_omemo_setting_summary_default_off">OMEMO will have to be turned on explicitly for new conversations.</string> | ||||
| 	<string name="pref_font_size">Font Size</string> | ||||
| 	<string name="pref_font_size_summary">The relative font size used within the app.</string> | ||||
| 	<string name="default_on">On by default</string> | ||||
| 	<string name="default_off">Off by default</string> | ||||
| 	<string name="small">Small</string> | ||||
| 	<string name="medium">Medium</string> | ||||
| 	<string name="large">Large</string> | ||||
| </resources> | ||||
|  |  | |||
|  | @ -167,6 +167,50 @@ | |||
|         <item type="reference" name="icon_enable_undecided_device">@drawable/ic_new_releases_white_24dp</item> | ||||
|     </style> | ||||
| 
 | ||||
|     <style name="ConversationsTheme.Medium" parent="ConversationsTheme"> | ||||
|         <item name="TextSizeCaption">14sp</item> | ||||
|         <item name="TextSizeBody1">16sp</item> | ||||
|         <item name="TextSizeBody2">16sp</item> | ||||
|         <item name="TextSizeSubhead">18sp</item> | ||||
|         <item name="TextSizeTitle">22sp</item> | ||||
|         <item name="TextSizeInput">18sp</item> | ||||
|         <item name="TextSeparation">6sp</item> | ||||
|         <item name="IconSize">20sp</item> | ||||
|     </style> | ||||
| 
 | ||||
|     <style name="ConversationsTheme.Dark.Medium" parent="ConversationsTheme.Dark"> | ||||
|         <item name="TextSizeCaption">14sp</item> | ||||
|         <item name="TextSizeBody1">16sp</item> | ||||
|         <item name="TextSizeBody2">16sp</item> | ||||
|         <item name="TextSizeSubhead">18sp</item> | ||||
|         <item name="TextSizeTitle">22sp</item> | ||||
|         <item name="TextSizeInput">18sp</item> | ||||
|         <item name="TextSeparation">6sp</item> | ||||
|         <item name="IconSize">20sp</item> | ||||
|     </style> | ||||
| 
 | ||||
|     <style name="ConversationsTheme.Dark.Large" parent="ConversationsTheme.Dark"> | ||||
|         <item name="TextSizeCaption">16sp</item> | ||||
|         <item name="TextSizeBody1">18sp</item> | ||||
|         <item name="TextSizeBody2">18sp</item> | ||||
|         <item name="TextSizeSubhead">20sp</item> | ||||
|         <item name="TextSizeTitle">24sp</item> | ||||
|         <item name="TextSizeInput">20sp</item> | ||||
|         <item name="TextSeparation">7sp</item> | ||||
|         <item name="IconSize">22sp</item> | ||||
|     </style> | ||||
| 
 | ||||
|     <style name="ConversationsTheme.Large" parent="ConversationsTheme"> | ||||
|         <item name="TextSizeCaption">16sp</item> | ||||
|         <item name="TextSizeBody1">18sp</item> | ||||
|         <item name="TextSizeBody2">18sp</item> | ||||
|         <item name="TextSizeSubhead">20sp</item> | ||||
|         <item name="TextSizeTitle">24sp</item> | ||||
|         <item name="TextSizeInput">20sp</item> | ||||
|         <item name="TextSeparation">7sp</item> | ||||
|         <item name="IconSize">22sp</item> | ||||
|     </style> | ||||
| 
 | ||||
|     <style name="ConversationsTheme.FullScreen" parent="@style/Theme.AppCompat.Light"> | ||||
|         <item name="colorPrimary">@color/primary500</item> | ||||
|         <item name="colorPrimaryDark">@color/primary700</item> | ||||
|  |  | |||
|  | @ -147,16 +147,23 @@ | |||
|             android:key="theme" | ||||
|             android:summary="@string/pref_theme_options_summary" | ||||
|             android:title="@string/pref_theme_options"/> | ||||
|         <CheckBoxPreference | ||||
|             android:defaultValue="@bool/use_subject" | ||||
|             android:key="use_subject" | ||||
|             android:summary="@string/pref_conference_name_summary" | ||||
|             android:title="@string/pref_conference_name"/> | ||||
|         <CheckBoxPreference | ||||
|             android:defaultValue="@bool/use_green_background" | ||||
|             android:key="use_green_background" | ||||
|             android:summary="@string/pref_use_green_background_summary" | ||||
|             android:title="@string/pref_use_green_background"/> | ||||
|         <ListPreference | ||||
|             android:defaultValue="@string/default_font_size" | ||||
|             android:key="font_size" | ||||
|             android:title="@string/pref_font_size" | ||||
|             android:summary="@string/pref_font_size_summary" | ||||
|             android:entryValues="@array/font_size_entry_values" | ||||
|             android:entries="@array/font_size_entries"/> | ||||
|         <CheckBoxPreference | ||||
|             android:defaultValue="@bool/use_subject" | ||||
|             android:key="use_subject" | ||||
|             android:summary="@string/pref_conference_name_summary" | ||||
|             android:title="@string/pref_conference_name"/> | ||||
|         <CheckBoxPreference | ||||
|             android:defaultValue="@bool/send_button_status" | ||||
|             android:key="send_button_status" | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Daniel Gultsch
						Daniel Gultsch