commit 9dfb553fc94a275fc85b2349f351c316dbe804ff
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Wed Jan 18 15:02:39 2023 +0100

    Improve UI proportions on squarish screens.

diff --git a/src/main/java/org/distorted/dialogs/RubikDialogAbout.java b/src/main/java/org/distorted/dialogs/RubikDialogAbout.java
index 048a8642..2db86946 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogAbout.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogAbout.java
@@ -46,9 +46,9 @@ public class RubikDialogAbout extends AppCompatDialogFragment
 
     DisplayMetrics displaymetrics = new DisplayMetrics();
     act.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
-    final float titleSize= displaymetrics.widthPixels * RubikActivity.MENU_BIG_TEXT_SIZE;
+    final float titleSize= displaymetrics.widthPixels * RubikActivity.BIG_TEXT_SIZE;
     final float okSize   = displaymetrics.widthPixels * RubikActivity.DIALOG_BUTTON_SIZE;
-    final float textSize = displaymetrics.widthPixels * RubikActivity.MENU_SMALL_TEXT_SIZE;
+    final float textSize = displaymetrics.widthPixels * RubikActivity.SMALL_TEXT_SIZE;
 
     TextView tv = (TextView) inflater.inflate(R.layout.dialog_title, null);
     tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, titleSize);
diff --git a/src/main/java/org/distorted/dialogs/RubikDialogBandagedDelete.java b/src/main/java/org/distorted/dialogs/RubikDialogBandagedDelete.java
index 06fb84a5..ceb104ed 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogBandagedDelete.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogBandagedDelete.java
@@ -43,7 +43,7 @@ public class RubikDialogBandagedDelete extends AppCompatDialogFragment
 
     DisplayMetrics displaymetrics = new DisplayMetrics();
     act.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
-    final float titleSize= displaymetrics.widthPixels * RubikActivity.MENU_BIG_TEXT_SIZE;
+    final float titleSize= displaymetrics.widthPixels * RubikActivity.BIG_TEXT_SIZE;
     final float okSize   = displaymetrics.widthPixels * RubikActivity.DIALOG_BUTTON_SIZE;
 
     TextView tv = (TextView) inflater.inflate(R.layout.dialog_title, null);
diff --git a/src/main/java/org/distorted/dialogs/RubikDialogBandagedSave.java b/src/main/java/org/distorted/dialogs/RubikDialogBandagedSave.java
index 7209b1ac..9a31cffc 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogBandagedSave.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogBandagedSave.java
@@ -17,7 +17,6 @@ import android.util.TypedValue;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.Window;
-import android.view.WindowManager;
 import android.widget.Button;
 import android.widget.TextView;
 
@@ -45,7 +44,7 @@ public class RubikDialogBandagedSave extends AppCompatDialogFragment
 
     DisplayMetrics displaymetrics = new DisplayMetrics();
     act.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
-    final float titleSize= displaymetrics.widthPixels * RubikActivity.MENU_BIG_TEXT_SIZE;
+    final float titleSize= displaymetrics.widthPixels * RubikActivity.BIG_TEXT_SIZE;
     final float okSize   = displaymetrics.widthPixels * RubikActivity.DIALOG_BUTTON_SIZE;
 
     TextView tv = (TextView) inflater.inflate(R.layout.dialog_title, null);
diff --git a/src/main/java/org/distorted/dialogs/RubikDialogEffects.java b/src/main/java/org/distorted/dialogs/RubikDialogEffects.java
index e3f64293..18c86c4c 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogEffects.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogEffects.java
@@ -213,10 +213,10 @@ public class RubikDialogEffects extends AppCompatDialogFragment implements SeekB
 
     DisplayMetrics displaymetrics = new DisplayMetrics();
     act.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
-    final float titleSize= displaymetrics.widthPixels * RubikActivity.MENU_BIG_TEXT_SIZE;
+    final float titleSize= displaymetrics.widthPixels * RubikActivity.BIG_TEXT_SIZE;
     final float okSize   = displaymetrics.widthPixels * RubikActivity.DIALOG_BUTTON_SIZE;
 
