Added text size option

This commit is contained in:
M66B
2018-12-13 19:26:27 +01:00
parent 4e7b60bd32
commit 86fbef7cda
4 changed files with 48 additions and 3 deletions

View File

@@ -28,6 +28,7 @@ import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.content.res.ColorStateList;
import android.content.res.TypedArray;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
@@ -114,6 +115,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
private FragmentManager fragmentManager;
private ViewType viewType;
private boolean outgoing;
private int zoom;
private IProperties properties;
private boolean threading;
@@ -476,6 +478,22 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
vSeparatorBody.setVisibility(View.VISIBLE);
tvBody.setText(null);
TypedArray ta;
if (zoom == 0)
ta = context.obtainStyledAttributes(
R.style.TextAppearance_AppCompat_Small, new int[]{android.R.attr.textSize});
else if (zoom == 2)
ta = context.obtainStyledAttributes(
R.style.TextAppearance_AppCompat_Large, new int[]{android.R.attr.textSize});
else
ta = context.obtainStyledAttributes(
R.style.TextAppearance_AppCompat_Medium, new int[]{android.R.attr.textSize});
float textSize = ta.getDimension(0, 0);
if (textSize != 0)
tvBody.setTextSize(textSize / context.getResources().getDisplayMetrics().density);
ta.recycle();
pbBody.setVisibility(View.VISIBLE);
if (message.content) {
@@ -1561,12 +1579,13 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
}
AdapterMessage(Context context, LifecycleOwner owner, FragmentManager fragmentManager,
ViewType viewType, boolean outgoing, IProperties properties) {
ViewType viewType, boolean outgoing, int zoom, IProperties properties) {
this.context = context;
this.owner = owner;
this.fragmentManager = fragmentManager;
this.viewType = viewType;
this.outgoing = outgoing;
this.zoom = zoom;
this.properties = properties;
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
@@ -1596,6 +1615,11 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
return differ.getCurrentList();
}
void setZoom(int zoom) {
this.zoom = zoom;
notifyDataSetChanged();
}
@Override
public int getItemCount() {
return differ.getItemCount();

View File

@@ -97,6 +97,7 @@ public class FragmentMessages extends FragmentEx {
private long id = -1;
private String search = null;
private int zoom = 0;
private boolean threading = true;
private boolean actionbar = false;
private boolean autoclose = false;
@@ -143,6 +144,8 @@ public class FragmentMessages extends FragmentEx {
search = args.getString("search");
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
boolean compact = prefs.getBoolean("compact", false);
zoom = prefs.getInt("zoom", compact ? 0 : 1);
threading = prefs.getBoolean("threading", true);
actionbar = prefs.getBoolean("actionbar", true);
autoclose = prefs.getBoolean("autoclose", false);
@@ -294,6 +297,7 @@ public class FragmentMessages extends FragmentEx {
adapter = new AdapterMessage(
getContext(), getViewLifecycleOwner(), getFragmentManager(),
viewType, outgoing,
zoom,
new AdapterMessage.IProperties() {
@Override
public void setExpanded(long id, boolean expand) {
@@ -1441,8 +1445,11 @@ public class FragmentMessages extends FragmentEx {
@Override
public void onPrepareOptionsMenu(Menu menu) {
menu.findItem(R.id.menu_search).setVisible(folder >= 0 && search == null);
menu.findItem(R.id.menu_sort_on).setVisible(TextUtils.isEmpty(search));
menu.findItem(R.id.menu_search).setVisible(
folder >= 0 && viewType != AdapterMessage.ViewType.SEARCH);
menu.findItem(R.id.menu_sort_on).setVisible(
viewType == AdapterMessage.ViewType.UNIFIED || viewType == AdapterMessage.ViewType.FOLDER);
menu.findItem(R.id.menu_zoom).setVisible(viewType == AdapterMessage.ViewType.THREAD);
menu.findItem(R.id.menu_folders).setVisible(primary >= 0);
menu.findItem(R.id.menu_folders).setIcon(connected ? R.drawable.baseline_folder_24 : R.drawable.baseline_folder_open_24);
menu.findItem(R.id.menu_move_sent).setVisible(outbox);
@@ -1482,6 +1489,12 @@ public class FragmentMessages extends FragmentEx {
loadMessages();
return true;
case R.id.menu_zoom:
zoom = ++zoom % 3;
prefs.edit().putInt("zoom", zoom).apply();
adapter.setZoom(zoom);
return true;
case R.id.menu_folders:
onMenuFolders();
loadMessages();