commit 88fb92ba8e2983cdbe9c07e15348e94576907f7e
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Fri Jun 26 00:12:29 2020 +0100

    Improvements to the Menu.

diff --git a/src/main/java/org/distorted/main/RubikActivity.java b/src/main/java/org/distorted/main/RubikActivity.java
index ac1ec2b1..b79912ae 100644
--- a/src/main/java/org/distorted/main/RubikActivity.java
+++ b/src/main/java/org/distorted/main/RubikActivity.java
@@ -46,6 +46,7 @@ public class RubikActivity extends AppCompatActivity
     public static final float BUTTON_TEXT_SIZE = 0.05f;
     public static final float TITLE_TEXT_SIZE  = 0.06f;
     public static final float BITMAP_TEXT_SIZE = 0.09f;
+    public static final float MENU_ITEM_SIZE   = 0.12f;
 
     public static final float MENU_BIG_TEXT_SIZE   = 0.05f;
     public static final float MENU_MEDIUM_TEXT_SIZE= 0.04f;
@@ -53,7 +54,7 @@ public class RubikActivity extends AppCompatActivity
 
     private boolean mJustStarted;
     private FirebaseAnalytics mFirebaseAnalytics;
-    private float mScreenWidth;
+    private int mScreenWidth, mScreenHeight;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -69,7 +70,8 @@ public class RubikActivity extends AppCompatActivity
 
       DisplayMetrics displaymetrics = new DisplayMetrics();
       getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
-      mScreenWidth=displaymetrics.widthPixels;
+      mScreenWidth =displaymetrics.widthPixels;
+      mScreenHeight=displaymetrics.heightPixels;
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -221,11 +223,18 @@ public class RubikActivity extends AppCompatActivity
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-    public float getScreenWidthInPixels()
+    public int getScreenWidthInPixels()
       {
       return mScreenWidth;
       }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+    public int getScreenHeightInPixels()
+      {
+      return mScreenHeight;
+      }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
     public RubikPreRender getPreRender()
diff --git a/src/main/java/org/distorted/states/RubikStatePlay.java b/src/main/java/org/distorted/states/RubikStatePlay.java
index 872b7abc..1efb218f 100644
--- a/src/main/java/org/distorted/states/RubikStatePlay.java
+++ b/src/main/java/org/distorted/states/RubikStatePlay.java
@@ -74,7 +74,7 @@ public class RubikStatePlay extends RubikStateAbstract implements AdapterView.On
   private AppCompatSpinner mLevelSpinner;
   private ArrayAdapter<String> mSpinnerAdapter;
   private int mLevelValue;
-  private float mButtonSize, mTitleSize;
+  private float mButtonSize, mTitleSize, mMenuItemSize, mMenuTextSize;
 
   private ArrayList<Move> mMoves;
   private boolean mCanPrevMove;
@@ -106,8 +106,10 @@ public class RubikStatePlay extends RubikStateAbstract implements AdapterView.On
     final float scale = metrics.density;
 
     float width = act.getScreenWidthInPixels();
-    mButtonSize = width*RubikActivity.BUTTON_TEXT_SIZE;
-    mTitleSize  = width*RubikActivity.TITLE_TEXT_SIZE;
+    mMenuTextSize = width*RubikActivity.MENU_MEDIUM_TEXT_SIZE;
+    mButtonSize   = width*RubikActivity.BUTTON_TEXT_SIZE;
+    mTitleSize    = width*RubikActivity.TITLE_TEXT_SIZE;
+    mMenuItemSize = width*RubikActivity.MENU_ITEM_SIZE;
 
     mCanPrevMove = true;
 
@@ -143,7 +145,7 @@ public class RubikStatePlay extends RubikStateAbstract implements AdapterView.On
     setupMenuButton(act,scale);
     layoutRight.addView(mMenuButton);
 
-    setupMenuWindow(act, scale);
+    setupMenuWindow(act, scale, width);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -263,6 +265,8 @@ public class RubikStatePlay extends RubikStateAbstract implements AdapterView.On
     mMenuButton.setPadding(padding,0,padding,0);
     mMenuButton.setImageResource(R.drawable.menu);
 