-    mTextSize = displaymetrics.widthPixels * RubikActivity.MENU_SMALL_TEXT_SIZE;
+    mTextSize = displaymetrics.widthPixels * RubikActivity.SMALL_TEXT_SIZE;
 
     tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, titleSize);
     tv.setText(R.string.effects);
diff --git a/src/main/java/org/distorted/dialogs/RubikDialogError.java b/src/main/java/org/distorted/dialogs/RubikDialogError.java
index 51362d0b..af2d7c3a 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogError.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogError.java
@@ -17,7 +17,6 @@ import android.util.TypedValue;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.Window;
-import android.view.WindowManager;
 import android.widget.Button;
 import android.widget.TextView;
 
@@ -43,7 +42,7 @@ public class RubikDialogError extends AppCompatDialogFragment
 
     DisplayMetrics displaymetrics = new DisplayMetrics();
     act.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
-    final float titleSize= displaymetrics.widthPixels * RubikActivity.MENU_BIG_TEXT_SIZE;
+    final float titleSize= displaymetrics.widthPixels * RubikActivity.BIG_TEXT_SIZE;
     final float okSize   = displaymetrics.widthPixels * RubikActivity.DIALOG_BUTTON_SIZE;
 
     TextView tv = (TextView) inflater.inflate(R.layout.dialog_title, null);
diff --git a/src/main/java/org/distorted/dialogs/RubikDialogNewRecord.java b/src/main/java/org/distorted/dialogs/RubikDialogNewRecord.java
index cf09a989..d08664a8 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogNewRecord.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogNewRecord.java
@@ -45,9 +45,9 @@ public class RubikDialogNewRecord extends AppCompatDialogFragment
 
     DisplayMetrics displaymetrics = new DisplayMetrics();
     act.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
-    final float titleSize= displaymetrics.widthPixels * RubikActivity.MENU_BIG_TEXT_SIZE;
+    final float titleSize= displaymetrics.widthPixels * RubikActivity.BIG_TEXT_SIZE;
     final float okSize   = displaymetrics.widthPixels * RubikActivity.DIALOG_BUTTON_SIZE;
-    final float textSize = displaymetrics.widthPixels * RubikActivity.MENU_BIG_TEXT_SIZE;
+    final float textSize = displaymetrics.widthPixels * RubikActivity.BIG_TEXT_SIZE;
 
     TextView tv = (TextView) inflater.inflate(R.layout.dialog_title, null);
     tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, titleSize);
diff --git a/src/main/java/org/distorted/dialogs/RubikDialogPattern.java b/src/main/java/org/distorted/dialogs/RubikDialogPattern.java
index 0878372e..adb6ce47 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogPattern.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogPattern.java
@@ -35,8 +35,6 @@ import org.distorted.main.RubikActivity;
 import org.distorted.objects.RubikObject;
 import org.distorted.objects.RubikObjectList;
 import org.distorted.patterns.RubikPatternList;
-import org.distorted.screens.RubikScreenPlay;
-import org.distorted.screens.ScreenList;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -57,7 +55,7 @@ public class RubikDialogPattern extends AppCompatDialogFragment
     act.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
 
     int scrWidth = displaymetrics.widthPixels;
-    final float titleSize= scrWidth*RubikActivity.MENU_BIG_TEXT_SIZE;
+    final float titleSize= scrWidth*RubikActivity.BIG_TEXT_SIZE;
     final float okSize   = scrWidth*RubikActivity.DIALOG_BUTTON_SIZE;
     final int   tabHeight= (int)(scrWidth*RubikActivity.TAB_HEIGHT);
     final int   tabWidth = (int)(scrWidth*RubikActivity.TAB_WIDTH);
