Added Android code
[wl-app.git] / Android / folioreader / src / main / java / com / folioreader / ui / base / HtmlUtil.java
diff --git a/Android/folioreader/src/main/java/com/folioreader/ui/base/HtmlUtil.java b/Android/folioreader/src/main/java/com/folioreader/ui/base/HtmlUtil.java
new file mode 100755 (executable)
index 0000000..ee8a011
--- /dev/null
@@ -0,0 +1,147 @@
+package com.folioreader.ui.base;
+
+import android.content.Context;
+
+import com.folioreader.Config;
+import com.folioreader.Constants;
+import com.folioreader.R;
+
+/**
+ * @author gautam chibde on 14/6/17.
+ */
+
+public final class HtmlUtil {
+
+    /**
+     * Function modifies input html string by adding extra css,js and font information.
+     *
+     * @param context     Activity Context
+     * @param htmlContent input html raw data
+     * @return modified raw html string
+     */
+    public static String getHtmlContent(Context context, String htmlContent, Config config) {
+        String cssPath =
+                String.format(context.getString(R.string.css_tag), "file:///android_asset/css/Style.css");
+
+
+        String jsPath = String.format(context.getString(R.string.script_tag),
+                        "file:///android_asset/js/jsface.min.js");
+        jsPath =
+                jsPath + String.format(context.getString(R.string.script_tag),
+                        "file:///android_asset/js/jquery-3.1.1.min.js");
+
+        jsPath =
+                jsPath + String.format(context.getString(R.string.script_tag),
+                        "file:///android_asset/js/rangy-core.js");
+        jsPath =
+                jsPath + String.format(context.getString(R.string.script_tag),
+                        "file:///android_asset/js/rangy-highlighter.js");
+        jsPath =
+                jsPath + String.format(context.getString(R.string.script_tag),
+                        "file:///android_asset/js/rangy-classapplier.js");
+        jsPath =
+                jsPath + String.format(context.getString(R.string.script_tag),
+                        "file:///android_asset/js/rangy-serializer.js");
+        jsPath =
+                jsPath + String.format(context.getString(R.string.script_tag),
+                        "file:///android_asset/js/rangy-serializer.js");
+        jsPath =
+                jsPath + String.format(context.getString(R.string.script_tag),
+                        "file:///android_asset/js/Bridge.js");
+
+        jsPath =
+                jsPath + String.format(context.getString(R.string.script_tag),
+                        "file:///android_asset/android.selection.js");
+        jsPath =
+                jsPath + String.format(context.getString(R.string.script_tag_method_call),
+                        "setMediaOverlayStyleColors('#C0ED72','#C0ED72')");
+
+        String toInject = "\n" + cssPath + "\n" + jsPath + "\n</head>";
+        htmlContent = htmlContent.replace("</head>", toInject);
+
+        String classes = "";
+        switch (config.getFont()) {
+            case Constants.FONT_EBGARAMOND:
+                classes = "garamond";
+                break;
+            case Constants.FONT_LATO:
+                classes = "lato";
+                break;
+            case Constants.FONT_LORA:
+                classes = "lora";
+                break;
+            case Constants.FONT_RALEWAY:
+                classes = "raleway";
+                break;
+            default:
+                break;
+        }
+
+        if (config.isNightMode()) {
+            classes += " nightMode";
+        }
+
+        switch (config.getFontSize()) {
+            case 0:
+                classes += " textSizeOne";
+                break;
+            case 1:
+                classes += " textSizeTwo";
+                break;
+            case 2:
+                classes += " textSizeThree";
+                break;
+            case 3:
+                classes += " textSizeFour";
+                break;
+            case 4:
+                classes += " textSizeFive";
+                break;
+            default:
+                break;
+        }
+
+        switch (config.getMarginSize()) {
+            case 0:
+                classes += " marginSizeOne";
+                break;
+            case 1:
+                classes += " marginSizeTwo";
+                break;
+            case 2:
+                classes += " marginSizeThree";
+                break;
+            case 3:
+                classes += " marginSizeFour";
+                break;
+            case 4:
+                classes += " marginSizeFive";
+                break;
+            default:
+                break;
+        }
+
+        switch (config.getInterlineSize()) {
+            case 0:
+                classes += " interlineSizeOne";
+                break;
+            case 1:
+                classes += " interlineSizeTwo";
+                break;
+            case 2:
+                classes += " interlineSizeThree";
+                break;
+            case 3:
+                classes += " interlineSizeFour";
+                break;
+            case 4:
+                classes += " interlineSizeFive";
+                break;
+            default:
+                break;
+        }
+
+        htmlContent = htmlContent.replace("<html ", "<html class=\"" + classes + "\" ");
+        return htmlContent;
+    }
+}