From fed34eedf944fbfad33dfc49b700884b0437ef19 Mon Sep 17 00:00:00 2001 From: SerpentSpirale Date: Wed, 30 Jun 2021 22:55:47 +0200 Subject: [PATCH] Make use of the OOP to clean up ControlLayout. --- .../customcontrols/ControlLayout.java | 33 +++---------------- .../customcontrols/buttons/ControlButton.java | 31 +++++++++++++++-- .../customcontrols/buttons/ControlDrawer.java | 9 +++++ 3 files changed, 42 insertions(+), 31 deletions(-) diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/ControlLayout.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/ControlLayout.java index 94175dfa5..d93ede3cb 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/ControlLayout.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/ControlLayout.java @@ -59,47 +59,20 @@ public class ControlLayout extends FrameLayout //CONTROL BUTTON for (ControlData button : controlLayout.mControlDataList) { - button.isHideable = button.keycodes[0] != ControlData.SPECIALBTN_TOGGLECTRL && button.keycodes[0] != ControlData.SPECIALBTN_VIRTUALMOUSE; - button.setWidth(button.getWidth() / controlLayout.scaledAt * LauncherPreferences.PREF_BUTTONSIZE); - button.setHeight(button.getHeight() / controlLayout.scaledAt * LauncherPreferences.PREF_BUTTONSIZE); - if (!button.isDynamicBtn) { - button.dynamicX = button.x / CallbackBridge.physicalWidth + " * ${screen_width}"; - button.dynamicY = button.y / CallbackBridge.physicalHeight + " * ${screen_height}"; - } - button.update(); addControlView(button); } //CONTROL DRAWER for(ControlDrawerData drawerData : controlLayout.mDrawerDataList){ - drawerData.properties.isHideable = true; - drawerData.properties.setWidth(drawerData.properties.getWidth() / controlLayout.scaledAt * LauncherPreferences.PREF_BUTTONSIZE); - drawerData.properties.setHeight(drawerData.properties.getHeight() / controlLayout.scaledAt * LauncherPreferences.PREF_BUTTONSIZE); - if (!drawerData.properties.isDynamicBtn) { - drawerData.properties.dynamicX = drawerData.properties.x / CallbackBridge.physicalWidth + " * ${screen_width}"; - drawerData.properties.dynamicY = drawerData.properties.y / CallbackBridge.physicalHeight + " * ${screen_height}"; - } - ControlDrawer drawer = addDrawerView(drawerData); + if(mModifiable) drawer.areButtonsVisible = true; //CONTROL SUB BUTTON for (ControlData subButton : drawerData.buttonProperties){ - subButton.isHideable = subButton.keycodes[0] != ControlData.SPECIALBTN_TOGGLECTRL && subButton.keycodes[0] != ControlData.SPECIALBTN_VIRTUALMOUSE; - subButton.setWidth(subButton.getWidth() / controlLayout.scaledAt * LauncherPreferences.PREF_BUTTONSIZE); - subButton.setHeight(subButton.getHeight() / controlLayout.scaledAt * LauncherPreferences.PREF_BUTTONSIZE); - if (!subButton.isDynamicBtn) { - subButton.dynamicX = subButton.x / CallbackBridge.physicalWidth + " * ${screen_width}"; - subButton.dynamicY = subButton.y / CallbackBridge.physicalHeight + " * ${screen_height}"; - } - subButton.update(); addSubView(drawer, subButton); } - - - } - mLayout.scaledAt = LauncherPreferences.PREF_BUTTONSIZE; setModified(false); @@ -218,6 +191,10 @@ public class ControlLayout extends FrameLayout setControlVisible(mControlVisible); } + public float getLayoutScale(){ + return mLayout.scaledAt; + } + public void setControlVisible(boolean isVisible) { if (mModifiable) return; // Not using on custom controls activity diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlButton.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlButton.java index b7b38db60..e1277b695 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlButton.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlButton.java @@ -1,5 +1,6 @@ package net.kdt.pojavlaunch.customcontrols.buttons; +import android.annotation.SuppressLint; import android.graphics.*; import android.graphics.drawable.GradientDrawable; import android.util.*; @@ -11,8 +12,11 @@ import net.kdt.pojavlaunch.customcontrols.ControlData; import net.kdt.pojavlaunch.customcontrols.ControlLayout; import net.kdt.pojavlaunch.customcontrols.handleview.*; import net.kdt.pojavlaunch.*; +import net.kdt.pojavlaunch.prefs.LauncherPreferences; + import org.lwjgl.glfw.*; +@SuppressLint("ViewConstructor") public class ControlButton extends androidx.appcompat.widget.AppCompatButton implements OnLongClickListener { private Paint mRectPaint; @@ -34,15 +38,18 @@ public class ControlButton extends androidx.appcompat.widget.AppCompatButton imp mGestureDetector = new GestureDetector(getContext(), new SingleTapConfirm()); setOnLongClickListener(this); + //When a button is created, the width/height has yet to be processed to fit the scaling. - setProperties(properties); + setProperties(preProcessProperties(properties, layout)); setModified(false); mHandleView = new SelectionEndHandleView(this); - + + + //For the toggle layer final TypedValue value = new TypedValue(); getContext().getTheme().resolveAttribute(R.attr.colorAccent, value, true); - + mRectPaint = new Paint(); mRectPaint.setColor(value.data); mRectPaint.setAlpha(128); @@ -60,6 +67,24 @@ public class ControlButton extends androidx.appcompat.widget.AppCompatButton imp setProperties(properties, true); } + public ControlData preProcessProperties(ControlData properties, ControlLayout layout){ + //Size + properties.setWidth(properties.getWidth() / layout.getLayoutScale() * LauncherPreferences.PREF_BUTTONSIZE); + properties.setHeight(properties.getHeight() / layout.getLayoutScale() * LauncherPreferences.PREF_BUTTONSIZE); + + //Visibility + properties.isHideable = properties.keycodes[0] != ControlData.SPECIALBTN_TOGGLECTRL && properties.keycodes[0] != ControlData.SPECIALBTN_VIRTUALMOUSE; + + //Position + if (!properties.isDynamicBtn) { + properties.dynamicX = properties.x / CallbackBridge.physicalWidth + " * ${screen_width}"; + properties.dynamicY = properties.y / CallbackBridge.physicalHeight + " * ${screen_height}"; + } + + properties.update(); + return properties; + } + public void setProperties(ControlData properties, boolean changePos) { mProperties = properties; diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlDrawer.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlDrawer.java index 685284bbc..187ca94bd 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlDrawer.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlDrawer.java @@ -1,5 +1,6 @@ package net.kdt.pojavlaunch.customcontrols.buttons; +import android.annotation.SuppressLint; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; @@ -13,6 +14,7 @@ import java.util.ArrayList; +@SuppressLint("ViewConstructor") public class ControlDrawer extends ControlButton { @@ -115,6 +117,13 @@ public class ControlDrawer extends ControlButton { resizeButtons(); } + @Override + public ControlData preProcessProperties(ControlData properties, ControlLayout layout) { + ControlData data = super.preProcessProperties(properties, layout); + data.isHideable = true; + return data; + } + @Override public void setVisible(boolean isVisible) { //TODO replicate changes to his children ?