diff --git a/src/main/java/org/distorted/dialogs/RubikDialogPrivacy.java b/src/main/java/org/distorted/dialogs/RubikDialogPrivacy.java
index 5167cefb..9aeda7a6 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogPrivacy.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogPrivacy.java
@@ -46,7 +46,7 @@ public class RubikDialogPrivacy extends AppCompatDialogFragment
 
     DisplayMetrics displaymetrics = new DisplayMetrics();
     act.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
-    final float titleSize= displaymetrics.widthPixels * RubikActivity.MENU_BIG_TEXT_SIZE;
+    final float titleSize= displaymetrics.widthPixels * RubikActivity.BIG_TEXT_SIZE;
     final float butSize  = displaymetrics.widthPixels * RubikActivity.DIALOG_BUTTON_SIZE;
 
     TextView tv = (TextView) inflater.inflate(R.layout.dialog_title, null);
diff --git a/src/main/java/org/distorted/dialogs/RubikDialogScores.java b/src/main/java/org/distorted/dialogs/RubikDialogScores.java
index 52bc04be..0e5136df 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogScores.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogScores.java
@@ -53,7 +53,7 @@ public class RubikDialogScores extends AppCompatDialogFragment
     act.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
 
     int scrWidth = displaymetrics.widthPixels;
-    final float titleSize= scrWidth*RubikActivity.MENU_BIG_TEXT_SIZE;
+    final float titleSize= scrWidth*RubikActivity.BIG_TEXT_SIZE;
     final float okSize   = scrWidth*RubikActivity.DIALOG_BUTTON_SIZE;
     final int   tabHeight= (int)(scrWidth*RubikActivity.TAB_HEIGHT);
     final int   tabWidth = (int)(scrWidth*RubikActivity.TAB_WIDTH);
diff --git a/src/main/java/org/distorted/dialogs/RubikDialogSetName.java b/src/main/java/org/distorted/dialogs/RubikDialogSetName.java
index fbd6cc29..47cbd90e 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogSetName.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogSetName.java
@@ -74,9 +74,9 @@ public class RubikDialogSetName extends AppCompatDialogFragment
 
     DisplayMetrics displaymetrics = new DisplayMetrics();
     act.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
-    final float titleSize= displaymetrics.widthPixels * RubikActivity.MENU_BIG_TEXT_SIZE;
+    final float titleSize= displaymetrics.widthPixels * RubikActivity.BIG_TEXT_SIZE;
     final float okSize   = displaymetrics.widthPixels * RubikActivity.DIALOG_BUTTON_SIZE;
-    final float textSize = displaymetrics.widthPixels * RubikActivity.MENU_SMALL_TEXT_SIZE;
+    final float textSize = displaymetrics.widthPixels * RubikActivity.SMALL_TEXT_SIZE;
 
     Bundle args = getArguments();
     String name;
diff --git a/src/main/java/org/distorted/dialogs/RubikDialogSolved.java b/src/main/java/org/distorted/dialogs/RubikDialogSolved.java
index b6db36d5..4587262a 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogSolved.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogSolved.java
@@ -43,9 +43,9 @@ public class RubikDialogSolved extends AppCompatDialogFragment
 
     DisplayMetrics displaymetrics = new DisplayMetrics();
     act.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
-    final float titleSize= displaymetrics.widthPixels * RubikActivity.MENU_BIG_TEXT_SIZE;
+    final float titleSize= displaymetrics.widthPixels * RubikActivity.BIG_TEXT_SIZE;
     final float okSize   = displaymetrics.widthPixels * RubikActivity.DIALOG_BUTTON_SIZE;
-    final float textSize = displaymetrics.widthPixels * RubikActivity.MENU_BIG_TEXT_SIZE;
+    final float textSize = displaymetrics.widthPixels * RubikActivity.BIG_TEXT_SIZE;
 
     TextView tv = (TextView) inflater.inflate(R.layout.dialog_title, null);
     tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, titleSize);