+    final int barHeight = act.getScreenHeightInPixels()/10;
+
     mMenuButton.setOnClickListener( new View.OnClickListener()
       {
       @Override
@@ -270,11 +274,7 @@ public class RubikStatePlay extends RubikStateAbstract implements AdapterView.On
         {
         if( act.getPreRender().canPlay() )
           {
-          int total = RubikObjectList.getTotal();
-          boolean vertical = act.isVertical();
-          mMenuLayout.setOrientation(vertical ? LinearLayout.VERTICAL:LinearLayout.HORIZONTAL);
-
-          mMenuPopup.showAsDropDown(view, 0, -3*mMenuLayoutHeight, Gravity.LEFT);
+          mMenuPopup.showAsDropDown(view, 0, -mMenuLayoutHeight-barHeight, Gravity.LEFT);
           mMenuPopup.update();
           }
         }
@@ -387,7 +387,7 @@ public class RubikStatePlay extends RubikStateAbstract implements AdapterView.On
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  private void setupMenuWindow(final RubikActivity act, final float scale)
+  private void setupMenuWindow(final RubikActivity act, final float scale, final float width)
     {
     LayoutInflater layoutInflater = (LayoutInflater)act.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
     final View layout = layoutInflater.inflate(R.layout.popup_objects, null);
@@ -396,10 +396,11 @@ public class RubikStatePlay extends RubikStateAbstract implements AdapterView.On
     mMenuPopup = new PopupWindow(act);
     mMenuPopup.setContentView(layout);
     mMenuPopup.setFocusable(true);
-    int margin = (int)(5*scale + 0.5f);
+    int margin = (int)(3*scale + 0.5f);
+    int padding= (int)(7*scale + 0.5f);
 
-    LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT);
-    p.setMargins(margin, margin, margin, margin);
+    LinearLayout.LayoutParams p = new LinearLayout.LayoutParams( (int)width/2 - 2*padding, (int)mMenuItemSize);
+    p.setMargins(margin, margin/2, margin, margin/2);
 
     for(int i=0; i<NUM_BUTTONS; i++)
       {
@@ -407,6 +408,7 @@ public class RubikStatePlay extends RubikStateAbstract implements AdapterView.On
       Button button = new Button(act);
       button.setLayoutParams(p);
       button.setText(BUTTON_LABELS[i]);
+      button.setTextSize(TypedValue.COMPLEX_UNIT_PX, mMenuTextSize);
 
       button.setOnClickListener( new View.OnClickListener()
         {
@@ -421,7 +423,7 @@ public class RubikStatePlay extends RubikStateAbstract implements AdapterView.On
       mMenuLayout.addView(button);
       }
 
-    mMenuLayoutHeight= (int)(margin + NUM_BUTTONS*(mButtonSize+margin));
+    mMenuLayoutHeight= (int)(NUM_BUTTONS*(mMenuItemSize+margin));
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -452,10 +454,6 @@ public class RubikStatePlay extends RubikStateAbstract implements AdapterView.On
           android.util.Log.e("solution", "error: trying to back move of angle 0");
           }
         }
-      else
-        {
-        android.util.Log.e("solv", "error: no moves to back!");
-        }
       }
     }
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/states/RubikStateSolving.java b/src/main/java/org/distorted/states/RubikStateSolving.java
index 1a7a0890..0e3e35ab 100644
--- a/src/main/java/org/distorted/states/RubikStateSolving.java
+++ b/src/main/java/org/distorted/states/RubikStateSolving.java
@@ -193,10 +193,6 @@ public class RubikStateSolving extends RubikStateAbstract implements RubikPreRen
           android.util.Log.e("solution", "error: trying to back move of angle 0");
           }
         }
-      else
-        {
-        android.util.Log.e("solv", "error: no moves to back!");
-        }
       }
     }
 
diff --git a/src/main/res/drawable/menu.png b/src/main/res/drawable/menu.png
new file mode 100644
index 00000000..d2b808b3
Binary files /dev/null and b/src/main/res/drawable/menu.png differ
diff --git a/src/main/res/layout/main.xml b/src/main/res/layout/main.xml
index f35d36d4..57cb2da6 100644
--- a/src/main/res/layout/main.xml
+++ b/src/main/res/layout/main.xml
@@ -20,6 +20,7 @@
         android:layout_weight="1" />
 
     <LinearLayout
+        android:id="@+id/lowerBar"
         android:layout_width="match_parent"
         android:layout_height="0dp"
         android:layout_weight="0.1"
