diff --git a/app/src/main/java/net/kdt/pojavlaunch/CustomControlsActivity.java b/app/src/main/java/net/kdt/pojavlaunch/CustomControlsActivity.java index 30479c58b..80aef24de 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/CustomControlsActivity.java +++ b/app/src/main/java/net/kdt/pojavlaunch/CustomControlsActivity.java @@ -92,14 +92,12 @@ public class CustomControlsActivity extends AppCompatActivity } private void setDefaultControlJson(String path) { - try { - // Load before save to make sure control is not error - ctrlLayout.loadLayout(new Gson().fromJson(Tools.read(path), CustomControls.class)); - LauncherPreferences.DEFAULT_PREF.edit().putString("defaultCtrl", path).commit(); - LauncherPreferences.PREF_DEFAULTCTRL_PATH = path; - } catch (Throwable th) { - Tools.showError(this, th); - } + + // Load before save to make sure control is not error + boolean loaded = ctrlLayout.loadLayout(path); + + LauncherPreferences.DEFAULT_PREF.edit().putString("defaultCtrl", path).commit(); + LauncherPreferences.PREF_DEFAULTCTRL_PATH = path; } private void dialogSelectDefaultCtrl() { diff --git a/app/src/main/java/net/kdt/pojavlaunch/MCLauncherActivity.java b/app/src/main/java/net/kdt/pojavlaunch/MCLauncherActivity.java index 53bd24e57..fd9a08eff 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/MCLauncherActivity.java +++ b/app/src/main/java/net/kdt/pojavlaunch/MCLauncherActivity.java @@ -734,16 +734,15 @@ public class MCLauncherActivity extends AppCompatActivity } @Override - protected void onPostExecute(Throwable p1) + protected void onPostExecute(Throwable th) { playButton.setText("Play"); playButton.setEnabled(true); launchProgress.setMax(100); launchProgress.setProgress(0); statusIsLaunching(false); - if(p1 != null) { - p1.printStackTrace(); - Tools.showError(MCLauncherActivity.this, p1); + if(th != null) { + Tools.showError(MCLauncherActivity.this, th); } if(!launchWithError) { crashView.setLastCrash(""); @@ -783,12 +782,11 @@ public class MCLauncherActivity extends AppCompatActivity mTask = null; } - private Gson gsonss = gson; public static final String MINECRAFT_RES = "http://resources.download.minecraft.net/"; public JAssets downloadIndex(String versionName, File output) throws Exception { String versionJson = DownloadUtils.downloadString("http://s3.amazonaws.com/Minecraft.Download/indexes/" + versionName + ".json"); - JAssets version = gsonss.fromJson(versionJson, JAssets.class); + JAssets version = gson.fromJson(versionJson, JAssets.class); output.getParentFile().mkdirs(); Tools.write(output.getAbsolutePath(), versionJson.getBytes(Charset.forName("UTF-8"))); return version; diff --git a/app/src/main/java/net/kdt/pojavlaunch/MainActivity.java b/app/src/main/java/net/kdt/pojavlaunch/MainActivity.java index 559adda5b..7c615cd24 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/MainActivity.java +++ b/app/src/main/java/net/kdt/pojavlaunch/MainActivity.java @@ -103,7 +103,6 @@ public class MainActivity extends AppCompatActivity implements OnTouchListener, // private String mQueueText = new String(); private JMinecraftVersionList.Version mVersionInfo; - private View.OnTouchListener glTouchListener; // private Button[] controlButtons; @@ -111,7 +110,9 @@ public class MainActivity extends AppCompatActivity implements OnTouchListener, /* private LinearLayout contentCanvas; private AWTSurfaceView contentCanvasView; - */ + */ + + private boolean isResuming = false; private boolean lastEnabled = false; private boolean lastGrab = false; private boolean isExited = false; @@ -314,6 +315,9 @@ public class MainActivity extends AppCompatActivity implements OnTouchListener, controlLayout.loadLayout(LauncherPreferences.PREF_DEFAULTCTRL_PATH); controlLayout.setModifiable(false); + // Override non-special control buttons touch listener + + // toggleGui(null); // onClick(toggleControlButton); this.drawerLayout.closeDrawers(); @@ -564,6 +568,7 @@ public class MainActivity extends AppCompatActivity implements OnTouchListener, builder.append("XPos=" + x + "\n"); builder.append("YPos=" + y + "\n\n"); + builder.append("MovingX=" + getMoving(e.getX(), true) + "\n"); builder.append("MovingY=" + getMoving(e.getY(), false) + "\n"); @@ -593,15 +598,6 @@ public class MainActivity extends AppCompatActivity implements OnTouchListener, case MotionEvent.ACTION_CANCEL: // 3 case MotionEvent.ACTION_POINTER_UP: // 6 AndroidDisplay.putMouseEventWithCoords(rightOverride ? (byte) 1 : (byte) 0, (byte) 0, x, y, 0, System.nanoTime()); - /* - if (!triggeredLeftMouseButton && Math.abs(initialX - x) < fingerStillThreshold && Math.abs(initialY - y) < fingerStillThreshold) { - sendMouseButton(1, true); - sendMouseButton(1, false); - } - if (triggeredLeftMouseButton) { - sendMouseButton(0, false); - } - */ sendMouseButton(AndroidDisplay.mouseLeft ? 0 : 1, true); sendMouseButton(AndroidDisplay.mouseLeft ? 0 : 1, false); @@ -612,7 +608,6 @@ public class MainActivity extends AppCompatActivity implements OnTouchListener, } return true; - // If onClick fail with false, change back to true } }; @@ -629,7 +624,7 @@ public class MainActivity extends AppCompatActivity implements OnTouchListener, glSurfaceView.setOnHoverListener(new View.OnHoverListener(){ @Override public boolean onHover(View p1, MotionEvent p2) { - if (!AndroidDisplay.grab && isResumed()) { + if (!AndroidDisplay.grab && isResuming) { return glTouchListener.onTouch(p1, p2); } return true; @@ -665,6 +660,7 @@ public class MainActivity extends AppCompatActivity implements OnTouchListener, Thread.sleep(200); runCraft(); } catch (Throwable e) { + isExited = true; Tools.showError(MainActivity.this, e, true); } } @@ -683,9 +679,7 @@ public class MainActivity extends AppCompatActivity implements OnTouchListener, }); glSurfaceView.setPreserveEGLContextOnPause(true); glSurfaceView.setRenderMode(MinecraftGLView.RENDERMODE_CONTINUOUSLY); - glSurfaceView.requestRender(); } catch (Throwable e) { - e.printStackTrace(); Tools.showError(this, e, true); } @@ -739,6 +733,7 @@ public class MainActivity extends AppCompatActivity implements OnTouchListener, @Override public void onResume() { super.onResume(); + isResuming = true; glSurfaceView.requestRender(); } @@ -755,12 +750,19 @@ public class MainActivity extends AppCompatActivity implements OnTouchListener, @Override protected void onPause() { + isResuming = false; if (AndroidDisplay.grab){ sendKeyPress(Keyboard.KEY_ESCAPE); } super.onPause(); } + @Override + protected void onStop() { + isResuming = false; + super.onStop(); + } + @Override public void onClick(View view) { /* @@ -793,6 +795,12 @@ public class MainActivity extends AppCompatActivity implements OnTouchListener, default: return false; } + + if (v instanceof ControlView) { + + } + + /* switch (v.getId()) { case R.id.control_up: sendKeyPress(Keyboard.KEY_W, isDown); break; diff --git a/app/src/main/java/net/kdt/pojavlaunch/Tools.java b/app/src/main/java/net/kdt/pojavlaunch/Tools.java index 1a6077fe5..58b132282 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/Tools.java +++ b/app/src/main/java/net/kdt/pojavlaunch/Tools.java @@ -163,6 +163,7 @@ public final class Tools private static void showError(final Context ctx, final Throwable e, final boolean exitIfOk, final boolean showMore) { + e.printStackTrace(); Runnable runnable = new Runnable(){ @Override diff --git a/app/src/main/java/net/kdt/pojavlaunch/value/customcontrols/ControlView.java b/app/src/main/java/net/kdt/pojavlaunch/value/customcontrols/ControlView.java index 27cbaa54c..c32415da7 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/value/customcontrols/ControlView.java +++ b/app/src/main/java/net/kdt/pojavlaunch/value/customcontrols/ControlView.java @@ -58,8 +58,10 @@ public class ControlView extends Button implements OnLongClickListener, OnTouchL setOnClickListener((View.OnClickListener) properties.specialButtonListener); } else if (properties.specialButtonListener instanceof View.OnTouchListener) { setOnTouchListener((View.OnTouchListener) properties.specialButtonListener); + } else if (properties == null) { + // Maybe ignore? } else { - throw new IllegalArgumentException("Field " + ControlButton.class.getName() + ".specialButtonListener must be View.OnClickListener or View.OnTouchListener"); + throw new IllegalArgumentException("Field " + ControlButton.class.getName() + ".specialButtonListener must be View.OnClickListener or View.OnTouchListener instead of " + properties.specialButtonListener.getClass().getName()); } setLayoutParams(new FrameLayout.LayoutParams(properties.width, properties.height)); @@ -92,10 +94,12 @@ public class ControlView extends Button implements OnLongClickListener, OnTouchL } @Override - public boolean onLongClick(View p1) + public boolean onLongClick(View thiz) { + // This should never happend + if (!mCanModify) throw new IllegalAccessError("Attemp to trigger built-in onLongClick() on a non-modifiable ControlView button"); if (!mCanTriggerLongClick) return false; - + if (mHandleView.isShowing()) { mHandleView.hide(); } else { @@ -110,12 +114,9 @@ public class ControlView extends Button implements OnLongClickListener, OnTouchL private float moveX, moveY; private float downX, downY; @Override - public boolean onTouch(View view, MotionEvent event) { - if (!mCanModify) { - mCanTriggerLongClick = false; - - return false; - } + public boolean onTouch(View thiz, MotionEvent event) { + // This should never happend + if (!mCanModify) throw new IllegalAccessError("Attemp to trigger built-in onTouch() on a non-modifiable ControlView button"); switch (event.getActionMasked()) { case MotionEvent.ACTION_DOWN: @@ -137,7 +138,16 @@ public class ControlView extends Button implements OnLongClickListener, OnTouchL return false; } - public void setModifiable(boolean z) { - mCanModify = z; + public void setModifiable(boolean canModify) { + mCanModify = canModify; + // mCanTriggerLongClick &= canModify; + setOnLongClickListener(canModify ? this : null); + if (canModify) { + setOnTouchListener(this); + } /* else if (mProperties instanceof View.OnTouchListener) { + setOnTouchListener((View.OnTouchListener) mProperties); + } */ else { + setOnTouchListener(null); + } } } diff --git a/app/src/main/java/net/kdt/pojavlaunch/value/customcontrols/ControlsLayout.java b/app/src/main/java/net/kdt/pojavlaunch/value/customcontrols/ControlsLayout.java index 3e231cae7..df1d9316d 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/value/customcontrols/ControlsLayout.java +++ b/app/src/main/java/net/kdt/pojavlaunch/value/customcontrols/ControlsLayout.java @@ -30,22 +30,30 @@ public class ControlsLayout extends FrameLayout } } - public void loadLayout(String jsonPath) { + public boolean loadLayout(String jsonPath) { try { - loadLayout(new Gson().fromJson(Tools.read(jsonPath), CustomControls.class)); - } catch (Exception e) { - e.printStackTrace(); + return loadLayout(new Gson().fromJson(Tools.read(jsonPath), CustomControls.class)); + } catch (Throwable th) { + Tools.showError(getContext(), th); } + return false; } - public void loadLayout(CustomControls controlLayout) { - mLayout = controlLayout; - removeAllViews(); - for (ControlButton button : controlLayout.button) { - addControlView(button); - } + public boolean loadLayout(CustomControls controlLayout) { + try { + mLayout = controlLayout; + removeAllViews(); + for (ControlButton button : controlLayout.button) { + addControlView(button); + } - setModified(false); + setModified(false); + + return true; + } catch (Throwable th) { + Tools.showError(getContext(), th); + } + return false; } public void addControlButton(ControlButton controlButton) { @@ -78,6 +86,22 @@ public class ControlsLayout extends FrameLayout mActivity = activity; } + /* + * Setting non-special buttons listener + * + * @param listener, the touch listener to initialize. + */ + public void setNonspecBtnsListener(View.OnTouchListener listener) { + for (int i = 0; i < getChildCount(); i++) { + View view = getChildAt(i); + if (view instanceof ControlView && ((ControlView) view).getProperties().keycode < 0) { + ControlView currView = ((ControlView) view); + currView.getProperties().specialButtonListener = listener; + currView.setOnTouchListener(listener); + } + } + } + public void toggleControlVisible() { if (mCanModify) return; // Not using on custom controls activity diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 961461474..82a425152 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -33,7 +33,7 @@ Select account - To select, click it. To delete an account, hold it. + Tip: Hold an account to delete "This feature is not yet finished so can't apply custom control at the moment!\nSwipe from right to left to open menu ◀\nHold a button to customize: edit, resize or delete." @@ -109,6 +109,9 @@ Clone + + Error + Add Edit