diff --git a/src/main/java/org/distorted/dialogs/RubikDialogSolverError.java b/src/main/java/org/distorted/dialogs/RubikDialogSolverError.java
index 694c1794..18903c84 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogSolverError.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogSolverError.java
@@ -42,9 +42,9 @@ public class RubikDialogSolverError extends AppCompatDialogFragment
 
     DisplayMetrics displaymetrics = new DisplayMetrics();
     act.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
-    final float titleSize= displaymetrics.widthPixels * RubikActivity.MENU_BIG_TEXT_SIZE;
+    final float titleSize= displaymetrics.widthPixels * RubikActivity.BIG_TEXT_SIZE;
     final float okSize   = displaymetrics.widthPixels * RubikActivity.DIALOG_BUTTON_SIZE;
-    final float textSize = displaymetrics.widthPixels * RubikActivity.MENU_BIG_TEXT_SIZE;
+    final float textSize = displaymetrics.widthPixels * RubikActivity.BIG_TEXT_SIZE;
 
     TextView tv = (TextView) inflater.inflate(R.layout.dialog_title, null);
     tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, titleSize);
diff --git a/src/main/java/org/distorted/dialogs/RubikDialogTutorial.java b/src/main/java/org/distorted/dialogs/RubikDialogTutorial.java
index 20d1c793..e4398e81 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogTutorial.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogTutorial.java
@@ -55,7 +55,7 @@ public class RubikDialogTutorial extends AppCompatDialogFragment
     DisplayMetrics displaymetrics = new DisplayMetrics();
     act.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
     int scrWidth = displaymetrics.widthPixels;
-    final float titleSize= scrWidth*RubikActivity.MENU_BIG_TEXT_SIZE;
+    final float titleSize= scrWidth*RubikActivity.BIG_TEXT_SIZE;
     final float okSize   = scrWidth*RubikActivity.DIALOG_BUTTON_SIZE;
     final int   tabHeight= (int)(scrWidth*RubikActivity.TAB_HEIGHT);
     final int   tabWidth = (int)(scrWidth*RubikActivity.TAB_WIDTH);
diff --git a/src/main/java/org/distorted/dialogs/RubikDialogUpdates.java b/src/main/java/org/distorted/dialogs/RubikDialogUpdates.java
index f4b2bb84..75ae2634 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogUpdates.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogUpdates.java
@@ -77,7 +77,7 @@ public class RubikDialogUpdates extends AppCompatDialogFragment implements Rubik
     act.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
     int w= displaymetrics.widthPixels;
     int h= displaymetrics.heightPixels;
-    final float titleSize= w*RubikActivity.MENU_BIG_TEXT_SIZE;
+    final float titleSize= w*RubikActivity.BIG_TEXT_SIZE;
     final float okSize   = w*RubikActivity.DIALOG_BUTTON_SIZE;
     mMargin   = (int)(w*RubikActivity.MEDIUM_MARGIN);
     mSize     = (int)(h*0.14f);
diff --git a/src/main/java/org/distorted/main/RubikActivity.java b/src/main/java/org/distorted/main/RubikActivity.java
index ba3faa28..5c1c44f6 100644
--- a/src/main/java/org/distorted/main/RubikActivity.java
+++ b/src/main/java/org/distorted/main/RubikActivity.java
@@ -81,12 +81,13 @@ public class RubikActivity extends AppCompatActivity
     public static final float SCORES_ITEM_TEXT    = 0.030f;
     public static final float TUTORIAL_ITEM_TEXT  = 0.100f;
     public static final float DIALOG_BUTTON_SIZE  = 0.06f;
-    public static final float MENU_BIG_TEXT_SIZE  = 0.05f;
-    public static final float MENU_MAIN_TEXT_SIZE = 0.047f;
-    public static final float MENU_SMALL_TEXT_SIZE= 0.035f;
+    public static final float BIG_TEXT_SIZE       = 0.05f;
+    public static final float SMALL_TEXT_SIZE     = 0.035f;
     public static final float TAB_WIDTH           = 0.100f;
     public static final float TAB_HEIGHT          = 0.100f;
