Allow override width and fit to width

pull/194/merge
M66B 3 years ago
parent bdaf84a59d
commit edf06c1503

@ -2612,7 +2612,8 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
boolean overview_mode = prefs.getBoolean("overview_mode", false);
boolean override_width = prefs.getBoolean("override_width", false);
HtmlHelper.setViewport(document, overview_mode);
HtmlHelper.overrideWidth(document, overview_mode);
if (override_width)
HtmlHelper.overrideWidth(document);
if (inline || show_images)
HtmlHelper.embedInlineImages(context, message.id, document, show_images);
@ -5545,7 +5546,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
boolean override_width = prefs.getBoolean("override_width", false);
HtmlHelper.setViewport(d, overview_mode);
if (override_width)
HtmlHelper.overrideWidth(d, overview_mode);
HtmlHelper.overrideWidth(d);
}
List<CSSStyleSheet> sheets =

@ -900,7 +900,6 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
prefs.edit().putBoolean("overview_mode", checked).apply();
swOverrideWidth.setEnabled(!checked);
}
});
@ -1224,7 +1223,6 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer
swOverviewMode.setChecked(prefs.getBoolean("overview_mode", false));
swOverrideWidth.setChecked(prefs.getBoolean("override_width", false));
swOverrideWidth.setEnabled(!swOverviewMode.isChecked());
swContrast.setChecked(prefs.getBoolean("contrast", false));
swMonospaced.setChecked(prefs.getBoolean("monospaced", false));

@ -36,7 +36,6 @@ import android.os.Build;
import android.text.Html;
import android.text.Layout;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.TextDirectionHeuristics;
@ -2068,23 +2067,24 @@ public class HtmlHelper {
Log.i(document.head().html());
}
static void overrideWidth(Document document, boolean overview_mode) {
if (!overview_mode) {
for (Element e : document.select("*")) {
String width = e.attr("width");
if (TextUtils.isEmpty(width))
continue;
e.attr("style", mergeStyles(
e.attr("style"),
"width: " + width));
e.removeAttr("width");
}
for (Element e : document.body().children())
e.attr("style", mergeStyles(
e.attr("style"),
"min-width: 0 !important; max-width: 100% !important;"));
static void overrideWidth(Document document) {
List<String> tags = new ArrayList<>();
for (Element e : document.select("*")) {
String tag = e.tagName();
if ("img".equals(tag))
continue;
if (tags.contains(tag))
continue;
tags.add(tag);
}
StringBuilder sb = new StringBuilder();
sb.append("<style type=\"text/css\">");
for (String tag : tags)
sb.append(tag).append("{width: auto !important; min-width: 0 !important;max-width: 100% !important;}");
sb.append("</style>");
document.select("head").append(sb.toString());
}
static String getLanguage(Context context, String subject, String text) {

@ -1352,7 +1352,6 @@
android:id="@+id/swOverrideWidth"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:layout_marginTop="12dp"
android:text="@string/title_advanced_override_width"
app:layout_constraintEnd_toEndOf="parent"
@ -1364,7 +1363,6 @@
android:id="@+id/tvOverrideWidthHint"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:layout_marginEnd="48dp"
android:text="@string/title_advanced_override_width_hint"
android:textAppearance="@style/TextAppearance.AppCompat.Small"

Loading…
Cancel
Save