Allow override width and fit to width

pull/194/merge
M66B 4 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 overview_mode = prefs.getBoolean("overview_mode", false);
boolean override_width = prefs.getBoolean("override_width", false); boolean override_width = prefs.getBoolean("override_width", false);
HtmlHelper.setViewport(document, overview_mode); HtmlHelper.setViewport(document, overview_mode);
HtmlHelper.overrideWidth(document, overview_mode); if (override_width)
HtmlHelper.overrideWidth(document);
if (inline || show_images) if (inline || show_images)
HtmlHelper.embedInlineImages(context, message.id, document, 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); boolean override_width = prefs.getBoolean("override_width", false);
HtmlHelper.setViewport(d, overview_mode); HtmlHelper.setViewport(d, overview_mode);
if (override_width) if (override_width)
HtmlHelper.overrideWidth(d, overview_mode); HtmlHelper.overrideWidth(d);
} }
List<CSSStyleSheet> sheets = List<CSSStyleSheet> sheets =

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

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

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

Loading…
Cancel
Save