diff --git a/app/build.gradle b/app/build.gradle
index 82d60c4da..89b93dbaa 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -24,7 +24,7 @@ android {
minSdkVersion 21
targetSdkVersion 26
versionCode 156236
- versionName "3.3.0b_6408b_20201119"
+ versionName "3.3.0b_6408b_20201122"
multiDexEnabled true //important
}
diff --git a/app/src/main/java/com/kdt/handleview/ActionPopupWindow.java b/app/src/main/java/com/kdt/handleview/ActionPopupWindow.java
index 486e2d68e..ab1044e8a 100644
--- a/app/src/main/java/com/kdt/handleview/ActionPopupWindow.java
+++ b/app/src/main/java/com/kdt/handleview/ActionPopupWindow.java
@@ -103,7 +103,7 @@ public class ActionPopupWindow extends PinnedPopupWindow implements OnClickListe
String[] oldSpecialArr = ControlData.buildSpecialButtonArray();
final String[] specialArr = new String[oldSpecialArr.length];
for (int i = 0; i < specialArr.length; i++) {
- specialArr[i] = "SPECIAL_" + oldSpecialArr[i];
+ specialArr[i] = "SPECIAL_" + oldSpecialArr[specialArr.length - i - 1];
}
adapter.addAll(specialArr);
@@ -111,7 +111,7 @@ public class ActionPopupWindow extends PinnedPopupWindow implements OnClickListe
adapter.setDropDownViewResource(android.R.layout.simple_list_item_single_choice);
spinnerKeycode.setAdapter(adapter);
if (properties.keycode < 0) {
- spinnerKeycode.setSelection(0 - properties.keycode);
+ spinnerKeycode.setSelection(properties.keycode + specialArr.length);
} else {
spinnerKeycode.setSelection(AndroidLWJGLKeycode.getIndexByLWJGLKey(properties.keycode) + specialArr.length);
}
diff --git a/app/src/main/java/net/kdt/pojavlaunch/CustomControlsActivity.java b/app/src/main/java/net/kdt/pojavlaunch/CustomControlsActivity.java
index da80f4504..035c67585 100644
--- a/app/src/main/java/net/kdt/pojavlaunch/CustomControlsActivity.java
+++ b/app/src/main/java/net/kdt/pojavlaunch/CustomControlsActivity.java
@@ -20,12 +20,10 @@ public class CustomControlsActivity extends BaseActivity
private DrawerLayout drawerLayout;
private NavigationView navDrawer;
private ControlLayout ctrlLayout;
- private CustomControls mCtrl;
-
+
private SharedPreferences mPref;
public boolean isModified = false;
-
private String selectedName = "new_control";
@Override
@@ -66,14 +64,10 @@ public class CustomControlsActivity extends BaseActivity
}
});
- mCtrl = new CustomControls();
-
ctrlLayout.setActivity(this);
ctrlLayout.setModifiable(true);
loadControl(LauncherPreferences.PREF_DEFAULTCTRL_PATH);
-
- ctrlLayout.loadLayout(mCtrl);
}
@Override
@@ -96,7 +90,7 @@ public class CustomControlsActivity extends BaseActivity
Tools.showError(this, th);
}
}
-
+
private void dialogSelectDefaultCtrl() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(R.string.customctrl_selectdefault);
@@ -203,8 +197,7 @@ public class CustomControlsActivity extends BaseActivity
private void loadControl(String path) {
try {
- mCtrl = Tools.GLOBAL_GSON.fromJson(Tools.read(path), CustomControls.class);
- ctrlLayout.loadLayout(mCtrl);
+ ctrlLayout.loadLayout(path);
selectedName = new File(path).getName();
// Remove `.json`
diff --git a/app/src/main/java/net/kdt/pojavlaunch/CustomCtrlMainActivity.java b/app/src/main/java/net/kdt/pojavlaunch/CustomCtrlMainActivity.java
index f080c4149..7bc8e7c70 100644
--- a/app/src/main/java/net/kdt/pojavlaunch/CustomCtrlMainActivity.java
+++ b/app/src/main/java/net/kdt/pojavlaunch/CustomCtrlMainActivity.java
@@ -7,9 +7,10 @@ import android.widget.*;
import net.kdt.pojavlaunch.customcontrols.*;
import net.kdt.pojavlaunch.prefs.*;
import org.lwjgl.glfw.*;
+import java.io.*;
+import com.google.gson.*;
public class CustomCtrlMainActivity extends BaseMainActivity {
- private CustomControls mControl;
private ControlLayout mControlLayout;
private View.OnClickListener mClickListener;
@@ -99,21 +100,15 @@ public class CustomCtrlMainActivity extends BaseMainActivity {
= mTouchListener;
mControlLayout = findViewById(R.id.main_control_layout);
- mControl = new CustomControls();
+ try {
+ mControlLayout.loadLayout(LauncherPreferences.PREF_DEFAULTCTRL_PATH);
+ } catch (Throwable th) {
+ Tools.showError(this, th);
+ }
+
mControlLayout.setModifiable(false);
- loadControl(LauncherPreferences.PREF_DEFAULTCTRL_PATH);
- mControlLayout.loadLayout(mControl);
// toggleGui(null);
mControlLayout.toggleControlVisible();
}
-
- private void loadControl(String path) {
- try {
- mControl = Tools.GLOBAL_GSON.fromJson(Tools.read(path), CustomControls.class);
- mControlLayout.loadLayout(mControl);
- } catch (Exception e) {
- Tools.showError(this, e);
- }
- }
}
diff --git a/app/src/main/java/net/kdt/pojavlaunch/customcontrols/ControlButton.java b/app/src/main/java/net/kdt/pojavlaunch/customcontrols/ControlButton.java
index dbf1ff3bf..98904cda4 100644
--- a/app/src/main/java/net/kdt/pojavlaunch/customcontrols/ControlButton.java
+++ b/app/src/main/java/net/kdt/pojavlaunch/customcontrols/ControlButton.java
@@ -106,17 +106,18 @@ public class ControlButton extends Button implements OnLongClickListener, OnTouc
@Override
public boolean onLongClick(View p1) {
- if (!mCanTriggerLongClick) return false;
-
- if (mHandleView.isShowing()) {
- mHandleView.hide();
- } else {
- if (getParent() != null) {
- ((ControlLayout) getParent()).hideAllHandleViews();
+ if (mCanTriggerLongClick) {
+ if (mHandleView.isShowing()) {
+ mHandleView.hide();
+ } else {
+ if (getParent() != null) {
+ ((ControlLayout) getParent()).hideAllHandleViews();
+ }
+ mHandleView.show();
}
- mHandleView.show();
}
- return true;
+
+ return mCanTriggerLongClick;
}
private float moveX, moveY;
@@ -145,8 +146,6 @@ public class ControlButton extends Button implements OnLongClickListener, OnTouc
return true;
}
-
- return false;
} else {
if (mGestureDetector.onTouchEvent(event)) {
mCanTriggerLongClick = true;
@@ -173,9 +172,9 @@ public class ControlButton extends Button implements OnLongClickListener, OnTouc
break;
}
-
- return false;
}
+
+ return false;
}
public void setModifiable(boolean z) {
diff --git a/app/src/main/java/net/kdt/pojavlaunch/customcontrols/ControlLayout.java b/app/src/main/java/net/kdt/pojavlaunch/customcontrols/ControlLayout.java
index b8c30b58f..5035dd4c6 100644
--- a/app/src/main/java/net/kdt/pojavlaunch/customcontrols/ControlLayout.java
+++ b/app/src/main/java/net/kdt/pojavlaunch/customcontrols/ControlLayout.java
@@ -7,6 +7,7 @@ import com.google.gson.*;
import net.kdt.pojavlaunch.*;
import android.support.v7.app.*;
import java.util.*;
+import java.io.*;
public class ControlLayout extends FrameLayout
{
@@ -32,17 +33,19 @@ public class ControlLayout extends FrameLayout
}
}
- public void loadLayout(String jsonPath) {
- try {
- loadLayout(Tools.GLOBAL_GSON.fromJson(Tools.read(jsonPath), CustomControls.class));
- } catch (Exception e) {
- e.printStackTrace();
- }
+ public void loadLayout(String jsonPath) throws IOException, JsonSyntaxException {
+ loadLayout(Tools.GLOBAL_GSON.fromJson(Tools.read(jsonPath), CustomControls.class));
}
public void loadLayout(CustomControls controlLayout) {
mLayout = controlLayout;
- removeAllViews();
+
+ for (int i = 0; i < getChildCount(); i++) {
+ if (getChildAt(i) instanceof ControlButton) {
+ removeViewAt(i);
+ }
+ }
+
for (ControlData button : controlLayout.mControlDataList) {
button.isHideable = button.keycode != ControlData.SPECIALBTN_TOGGLECTRL && button.keycode != ControlData.SPECIALBTN_VIRTUALMOUSE;
addControlView(button);
diff --git a/app/src/main/res/layout/main_with_customctrl.xml b/app/src/main/res/layout/main_with_customctrl.xml
index 750742abe..4fb05b27b 100644
--- a/app/src/main/res/layout/main_with_customctrl.xml
+++ b/app/src/main/res/layout/main_with_customctrl.xml
@@ -13,31 +13,31 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+