-    public static final float MENU_BUTTON_HEIGHT  = 0.115f;
+
+    public static final float MENU_BUTTON_HEIGHT  = 0.075f;
+    public static final float MENU_TEXT_SIZE      = 0.032f;
 
     public static final int FLAGS =  View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
diff --git a/src/main/java/org/distorted/purchase/PurchaseScreenPane.java b/src/main/java/org/distorted/purchase/PurchaseScreenPane.java
index d7f74ac1..18e62f77 100644
--- a/src/main/java/org/distorted/purchase/PurchaseScreenPane.java
+++ b/src/main/java/org/distorted/purchase/PurchaseScreenPane.java
@@ -38,7 +38,7 @@ import java.lang.ref.WeakReference;
 
 public class PurchaseScreenPane implements ListenerOverlay
 {
-  public static final int UNLOCK_ALL_PRICE = 500;
+  public static final int UNLOCK_ALL_PRICE = 600;
 
   private static final int[] IMAGES =
     {
@@ -50,8 +50,8 @@ public class PurchaseScreenPane implements ListenerOverlay
     };
 
   private static final int NUM_IMAGES      = IMAGES.length;
-  public  static final float PADDING_RATIO = 0.025f;
-  private static final float TEXT_RATIO    = 0.050f;
+  public  static final float PADDING_RATIO = 0.017f;
+  private static final float TEXT_RATIO    = 0.032f;
 
   private final WeakReference<PurchaseActivity> mAct;
   private RubikObject mObject;
@@ -220,9 +220,9 @@ public class PurchaseScreenPane implements ListenerOverlay
   PurchaseScreenPane(final PurchaseActivity act)
     {
     mAct = new WeakReference<>(act);
-    int width = act.getScreenWidthInPixels();
-    float textSize = width*TEXT_RATIO;
-    int margin = (int)(width*PADDING_RATIO);
+    int height = act.getScreenHeightInPixels();
+    float textSize = height*TEXT_RATIO;
+    int margin = (int)(height*PADDING_RATIO);
     int padding = margin/3;
 
     LinearLayout upperBar  = act.findViewById(R.id.upperBar);
diff --git a/src/main/java/org/distorted/screens/RubikScreenPlay.java b/src/main/java/org/distorted/screens/RubikScreenPlay.java
index 108bf034..dd487ba0 100644
--- a/src/main/java/org/distorted/screens/RubikScreenPlay.java
+++ b/src/main/java/org/distorted/screens/RubikScreenPlay.java
@@ -71,7 +71,7 @@ public class RubikScreenPlay extends RubikScreenBase implements RubikNetwork.Upd
   private int mColCount, mRowCount, mMaxRowCount;
   private int mUpperBarHeight;
   private boolean mShouldReactToEndOfScrambling;
-  private float mScreenWidth;
+  private float mScreenWidth, mScreenHeight;
   private int mOldNumScramble;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -86,11 +86,12 @@ public class RubikScreenPlay extends RubikScreenBase implements RubikNetwork.Upd
   void enterScreen(final RubikActivity act)
     {
     mWeakAct = new WeakReference<>(act);
-    mScreenWidth = act.getScreenWidthInPixels();
+    mScreenWidth  = act.getScreenWidthInPixels();
+    mScreenHeight = act.getScreenHeightInPixels();
     mUpperBarHeight = act.getHeightUpperBar();
 
-    mMenuButtonHeight = (int)(mScreenWidth*RubikActivity.MENU_BUTTON_HEIGHT);
-    mMenuTextSize     = (int)(mScreenWidth*RubikActivity.MENU_MAIN_TEXT_SIZE);
+    mMenuButtonHeight = (int)(mScreenHeight*RubikActivity.MENU_BUTTON_HEIGHT);
+    mMenuTextSize     = (int)(mScreenHeight*RubikActivity.MENU_TEXT_SIZE);
 
     mObjectPopup = null;
     mOldNumScramble = 1000; // used to remember which 'level' buttons are visible; initially all visible
