commit 24cd23ddc4bd6c0c1d6269d54230ad0fda80dcc2
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Wed Jan 18 16:21:40 2023 +0100

    Further improvements for the UI.

diff --git a/src/main/java/org/distorted/dialogs/RubikDialogStarsStatus.java b/src/main/java/org/distorted/dialogs/RubikDialogStarsStatus.java
index dd3fef66..c0e94b49 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogStarsStatus.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogStarsStatus.java
@@ -18,6 +18,7 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.Window;
 import android.widget.Button;
+import android.widget.LinearLayout;
 import android.widget.TextView;
 
 import androidx.annotation.NonNull;
@@ -33,6 +34,11 @@ import org.distorted.main.RubikActivity;
 
 public class RubikDialogStarsStatus extends AppCompatDialogFragment
   {
+  private static final float LAYOUT_HEIGHT = 0.110f;
+  private static final float MARGIN        = 0.007f;
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
   @NonNull
   @Override
   public Dialog onCreateDialog(Bundle savedInstanceState)
@@ -45,6 +51,26 @@ public class RubikDialogStarsStatus extends AppCompatDialogFragment
     final float butSize = displaymetrics.widthPixels * RubikActivity.DIALOG_BUTTON_SIZE;
     final View view = inflater.inflate(R.layout.dialog_stars_status, null);
 
+    int height = (int)(displaymetrics.heightPixels*LAYOUT_HEIGHT);
+    int margin = (int)(displaymetrics.heightPixels*MARGIN);
+
+    LinearLayout.LayoutParams params1 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT);
+    params1.setMargins(margin, margin, margin, margin);
+    LinearLayout.LayoutParams params2 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,height);
+    params2.setMargins(margin, margin, margin, margin);
+
+    LinearLayout lm = view.findViewById(R.id.stars_main);
+    lm.setPadding(margin,margin,margin,margin);
+
+    LinearLayout ls = view.findViewById(R.id.stars_strings);
+    ls.setLayoutParams(params1);
+    LinearLayout l1 = view.findViewById(R.id.stars_layout_1);
+    l1.setLayoutParams(params2);
+    LinearLayout l2 = view.findViewById(R.id.stars_layout_2);
+    l2.setLayoutParams(params2);
+    LinearLayout l3 = view.findViewById(R.id.stars_layout_3);
+    l3.setLayoutParams(params2);
+
     fillUpNumberOfStars(view);
 
     builder.setCancelable(true);
diff --git a/src/main/java/org/distorted/main/RubikActivity.java b/src/main/java/org/distorted/main/RubikActivity.java
index 5c1c44f6..cd4bc360 100644
--- a/src/main/java/org/distorted/main/RubikActivity.java
+++ b/src/main/java/org/distorted/main/RubikActivity.java
@@ -86,9 +86,6 @@ public class RubikActivity extends AppCompatActivity
     public static final float TAB_WIDTH           = 0.100f;
     public static final float TAB_HEIGHT          = 0.100f;
 
-    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
                                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
