182 lines
5.5 KiB
Java
182 lines
5.5 KiB
Java
package com.cradle.iitc_mobile;
|
|
|
|
import android.content.ClipData;
|
|
import android.content.ClipboardManager;
|
|
import android.content.Context;
|
|
import android.content.Intent;
|
|
import android.content.pm.PackageInfo;
|
|
import android.content.pm.PackageManager;
|
|
import android.util.Log;
|
|
import android.webkit.JavascriptInterface;
|
|
import android.widget.Toast;
|
|
|
|
import com.cradle.iitc_mobile.IITC_NavigationHelper.Pane;
|
|
import com.cradle.iitc_mobile.share.ShareActivity;
|
|
|
|
// provide communication between IITC script and android app
|
|
public class IITC_JSInterface {
|
|
// context of main activity
|
|
private final IITC_Mobile mIitc;
|
|
|
|
IITC_JSInterface(IITC_Mobile iitc) {
|
|
mIitc = iitc;
|
|
}
|
|
|
|
// open dialog to send geo intent for navigation apps like gmaps or waze etc...
|
|
@JavascriptInterface
|
|
public void intentPosLink(double lat, double lng, int zoom, String title, boolean isPortal) {
|
|
Intent intent = new Intent(mIitc, ShareActivity.class);
|
|
intent.putExtra("lat", lat);
|
|
intent.putExtra("lng", lng);
|
|
intent.putExtra("zoom", zoom);
|
|
intent.putExtra("title", title);
|
|
intent.putExtra("isPortal", isPortal);
|
|
mIitc.startActivity(intent);
|
|
}
|
|
|
|
// share a string to the IITC share activity. only uses the share tab.
|
|
@JavascriptInterface
|
|
public void shareString(String str) {
|
|
Intent intent = new Intent(mIitc, ShareActivity.class);
|
|
intent.putExtra("shareString", str);
|
|
intent.putExtra("onlyShare", true);
|
|
mIitc.startActivity(intent);
|
|
}
|
|
|
|
// disable javascript injection while spinner is enabled
|
|
// prevent the spinner from closing automatically
|
|
@JavascriptInterface
|
|
public void spinnerEnabled(boolean en) {
|
|
Log.d("iitcm", "disableJS? " + en);
|
|
mIitc.getWebView().disableJS(en);
|
|
}
|
|
|
|
// copy link to specific portal to android clipboard
|
|
@JavascriptInterface
|
|
public void copy(String s) {
|
|
ClipboardManager clipboard = (ClipboardManager) mIitc
|
|
.getSystemService(Context.CLIPBOARD_SERVICE);
|
|
ClipData clip = ClipData.newPlainText("Copied Text ", s);
|
|
clipboard.setPrimaryClip(clip);
|
|
Toast.makeText(mIitc, "copied to clipboard", Toast.LENGTH_SHORT).show();
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public int getVersionCode() {
|
|
int versionCode = 0;
|
|
try {
|
|
PackageInfo pInfo = mIitc.getPackageManager()
|
|
.getPackageInfo(mIitc.getPackageName(), 0);
|
|
versionCode = pInfo.versionCode;
|
|
} catch (PackageManager.NameNotFoundException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return versionCode;
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public String getVersionName() {
|
|
String buildVersion = "unknown";
|
|
PackageManager pm = mIitc.getPackageManager();
|
|
try {
|
|
PackageInfo info = pm.getPackageInfo(mIitc.getPackageName(), 0);
|
|
buildVersion = info.versionName;
|
|
} catch (PackageManager.NameNotFoundException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return buildVersion;
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public void switchToPane(final String id) {
|
|
mIitc.runOnUiThread(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
Pane pane;
|
|
try {
|
|
pane = mIitc.getNavigationHelper().getPane(id);
|
|
} catch (IllegalArgumentException e) {
|
|
pane = Pane.MAP;
|
|
}
|
|
|
|
mIitc.setCurrentPane(pane);
|
|
}
|
|
});
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public void dialogFocused(String id) {
|
|
mIitc.setFocusedDialog(id);
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public void dialogOpened(String id, boolean open) {
|
|
mIitc.dialogOpened(id, open);
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public void bootFinished() {
|
|
Log.d("iitcm", "...boot finished");
|
|
|
|
mIitc.runOnUiThread(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
mIitc.setLoadingState(false);
|
|
|
|
mIitc.getMapSettings().onBootFinished();
|
|
}
|
|
});
|
|
}
|
|
|
|
// get layers and list them in a dialog
|
|
@JavascriptInterface
|
|
public void setLayers(final String base_layer, final String overlay_layer) {
|
|
mIitc.runOnUiThread(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
mIitc.getMapSettings().setLayers(base_layer, overlay_layer);
|
|
}
|
|
});
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public void addPortalHighlighter(final String name) {
|
|
mIitc.runOnUiThread(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
mIitc.getMapSettings().addPortalHighlighter(name);
|
|
}
|
|
});
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public void setActiveHighlighter(final String name) {
|
|
mIitc.runOnUiThread(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
mIitc.getMapSettings().setActiveHighlighter(name);
|
|
}
|
|
});
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public void updateIitc(final String fileUrl) {
|
|
mIitc.runOnUiThread(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
mIitc.updateIitc(fileUrl);
|
|
}
|
|
});
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public void addPane(final String name, final String label, final String icon) {
|
|
mIitc.runOnUiThread(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
mIitc.getNavigationHelper().addPane(name, label, icon);
|
|
}
|
|
});
|
|
}
|
|
}
|