horizontal aligning by dragging the config button
This commit is contained in:
parent
44a0ca0f4c
commit
66b9b278a8
6 changed files with 52 additions and 13 deletions
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:tools="http://schemas.android.com/tools"
|
||||
android:versionCode="583"
|
||||
android:versionName="34.10"
|
||||
android:versionCode="588"
|
||||
android:versionName="34.15"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> <!-- allows displaying notifications on Android >= 13 -->
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ public class ItemNumpadAlignment extends ItemDropDown {
|
|||
options.put(Gravity.END, context.getString(R.string.virtual_numpad_alignment_right));
|
||||
|
||||
super.populateIntegers(options);
|
||||
super.setValue(settings.getNumpadKeyAlignment() + "");
|
||||
super.setValue(settings.getNumpadAlignment() + "");
|
||||
onLayoutChange(settings.getMainViewLayout());
|
||||
|
||||
return this;
|
||||
|
|
|
|||
|
|
@ -39,10 +39,19 @@ public class SettingsUI extends SettingsTyping {
|
|||
return prefs.getBoolean("pref_haptic_feedback", true);
|
||||
}
|
||||
|
||||
public int getNumpadKeyAlignment() {
|
||||
public int getNumpadAlignment() {
|
||||
return getStringifiedInt("pref_numpad_alignment", Gravity.CENTER_HORIZONTAL);
|
||||
}
|
||||
|
||||
public void setNumpadAlignment(int alignment) {
|
||||
if (alignment != Gravity.CENTER_HORIZONTAL && alignment != Gravity.START && alignment != Gravity.END) {
|
||||
Logger.w(getClass().getSimpleName(), "Ignoring invalid numpad key alignment: " + alignment);
|
||||
}
|
||||
|
||||
prefsEditor.putString("pref_numpad_alignment", Integer.toString(alignment));
|
||||
prefsEditor.apply();
|
||||
}
|
||||
|
||||
public int getNumpadKeyDefaultHeight() {
|
||||
return context.getResources().getDimensionPixelSize(R.dimen.numpad_key_height);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ package io.github.sspanak.tt9.ui.main;
|
|||
|
||||
import android.content.res.Resources;
|
||||
import android.os.Build;
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.LinearLayout;
|
||||
|
|
@ -34,7 +33,7 @@ class MainLayoutNumpad extends BaseMainLayout {
|
|||
|
||||
LinearLayout container = view.findViewById(R.id.numpad_container);
|
||||
if (container != null) {
|
||||
container.setGravity(tt9.getSettings().getNumpadKeyAlignment());
|
||||
container.setGravity(tt9.getSettings().getNumpadAlignment());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package io.github.sspanak.tt9.ui.main;
|
||||
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
|
|
@ -84,6 +85,24 @@ public class ResizableMainView extends MainView implements View.OnAttachStateCha
|
|||
}
|
||||
|
||||
|
||||
public void onAlign(float deltaX) {
|
||||
boolean right = deltaX > 0;
|
||||
SettingsStore settings = tt9.getSettings();
|
||||
|
||||
if (settings.getNumpadAlignment() == Gravity.START && right) {
|
||||
settings.setNumpadAlignment(Gravity.CENTER_HORIZONTAL);
|
||||
} else if (settings.getNumpadAlignment() == Gravity.END && !right) {
|
||||
settings.setNumpadAlignment(Gravity.CENTER_HORIZONTAL);
|
||||
} else if (settings.getNumpadAlignment() == Gravity.CENTER_HORIZONTAL && right) {
|
||||
settings.setNumpadAlignment(Gravity.END);
|
||||
} else if (settings.getNumpadAlignment() == Gravity.CENTER_HORIZONTAL && !right) {
|
||||
settings.setNumpadAlignment(Gravity.START);
|
||||
}
|
||||
|
||||
render();
|
||||
}
|
||||
|
||||
|
||||
public void onResizeStart(float startY) {
|
||||
resizeStartY = startY;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,12 +13,17 @@ public class ResizeHandle implements View.OnTouchListener {
|
|||
@NonNull private final Runnable onClick;
|
||||
private ResizableMainView mainView;
|
||||
|
||||
private final float ALIGN_THRESHOLD;
|
||||
private final float RESIZE_THRESHOLD;
|
||||
private boolean dragging;
|
||||
|
||||
private boolean aligning;
|
||||
private boolean resizing;
|
||||
private float startX;
|
||||
private float startY;
|
||||
|
||||
|
||||
ResizeHandle(@NonNull Context context, @NonNull Runnable onClick) {
|
||||
ALIGN_THRESHOLD = context.getResources().getDimensionPixelSize(R.dimen.numpad_key_height) * 0.75f;
|
||||
RESIZE_THRESHOLD = context.getResources().getDimensionPixelSize(R.dimen.numpad_key_height) / 4.0f;
|
||||
this.onClick = onClick;
|
||||
}
|
||||
|
|
@ -45,27 +50,34 @@ public class ResizeHandle implements View.OnTouchListener {
|
|||
}
|
||||
|
||||
private void handlePress(MotionEvent event) {
|
||||
startX = event.getRawX();
|
||||
startY = event.getRawY();
|
||||
}
|
||||
|
||||
private void handleDrag(MotionEvent event) {
|
||||
if (mainView == null) {
|
||||
dragging = false;
|
||||
aligning = false;
|
||||
resizing = false;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!dragging && Math.abs(event.getRawY() - startY) >= RESIZE_THRESHOLD) {
|
||||
if (!resizing && Math.abs(event.getRawY() - startY) >= RESIZE_THRESHOLD) {
|
||||
mainView.onResizeStart(event.getRawY());
|
||||
dragging = true;
|
||||
} else if (dragging) {
|
||||
resizing = true;
|
||||
} else if (resizing) {
|
||||
mainView.onResizeThrottled(event.getRawY());
|
||||
} else if (!aligning && Math.abs(event.getRawX() - startX) >= ALIGN_THRESHOLD) {
|
||||
mainView.onAlign(event.getRawX() - startX);
|
||||
aligning = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void handleRelease(MotionEvent event) {
|
||||
if (mainView != null && dragging) {
|
||||
if (mainView != null && resizing) {
|
||||
mainView.onResize(event.getRawY());
|
||||
dragging = false;
|
||||
resizing = false;
|
||||
} else if (mainView != null && aligning) {
|
||||
aligning = false;
|
||||
} else {
|
||||
onClick.run();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue