Added Android code
[wl-app.git] / Android / folioreader / src / main / java / com / folioreader / util / FolioReader.java
1 package com.folioreader.util;
2
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;
8
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;
17
18 import java.util.List;
19
20 /**
21  * Created by avez raj on 9/13/2017.
22  */
23
24 public class FolioReader {
25     public static final String INTENT_BOOK_ID = "book_id";
26     private Context context;
27
28     private OnHighlightListener onHighlightListener;
29
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));
35     }
36
37     private BroadcastReceiver highlightReceiver = new BroadcastReceiver() {
38         @Override
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);
45             }
46         }
47     };
48
49     public void openBook(String assetOrSdcardPath) {
50         Intent intent = getIntentFromUrl(assetOrSdcardPath, 0);
51         context.startActivity(intent);
52     }
53
54     public void openBook(int rawId) {
55         Intent intent = getIntentFromUrl(null, rawId);
56         context.startActivity(intent);
57     }
58
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);
63     }
64
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);
69     }
70
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);
76     }
77
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);
83     }
84
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);
91     }
92
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);
99     }
100
101     public Intent createBookIntent(String assetOrSdcardPath, Config config) {
102         Intent intent = getIntentFromUrl(assetOrSdcardPath, 0);
103         intent.putExtra(Config.INTENT_CONFIG, config);
104         return intent;
105     }
106
107     private Intent getIntentFromUrl(String assetOrSdcardPath, int rawId) {
108         Intent intent = new Intent(context, FolioActivity.class);
109         if (rawId != 0) {
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);
115         } else {
116             intent.putExtra(FolioActivity.INTENT_EPUB_SOURCE_PATH, assetOrSdcardPath);
117             intent.putExtra(FolioActivity.INTENT_EPUB_SOURCE_TYPE, FolioActivity.EpubSourceType.SD_CARD);
118         }
119         return intent;
120     }
121
122     public void registerHighlightListener(OnHighlightListener onHighlightListener) {
123         this.onHighlightListener = onHighlightListener;
124     }
125
126     public void unregisterHighlightListener() {
127         LocalBroadcastManager.getInstance(context).unregisterReceiver(highlightReceiver);
128         this.onHighlightListener = null;
129     }
130
131     public void saveReceivedHighLights(List<HighLight> highlights, OnSaveHighlight onSaveHighlight) {
132         new SaveReceivedHighlightTask(onSaveHighlight, highlights).execute();
133     }
134 }