diff --git a/src/main/java/org/distorted/screens/RubikScreenPlay.java b/src/main/java/org/distorted/screens/RubikScreenPlay.java
index dd487ba0..7cb736f3 100644
--- a/src/main/java/org/distorted/screens/RubikScreenPlay.java
+++ b/src/main/java/org/distorted/screens/RubikScreenPlay.java
@@ -57,6 +57,10 @@ import static org.distorted.main.RubikActivity.USE_IAP;
 
 public class RubikScreenPlay extends RubikScreenBase implements RubikNetwork.Updatee
   {
+  private static final float MENU_BUTTON_HEIGHT  = 0.075f;
+  private static final float MENU_TEXT_SIZE      = 0.032f;
+  private static final float MENU_MARGIN         = 0.008f;
+
   public static final int NUM_COLUMNS  = 5;
   public static final int LEVELS_SHOWN = 8;
   private static final int[] mLocation = new int[2];
@@ -72,6 +76,7 @@ public class RubikScreenPlay extends RubikScreenBase implements RubikNetwork.Upd
   private int mUpperBarHeight;
   private boolean mShouldReactToEndOfScrambling;
   private float mScreenWidth, mScreenHeight;
+  private int mLevelHeight, mLevelWidth;
   private int mOldNumScramble;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -90,8 +95,8 @@ public class RubikScreenPlay extends RubikScreenBase implements RubikNetwork.Upd
     mScreenHeight = act.getScreenHeightInPixels();
     mUpperBarHeight = act.getHeightUpperBar();
 
-    mMenuButtonHeight = (int)(mScreenHeight*RubikActivity.MENU_BUTTON_HEIGHT);
-    mMenuTextSize     = (int)(mScreenHeight*RubikActivity.MENU_TEXT_SIZE);
+    mMenuButtonHeight = (int)(mScreenHeight*MENU_BUTTON_HEIGHT);
+    mMenuTextSize     = (int)(mScreenHeight*MENU_TEXT_SIZE);
 
     mObjectPopup = null;
     mOldNumScramble = 1000; // used to remember which 'level' buttons are visible; initially all visible
@@ -102,7 +107,7 @@ public class RubikScreenPlay extends RubikScreenBase implements RubikNetwork.Upd
 
     setupSolveButton(act);
     layoutTop.addView(mSolveButton);
-    setupMenuButton(act,mScreenWidth);
+    setupMenuButton(act,mScreenWidth, mScreenHeight);
     layoutTop.addView(mMenuButton);
     setupScrambleButton(act);
     layoutTop.addView(mScrambleButton);
@@ -146,7 +151,7 @@ public class RubikScreenPlay extends RubikScreenBase implements RubikNetwork.Upd
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  private void setupMenuButton(final RubikActivity act, final float width)
+  private void setupMenuButton(final RubikActivity act, final float width, final float height)
     {
     final int icon = RubikActivity.getDrawable(R.drawable.ui_small_menu,R.drawable.ui_medium_menu, R.drawable.ui_big_menu, R.drawable.ui_huge_menu);
     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT,1.0f);
@@ -160,7 +165,7 @@ public class RubikScreenPlay extends RubikScreenBase implements RubikNetwork.Upd
         if( mMenuPopup==null )
           {
           float width = act.getScreenWidthInPixels();
-          setupMenuWindow(act,width);
+          setupMenuWindow(act,width,height);
           }
 
         if( act.getControl().isUINotBlocked())
@@ -335,7 +340,7 @@ public class RubikScreenPlay extends RubikScreenBase implements RubikNetwork.Upd
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  private void setupMenuWindow(final RubikActivity act, final float width)
+  private void setupMenuWindow(final RubikActivity act, final float width, final float height)
     {
     LayoutInflater layoutInflater = (LayoutInflater)act.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
     final View layout = layoutInflater.inflate(R.layout.popup_menu, null);
@@ -343,10 +348,12 @@ public class RubikScreenPlay extends RubikScreenBase implements RubikNetwork.Upd
     mMenuPopup = new PopupWindow(act);
     mMenuPopup.setContentView(layout);
     mMenuPopup.setFocusable(true);
-    int padding = (int)(width*RubikActivity.MEDIUM_MARGIN);
+    int padding = (int)(height*MENU_MARGIN);
     int numButtons = USE_IAP ? 7 : 6;
     mMenuLayoutWidth = (int)(width*0.65f);
-    mMenuLayoutHeight= padding + numButtons*(mMenuButtonHeight+padding) + 4*mMenuButtonHeight+6*padding;
+    mLevelWidth = (mMenuLayoutWidth-4*padding)/3;
+    mLevelHeight = (int)(mLevelWidth*0.75f);
+    mMenuLayoutHeight= padding + numButtons*(mMenuButtonHeight+padding) + mLevelHeight/3 + 3*(mLevelHeight+padding);
 
     layout.setPadding(padding,0,padding,0);
 
@@ -462,9 +469,7 @@ public class RubikScreenPlay extends RubikScreenBase implements RubikNetwork.Upd
 
   private void setupLevelButtons(RubikActivity act, View layout, int padding)
     {
-    int sizeW = (mMenuLayoutWidth-4*padding)/3;
-    int sizeH = (int)(sizeW*0.8f);
-    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(sizeW,sizeH);
+    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(mLevelWidth,mLevelHeight);
     params.setMargins(padding/2,0,padding/2,0);
 
     mLevel = new Button[LEVELS_SHOWN+1];
diff --git a/src/main/res/layout/dialog_stars_status.xml b/src/main/res/layout/dialog_stars_status.xml
index b3a9b6f3..1e40a027 100644
--- a/src/main/res/layout/dialog_stars_status.xml
+++ b/src/main/res/layout/dialog_stars_status.xml
@@ -1,35 +1,43 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/stars_main"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:gravity="center|fill_horizontal"
-    android:padding="10dp"
     android:background="@color/grey"
     android:orientation="vertical">
 
-    <TextView
-        android:id="@+id/stars_string1"
-        android:background="@color/light_grey"
+    <LinearLayout
+        android:id="@+id/stars_strings"
         android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:gravity="start"
-        android:textSize="21sp"
-        android:padding="10dp"
-        android:text="@string/buy_string1"
-        />
-    <TextView
-        android:id="@+id/stars_string2"
+        android:layout_height="wrap_content"
+        android:padding="5dp"
+        android:gravity="center"
+        android:layout_marginTop="10dp"
         android:background="@color/light_grey"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:gravity="start"
-        android:textSize="21sp"
-        android:padding="10dp"
-        android:text="@string/buy_string2"
-        />
+        android:orientation="vertical">
+
+        <TextView
+           android:id="@+id/stars_string1"
+           android:layout_width="match_parent"
+           android:layout_height="wrap_content"
+           android:gravity="start"
+           android:textSize="21sp"
+           android:layout_marginBottom="10dp"
+           android:text="@string/buy_string1"
+           />
+        <TextView
+           android:id="@+id/stars_string2"
+           android:layout_width="match_parent"
+           android:layout_height="wrap_content"
+           android:gravity="start"
+           android:textSize="21sp"
+           android:text="@string/buy_string2"
+           />
+    </LinearLayout>
 
     <LinearLayout
-        android:id="@+id/stars_layout_50"
+        android:id="@+id/stars_layout_1"
         android:layout_width="fill_parent"
         android:layout_height="80dp"
         android:padding="5dp"
@@ -38,7 +46,7 @@
         android:orientation="horizontal">
 
         <ImageView
-             android:id="@+id/stars_image_50"
+             android:id="@+id/stars_image_1"
              android:layout_width="0dp"
              android:layout_height="wrap_content"
              android:layout_weight="1.5"
@@ -47,7 +55,7 @@
              android:src="@drawable/price_50"
              />
         <Button
-            android:id="@+id/stars_button_50"
+            android:id="@+id/stars_button_1"
             android:layout_width="0dp"
             android:layout_height="match_parent"
             android:layout_weight="1"
@@ -57,7 +65,7 @@
     </LinearLayout>
 
     <LinearLayout
-        android:id="@+id/stars_layout_200"
+        android:id="@+id/stars_layout_2"
         android:layout_width="fill_parent"
         android:layout_height="80dp"
         android:padding="5dp"
@@ -66,7 +74,7 @@
         android:orientation="horizontal">
 
         <ImageView
-             android:id="@+id/stars_image_200"
+             android:id="@+id/stars_image_2"
              android:layout_width="0dp"
              android:layout_height="wrap_content"
              android:layout_weight="1.5"
@@ -75,7 +83,7 @@
              android:src="@drawable/price_200"
              />
         <Button
-            android:id="@+id/stars_button_200"
+            android:id="@+id/stars_button_2"
             android:layout_width="0dp"
             android:layout_height="match_parent"
             android:layout_weight="1"
@@ -85,7 +93,7 @@
     </LinearLayout>
 
     <LinearLayout
-        android:id="@+id/stars_layout_600"
+        android:id="@+id/stars_layout_3"
         android:layout_width="fill_parent"
         android:layout_height="80dp"
         android:padding="5dp"
@@ -94,7 +102,7 @@
         android:orientation="horizontal">
 
         <ImageView
-             android:id="@+id/stars_image_600"
+             android:id="@+id/stars_image_3"
              android:layout_width="0dp"
              android:layout_height="wrap_content"
              android:layout_weight="1.5"
@@ -103,7 +111,7 @@
              android:src="@drawable/price_600"
              />
         <Button
-            android:id="@+id/stars_button_600"
+            android:id="@+id/stars_button_3"
             android:layout_width="0dp"
             android:layout_height="match_parent"
             android:layout_weight="1"
