Added Android code
[wl-app.git] / Android / folioreader / src / main / java / com / folioreader / util / FolioReader.java
diff --git a/Android/folioreader/src/main/java/com/folioreader/util/FolioReader.java b/Android/folioreader/src/main/java/com/folioreader/util/FolioReader.java
new file mode 100755 (executable)
index 0000000..d29dc88
--- /dev/null
@@ -0,0 +1,134 @@
+package com.folioreader.util;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.support.v4.content.LocalBroadcastManager;
+
+import com.folioreader.Config;
+import com.folioreader.Constants;
+import com.folioreader.model.HighLight;
+import com.folioreader.model.HighlightImpl;
+import com.folioreader.model.sqlite.DbAdapter;
+import com.folioreader.ui.base.OnSaveHighlight;
+import com.folioreader.ui.base.SaveReceivedHighlightTask;
+import com.folioreader.ui.folio.activity.FolioActivity;
+
+import java.util.List;
+
+/**
+ * Created by avez raj on 9/13/2017.
+ */
+
+public class FolioReader {
+    public static final String INTENT_BOOK_ID = "book_id";
+    private Context context;
+
+    private OnHighlightListener onHighlightListener;
+
+    public FolioReader(Context context) {
+        this.context = context;
+        new DbAdapter(context);
+        LocalBroadcastManager.getInstance(context).registerReceiver(highlightReceiver,
+                new IntentFilter(HighlightImpl.BROADCAST_EVENT));
+    }
+
+    private BroadcastReceiver highlightReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            HighlightImpl highlightImpl = intent.getParcelableExtra(HighlightImpl.INTENT);
+            HighLight.HighLightAction action = (HighLight.HighLightAction)
+                    intent.getSerializableExtra(HighLight.HighLightAction.class.getName());
+            if (onHighlightListener != null && highlightImpl != null && action != null) {
+                onHighlightListener.onHighlight(highlightImpl, action);
+            }
+        }
+    };
+
+    public void openBook(String assetOrSdcardPath) {
+        Intent intent = getIntentFromUrl(assetOrSdcardPath, 0);
+        context.startActivity(intent);
+    }
+
+    public void openBook(int rawId) {
+        Intent intent = getIntentFromUrl(null, rawId);
+        context.startActivity(intent);
+    }
+
+    public void openBook(String assetOrSdcardPath, Config config) {
+        Intent intent = getIntentFromUrl(assetOrSdcardPath, 0);
+        intent.putExtra(Config.INTENT_CONFIG, config);
+        context.startActivity(intent);
+    }
+
+    public void openBook(int rawId, Config config) {
+        Intent intent = getIntentFromUrl(null, rawId);
+        intent.putExtra(Config.INTENT_CONFIG, config);
+        context.startActivity(intent);
+    }
+
+    public void openBook(String assetOrSdcardPath, Config config, int port) {
+        Intent intent = getIntentFromUrl(assetOrSdcardPath, 0);
+        intent.putExtra(Config.INTENT_CONFIG, config);
+        intent.putExtra(Config.INTENT_PORT, port);
+        context.startActivity(intent);
+    }
+
+    public void openBook(int rawId, Config config, int port) {
+        Intent intent = getIntentFromUrl(null, rawId);
+        intent.putExtra(Config.INTENT_CONFIG, config);
+        intent.putExtra(Config.INTENT_PORT, port);
+        context.startActivity(intent);
+    }
+
+    public void openBook(String assetOrSdcardPath, Config config, int port, String bookId) {
+        Intent intent = getIntentFromUrl(assetOrSdcardPath, 0);
+        intent.putExtra(Config.INTENT_CONFIG, config);
+        intent.putExtra(Config.INTENT_PORT, port);
+        intent.putExtra(INTENT_BOOK_ID, bookId);
+        context.startActivity(intent);
+    }
+
+    public void openBook(int rawId, Config config, int port, String bookId) {
+        Intent intent = getIntentFromUrl(null, rawId);
+        intent.putExtra(Config.INTENT_CONFIG, config);
+        intent.putExtra(Config.INTENT_PORT, port);
+        intent.putExtra(INTENT_BOOK_ID, bookId);
+        context.startActivity(intent);
+    }
+
+    public Intent createBookIntent(String assetOrSdcardPath, Config config) {
+        Intent intent = getIntentFromUrl(assetOrSdcardPath, 0);
+        intent.putExtra(Config.INTENT_CONFIG, config);
+        return intent;
+    }
+
+    private Intent getIntentFromUrl(String assetOrSdcardPath, int rawId) {
+        Intent intent = new Intent(context, FolioActivity.class);
+        if (rawId != 0) {
+            intent.putExtra(FolioActivity.INTENT_EPUB_SOURCE_PATH, rawId);
+            intent.putExtra(FolioActivity.INTENT_EPUB_SOURCE_TYPE, FolioActivity.EpubSourceType.RAW);
+        } else if (assetOrSdcardPath.contains(Constants.ASSET)) {
+            intent.putExtra(FolioActivity.INTENT_EPUB_SOURCE_PATH, assetOrSdcardPath);
+            intent.putExtra(FolioActivity.INTENT_EPUB_SOURCE_TYPE, FolioActivity.EpubSourceType.ASSETS);
+        } else {
+            intent.putExtra(FolioActivity.INTENT_EPUB_SOURCE_PATH, assetOrSdcardPath);
+            intent.putExtra(FolioActivity.INTENT_EPUB_SOURCE_TYPE, FolioActivity.EpubSourceType.SD_CARD);
+        }
+        return intent;
+    }
+
+    public void registerHighlightListener(OnHighlightListener onHighlightListener) {
+        this.onHighlightListener = onHighlightListener;
+    }
+
+    public void unregisterHighlightListener() {
+        LocalBroadcastManager.getInstance(context).unregisterReceiver(highlightReceiver);
+        this.onHighlightListener = null;
+    }
+
+    public void saveReceivedHighLights(List<HighLight> highlights, OnSaveHighlight onSaveHighlight) {
+        new SaveReceivedHighlightTask(onSaveHighlight, highlights).execute();
+    }
+}