1 package com.folioreader.util;
3 import android.content.BroadcastReceiver;
4 import android.content.Context;
5 import android.content.Intent;
6 import android.content.IntentFilter;
7 import android.support.v4.content.LocalBroadcastManager;
9 import com.folioreader.Config;
10 import com.folioreader.Constants;
11 import com.folioreader.model.HighLight;
12 import com.folioreader.model.HighlightImpl;
13 import com.folioreader.model.sqlite.DbAdapter;
14 import com.folioreader.ui.base.OnSaveHighlight;
15 import com.folioreader.ui.base.SaveReceivedHighlightTask;
16 import com.folioreader.ui.folio.activity.FolioActivity;
18 import java.util.List;
21 * Created by avez raj on 9/13/2017.
24 public class FolioReader {
25 public static final String INTENT_BOOK_ID = "book_id";
26 private Context context;
28 private OnHighlightListener onHighlightListener;
30 public FolioReader(Context context) {
31 this.context = context;
32 new DbAdapter(context);
33 LocalBroadcastManager.getInstance(context).registerReceiver(highlightReceiver,
34 new IntentFilter(HighlightImpl.BROADCAST_EVENT));
37 private BroadcastReceiver highlightReceiver = new BroadcastReceiver() {
39 public void onReceive(Context context, Intent intent) {
40 HighlightImpl highlightImpl = intent.getParcelableExtra(HighlightImpl.INTENT);
41 HighLight.HighLightAction action = (HighLight.HighLightAction)
42 intent.getSerializableExtra(HighLight.HighLightAction.class.getName());
43 if (onHighlightListener != null && highlightImpl != null && action != null) {
44 onHighlightListener.onHighlight(highlightImpl, action);
49 public void openBook(String assetOrSdcardPath) {
50 Intent intent = getIntentFromUrl(assetOrSdcardPath, 0);
51 context.startActivity(intent);
54 public void openBook(int rawId) {
55 Intent intent = getIntentFromUrl(null, rawId);
56 context.startActivity(intent);
59 public void openBook(String assetOrSdcardPath, Config config) {
60 Intent intent = getIntentFromUrl(assetOrSdcardPath, 0);
61 intent.putExtra(Config.INTENT_CONFIG, config);
62 context.startActivity(intent);
65 public void openBook(int rawId, Config config) {
66 Intent intent = getIntentFromUrl(null, rawId);
67 intent.putExtra(Config.INTENT_CONFIG, config);
68 context.startActivity(intent);
71 public void openBook(String assetOrSdcardPath, Config config, int port) {
72 Intent intent = getIntentFromUrl(assetOrSdcardPath, 0);
73 intent.putExtra(Config.INTENT_CONFIG, config);
74 intent.putExtra(Config.INTENT_PORT, port);
75 context.startActivity(intent);
78 public void openBook(int rawId, Config config, int port) {
79 Intent intent = getIntentFromUrl(null, rawId);
80 intent.putExtra(Config.INTENT_CONFIG, config);
81 intent.putExtra(Config.INTENT_PORT, port);
82 context.startActivity(intent);
85 public void openBook(String assetOrSdcardPath, Config config, int port, String bookId) {
86 Intent intent = getIntentFromUrl(assetOrSdcardPath, 0);
87 intent.putExtra(Config.INTENT_CONFIG, config);
88 intent.putExtra(Config.INTENT_PORT, port);
89 intent.putExtra(INTENT_BOOK_ID, bookId);
90 context.startActivity(intent);
93 public void openBook(int rawId, Config config, int port, String bookId) {
94 Intent intent = getIntentFromUrl(null, rawId);
95 intent.putExtra(Config.INTENT_CONFIG, config);
96 intent.putExtra(Config.INTENT_PORT, port);
97 intent.putExtra(INTENT_BOOK_ID, bookId);
98 context.startActivity(intent);
101 public Intent createBookIntent(String assetOrSdcardPath, Config config) {
102 Intent intent = getIntentFromUrl(assetOrSdcardPath, 0);
103 intent.putExtra(Config.INTENT_CONFIG, config);
107 private Intent getIntentFromUrl(String assetOrSdcardPath, int rawId) {
108 Intent intent = new Intent(context, FolioActivity.class);
110 intent.putExtra(FolioActivity.INTENT_EPUB_SOURCE_PATH, rawId);
111 intent.putExtra(FolioActivity.INTENT_EPUB_SOURCE_TYPE, FolioActivity.EpubSourceType.RAW);
112 } else if (assetOrSdcardPath.contains(Constants.ASSET)) {
113 intent.putExtra(FolioActivity.INTENT_EPUB_SOURCE_PATH, assetOrSdcardPath);
114 intent.putExtra(FolioActivity.INTENT_EPUB_SOURCE_TYPE, FolioActivity.EpubSourceType.ASSETS);
116 intent.putExtra(FolioActivity.INTENT_EPUB_SOURCE_PATH, assetOrSdcardPath);
117 intent.putExtra(FolioActivity.INTENT_EPUB_SOURCE_TYPE, FolioActivity.EpubSourceType.SD_CARD);
122 public void registerHighlightListener(OnHighlightListener onHighlightListener) {
123 this.onHighlightListener = onHighlightListener;
126 public void unregisterHighlightListener() {
127 LocalBroadcastManager.getInstance(context).unregisterReceiver(highlightReceiver);
128 this.onHighlightListener = null;
131 public void saveReceivedHighLights(List<HighLight> highlights, OnSaveHighlight onSaveHighlight) {
132 new SaveReceivedHighlightTask(onSaveHighlight, highlights).execute();