1. Virtual Keyboard config editor update
This commit is contained in:
parent
3328a9af52
commit
766a769931
|
@ -12,8 +12,8 @@ android {
|
|||
applicationId "com.zane.smapiinstaller"
|
||||
minSdkVersion 19
|
||||
targetSdkVersion 30
|
||||
versionCode 59
|
||||
versionName "1.6.6"
|
||||
versionCode 60
|
||||
versionName "1.7.0"
|
||||
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
multiDexEnabled true
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
<!DOCTYPE html><html><head><meta charset=utf-8><title>Virtual Keyboard Config Editor</title><link href=./static/css/app.css rel=stylesheet></head><body><div id=app></div><script>window.getJsonCallback = null;
|
||||
// window.webObject = { getText: function(){ return '{"vToggle":{"key":"None","rectangle":{"X":36,"Y":12,"Width":64,"Height":64},"autoHidden":false},"buttons":[{"key":"Q","rectangle":{"X":200,"Y":80,"Width":90,"Height":90},"transparency":0.5,"alias":null,"command":null},{"key":"I","rectangle":{"X":363,"Y":80,"Width":90,"Height":90},"transparency":0.5,"alias":null,"command":null},{"key":"P","rectangle":{"X":526,"Y":80,"Width":90,"Height":90},"transparency":0.5,"alias":null,"command":null},{"key":"B","rectangle":{"X":1180,"Y":12,"Width":90,"Height":90},"transparency":0.5,"alias":null,"command":null}],"buttonsExtend":[{"key":"F1","rectangle":{"X":190,"Y":170,"Width":90,"Height":90},"transparency":0.5,"alias":null,"command":null},{"key":"F2","rectangle":{"X":290,"Y":170,"Width":90,"Height":90},"transparency":0.5,"alias":null,"command":null},{"key":"F3","rectangle":{"X":390,"Y":170,"Width":90,"Height":90},"transparency":0.5,"alias":null,"command":null},{"key":"H","rectangle":{"X":490,"Y":170,"Width":90,"Height":90},"transparency":0.5,"alias":null,"command":null},{"key":"O","rectangle":{"X":590,"Y":170,"Width":90,"Height":90},"transparency":0.5,"alias":null,"command":null},{"key":"K","rectangle":{"X":690,"Y":170,"Width":90,"Height":90},"transparency":0.5,"alias":null,"command":null},{"key":"U","rectangle":{"X":790,"Y":170,"Width":90,"Height":90},"transparency":0.5,"alias":null,"command":null},{"key":"M","rectangle":{"X":890,"Y":170,"Width":90,"Height":90},"transparency":0.5,"alias":null,"command":null},{"key":"V","rectangle":{"X":990,"Y":170,"Width":90,"Height":90},"transparency":0.5,"alias":null,"command":null},{"key":"RightWindows","rectangle":{"X":1090,"Y":170,"Width":90,"Height":90},"transparency":0.5,"alias":"CMD","command":null},{"key":"S","rectangle":{"X":1080,"Y":12,"Width":90,"Height":90},"transparency":0.5,"alias":null,"command":null},{"key":"None","rectangle":{"X":980,"Y":12,"Width":90,"Height":90},"transparency":0.5,"alias":"Zoom","command":"zoom"}]}'; }, getMode: function(){ return 'tree';}, getLanguage: function(){ return 'zh-CN';}, isEditable: function(){ return true;}, getHeight: function(){ return 720;}, getWidth: function(){ return 1280;}, };
|
||||
window.getJson = function()
|
||||
{
|
||||
if(window.getJsonCallback != null) {
|
||||
window.webObject.setText(JSON.stringify(window.getJsonCallback()));
|
||||
}
|
||||
}</script><script type=text/javascript src=./static/js/manifest.js></script><script type=text/javascript src=./static/js/vendor.js></script><script type=text/javascript src=./static/js/app.js></script></body></html>
|
||||
<!DOCTYPE html><html><head><meta charset=utf-8><title>Virtual Keyboard Config Editor</title><meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no"><link href=static/css/app.css rel=stylesheet></head><body><div id=app></div><script>window.getJsonCallback = null;
|
||||
window.getJson = function () {
|
||||
if (window.getJsonCallback != null) {
|
||||
window.webObject.setText(JSON.stringify(window.getJsonCallback()));
|
||||
}
|
||||
}</script><script type=text/javascript src=static/js/manifest.js></script><script type=text/javascript src=static/js/vendor.js></script><script type=text/javascript src=static/js/app.js></script></body></html>
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1 +1 @@
|
|||
!function(r){var n=window.webpackJsonp;window.webpackJsonp=function(e,u,c){for(var f,i,p,a=0,l=[];a<e.length;a++)i=e[a],o[i]&&l.push(o[i][0]),o[i]=0;for(f in u)Object.prototype.hasOwnProperty.call(u,f)&&(r[f]=u[f]);for(n&&n(e,u,c);l.length;)l.shift()();if(c)for(a=0;a<c.length;a++)p=t(t.s=c[a]);return p};var e={},o={2:0};function t(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return r[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}t.m=r,t.c=e,t.d=function(r,n,e){t.o(r,n)||Object.defineProperty(r,n,{configurable:!1,enumerable:!0,get:e})},t.n=function(r){var n=r&&r.__esModule?function(){return r.default}:function(){return r};return t.d(n,"a",n),n},t.o=function(r,n){return Object.prototype.hasOwnProperty.call(r,n)},t.p="./",t.oe=function(r){throw console.error(r),r}}([]);
|
||||
!function(r){var n=window.webpackJsonp;window.webpackJsonp=function(e,u,c){for(var f,i,p,a=0,l=[];a<e.length;a++)i=e[a],o[i]&&l.push(o[i][0]),o[i]=0;for(f in u)Object.prototype.hasOwnProperty.call(u,f)&&(r[f]=u[f]);for(n&&n(e,u,c);l.length;)l.shift()();if(c)for(a=0;a<c.length;a++)p=t(t.s=c[a]);return p};var e={},o={2:0};function t(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return r[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}t.m=r,t.c=e,t.d=function(r,n,e){t.o(r,n)||Object.defineProperty(r,n,{configurable:!1,enumerable:!0,get:e})},t.n=function(r){var n=r&&r.__esModule?function(){return r.default}:function(){return r};return t.d(n,"a",n),n},t.o=function(r,n){return Object.prototype.hasOwnProperty.call(r,n)},t.p="",t.oe=function(r){throw console.error(r),r}}([]);
|
File diff suppressed because one or more lines are too long
|
@ -2,29 +2,20 @@ package com.zane.smapiinstaller.dto;
|
|||
|
||||
import android.webkit.JavascriptInterface;
|
||||
|
||||
import com.zane.smapiinstaller.R;
|
||||
import com.zane.smapiinstaller.utils.DialogUtils;
|
||||
import com.zane.smapiinstaller.utils.JsonUtil;
|
||||
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* @author Zane
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
public class WebViewObject {
|
||||
public class JsonEditorObject {
|
||||
private String text;
|
||||
private String mode;
|
||||
private String language;
|
||||
private boolean editable;
|
||||
private int height;
|
||||
private int width;
|
||||
private Consumer<String> setterCallback;
|
||||
|
||||
@JavascriptInterface
|
||||
|
@ -50,11 +41,6 @@ public class WebViewObject {
|
|||
return height;
|
||||
}
|
||||
|
||||
@JavascriptInterface
|
||||
public int getWidth() {
|
||||
return width;
|
||||
}
|
||||
|
||||
@JavascriptInterface
|
||||
public String getMode() {
|
||||
return mode;
|
|
@ -0,0 +1,59 @@
|
|||
package com.zane.smapiinstaller.dto;
|
||||
|
||||
import android.webkit.JavascriptInterface;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
|
||||
/**
|
||||
* @author Zane
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
public class KeyboardEditorObject {
|
||||
private String text;
|
||||
private String language;
|
||||
private int height;
|
||||
private int width;
|
||||
private float scale;
|
||||
private boolean landscape;
|
||||
private Consumer<String> setterCallback;
|
||||
|
||||
@JavascriptInterface
|
||||
public String getText() {
|
||||
return text;
|
||||
}
|
||||
|
||||
@JavascriptInterface
|
||||
public void setText(String text) {
|
||||
this.text = text;
|
||||
if(setterCallback != null) {
|
||||
setterCallback.accept(text);
|
||||
}
|
||||
}
|
||||
|
||||
@JavascriptInterface
|
||||
public int getHeight() {
|
||||
return height;
|
||||
}
|
||||
|
||||
@JavascriptInterface
|
||||
public int getWidth() {
|
||||
return width;
|
||||
}
|
||||
|
||||
@JavascriptInterface
|
||||
public float getScale() {
|
||||
return scale;
|
||||
}
|
||||
|
||||
@JavascriptInterface
|
||||
public boolean isLandscape() {
|
||||
return landscape;
|
||||
}
|
||||
|
||||
@JavascriptInterface
|
||||
public String getLanguage() {
|
||||
return language;
|
||||
}
|
||||
}
|
|
@ -12,14 +12,14 @@ import android.view.ViewGroup;
|
|||
import android.webkit.WebChromeClient;
|
||||
import android.webkit.WebViewClient;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.hjq.language.LanguagesManager;
|
||||
import com.zane.smapiinstaller.BuildConfig;
|
||||
import com.zane.smapiinstaller.R;
|
||||
import com.zane.smapiinstaller.constant.Constants;
|
||||
import com.zane.smapiinstaller.constant.DialogAction;
|
||||
import com.zane.smapiinstaller.databinding.FragmentConfigEditBinding;
|
||||
import com.zane.smapiinstaller.dto.WebViewObject;
|
||||
import com.zane.smapiinstaller.dto.JsonEditorObject;
|
||||
import com.zane.smapiinstaller.dto.KeyboardEditorObject;
|
||||
import com.zane.smapiinstaller.logic.CommonLogic;
|
||||
import com.zane.smapiinstaller.utils.DialogUtils;
|
||||
import com.zane.smapiinstaller.utils.FileUtils;
|
||||
|
@ -43,7 +43,6 @@ public class ConfigEditFragment extends Fragment {
|
|||
private String configPath;
|
||||
|
||||
private FragmentConfigEditBinding binding;
|
||||
private WebViewObject webObject = null;
|
||||
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater,
|
||||
|
@ -76,7 +75,7 @@ public class ConfigEditFragment extends Fragment {
|
|||
if (fileText != null) {
|
||||
binding.scrollView.post(() -> {
|
||||
CommonLogic.doOnNonNull(this.getContext(), (context -> {
|
||||
String lang = LanguagesManager.getAppLanguage(context).getCountry();
|
||||
String lang = LanguagesManager.getAppLanguage(context).getLanguage();
|
||||
switch (lang) {
|
||||
case "zh":
|
||||
lang = "zh-CN";
|
||||
|
@ -94,18 +93,19 @@ public class ConfigEditFragment extends Fragment {
|
|||
String baseUrl;
|
||||
if(!virtualKeyboardConfigMode) {
|
||||
int height = (int) (binding.scrollView.getMeasuredHeight() / context.getResources().getDisplayMetrics().density * 0.95);
|
||||
JsonEditorObject webObject;
|
||||
if (editable) {
|
||||
try {
|
||||
JsonUtil.checkJson(fileText);
|
||||
String jsonText = JsonUtil.toJson(JsonUtil.fromJson(fileText, Object.class));
|
||||
webObject = new WebViewObject(jsonText, "tree", lang, true, height, 0, this::configSave);
|
||||
webObject = new JsonEditorObject(jsonText, "tree", lang, true, height, this::configSave);
|
||||
binding.editTextConfigWebview.addJavascriptInterface(webObject, "webObject");
|
||||
} catch (Exception e) {
|
||||
DialogUtils.showAlertDialog(getView(), R.string.error, e.getLocalizedMessage());
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
webObject = new WebViewObject(fileText, "text-plain", lang, false, height, 0, null);
|
||||
webObject = new JsonEditorObject(fileText, "text-plain", lang, false, height, null);
|
||||
binding.editTextConfigWebview.addJavascriptInterface(webObject, "webObject");
|
||||
}
|
||||
baseUrl = "file:///android_asset/jsoneditor/";
|
||||
|
@ -118,15 +118,17 @@ public class ConfigEditFragment extends Fragment {
|
|||
else {
|
||||
int height = context.getResources().getDisplayMetrics().heightPixels;
|
||||
int width = context.getResources().getDisplayMetrics().widthPixels;
|
||||
webObject = new WebViewObject(fileText, "tree", lang, true, height, width, this::configSave);
|
||||
boolean landscape = true;
|
||||
if(height > width) {
|
||||
height ^= width; width ^= height; height ^= width;
|
||||
landscape = false;
|
||||
}
|
||||
int widthDp = (int) (binding.scrollView.getMeasuredWidth() / context.getResources().getDisplayMetrics().density * 0.95);
|
||||
float scale = widthDp / (float)width;
|
||||
KeyboardEditorObject webObject = new KeyboardEditorObject(fileText, lang, height, width, scale, landscape, this::configSave);
|
||||
binding.editTextConfigWebview.addJavascriptInterface(webObject, "webObject");
|
||||
binding.editTextConfigWebview.setInitialScale(100);
|
||||
assetText = FileUtils.getAssetText(context, "vkconfig/index.html");
|
||||
baseUrl = "file:///android_asset/vkconfig/";
|
||||
Activity activity = CommonLogic.getActivityFromView(binding.editTextConfigWebview);
|
||||
if(activity.getRequestedOrientation() != ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE){
|
||||
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
|
||||
}
|
||||
}
|
||||
if (assetText != null) {
|
||||
binding.editTextConfigWebview.loadDataWithBaseURL(
|
||||
|
|
Loading…
Reference in New Issue