commit 92843d3bf68698f24816fe42b82da885fdc61224
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Sun Sep 20 14:22:29 2020 +0100

    Rework the bottom pane

diff --git a/src/main/java/org/distorted/states/RubikStateDone.java b/src/main/java/org/distorted/states/RubikStateDone.java
index e394efcb..87f8fad9 100644
--- a/src/main/java/org/distorted/states/RubikStateDone.java
+++ b/src/main/java/org/distorted/states/RubikStateDone.java
@@ -20,7 +20,6 @@
 package org.distorted.states;
 
 import android.content.SharedPreferences;
-import android.util.DisplayMetrics;
 import android.util.TypedValue;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -59,11 +58,14 @@ public class RubikStateDone extends RubikStateAbstract
     layoutTop.addView(label);
 
     // BOT ////////////////////////////
-    LinearLayout layoutLeft = act.findViewById(R.id.mainBarLeft);
-    layoutLeft.removeAllViews();
+    LinearLayout layoutBot = act.findViewById(R.id.lowerBar);
+    layoutBot.removeAllViews();
 
-    LinearLayout layoutRight = act.findViewById(R.id.mainBarRight);
-    layoutRight.removeAllViews();
+    LinearLayout.LayoutParams paramsL = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT,1);
+    LinearLayout layoutLeft = new LinearLayout(act);
+    layoutLeft.setLayoutParams(paramsL);
+    LinearLayout layoutRight = new LinearLayout(act);
+    layoutRight.setLayoutParams(paramsL);
 
     int padding = (int)(width*RubikActivity.PADDING);
     int margin  = (int)(width*RubikActivity.MARGIN);
@@ -90,6 +92,8 @@ public class RubikStateDone extends RubikStateAbstract
       });
 
     layoutRight.addView(back);
+    layoutBot.addView(layoutLeft);
+    layoutBot.addView(layoutRight);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/states/RubikStatePattern.java b/src/main/java/org/distorted/states/RubikStatePattern.java
index 1bb7b964..fc4d89c3 100644
--- a/src/main/java/org/distorted/states/RubikStatePattern.java
+++ b/src/main/java/org/distorted/states/RubikStatePattern.java
@@ -22,7 +22,6 @@ package org.distorted.states;
 import android.content.SharedPreferences;
 import android.os.Bundle;
 import androidx.fragment.app.FragmentManager;
-import android.util.DisplayMetrics;
 import android.util.TypedValue;
 import android.view.Gravity;
 import android.view.LayoutInflater;
@@ -112,7 +111,8 @@ public class RubikStatePattern extends RubikStateAbstract
     layoutTop.addView(mText);
 
     // BOT ////////////////////////////
-    DisplayMetrics metrics = act.getResources().getDisplayMetrics();
+    LinearLayout layoutBot = act.findViewById(R.id.lowerBar);
+    layoutBot.removeAllViews();
 
     setupPrevButton(act,width);
     setupNextButton(act,width);
@@ -120,17 +120,24 @@ public class RubikStatePattern extends RubikStateAbstract
 
     setTrioState(false);
 
-    LinearLayout layoutLeft = act.findViewById(R.id.mainBarLeft);
-    layoutLeft.removeAllViews();
+    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT,1);
+
+    LinearLayout layoutLeft = new LinearLayout(act);
+    layoutLeft.setLayoutParams(params);
+
     layoutLeft.addView(mPrevButton);
     layoutLeft.addView(mMovesText);
     layoutLeft.addView(mNextButton);
 
     setupBackButton(act,width);
 
-    LinearLayout layoutRight = act.findViewById(R.id.mainBarRight);
-    layoutRight.removeAllViews();
+    LinearLayout layoutRight = new LinearLayout(act);
+    layoutRight.setLayoutParams(params);
+
     layoutRight.addView(mBackButton);
+
+    layoutBot.addView(layoutLeft);
+    layoutBot.addView(layoutRight);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/states/RubikStatePlay.java b/src/main/java/org/distorted/states/RubikStatePlay.java
index 38967fda..7cc467e8 100644
--- a/src/main/java/org/distorted/states/RubikStatePlay.java
+++ b/src/main/java/org/distorted/states/RubikStatePlay.java
@@ -27,7 +27,6 @@ import android.util.TypedValue;
 import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.view.View;
-import android.view.Window;
 import android.widget.Button;
 import android.widget.GridLayout;
 import android.widget.ImageButton;
@@ -63,7 +62,6 @@ public class RubikStatePlay extends RubikStateAbstract implements RubikPreRender
   private int mObject = DEF_OBJECT;
   private int mSize   = DEF_SIZE;
   private int mObjectSize, mMenuLayoutWidth, mMenuLayoutHeight, mPlayLayoutWidth;
-  private GridLayout mObjectGrid;
   private int mLevelValue;
   private float mButtonSize, mMenuItemSize, mMenuTextSize;
   private int mColCount, mRowCount;
@@ -125,16 +123,13 @@ public class RubikStatePlay extends RubikStateAbstract implements RubikPreRender
     layoutTop.addView(mPlayButton);
 
     // BOT ////////////////////////////
-    LinearLayout layoutLeft = act.findViewById(R.id.mainBarLeft);
-    layoutLeft.removeAllViews();
+    LinearLayout layoutBot = act.findViewById(R.id.lowerBar);
+    layoutBot.removeAllViews();
 
     setupPrevButton(act,width);
-    layoutLeft.addView(mPrevButton);
+    layoutBot.addView(mPrevButton);
     setupSolveButton(act,width);
-    layoutLeft.addView(mSolveButton);
-
-    LinearLayout layoutRight = act.findViewById(R.id.mainBarRight);
-    layoutRight.removeAllViews();
+    layoutBot.addView(mSolveButton);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -328,15 +323,15 @@ public class RubikStatePlay extends RubikStateAbstract implements RubikPreRender
     {
     LayoutInflater layoutInflater = (LayoutInflater)act.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
     final View layout = layoutInflater.inflate(R.layout.popup_objects, null);
-    mObjectGrid = layout.findViewById(R.id.objectGrid);
+    GridLayout objectGrid = layout.findViewById(R.id.objectGrid);
 
     int[] indices = RubikObjectList.getIndices();
 
     GridLayout.Spec[] rowSpecs = new GridLayout.Spec[mRowCount];
     GridLayout.Spec[] colSpecs = new GridLayout.Spec[mColCount];
 
-    mObjectGrid.setColumnCount(mColCount);
-    mObjectGrid.setRowCount(mRowCount);
+    objectGrid.setColumnCount(mColCount);
+    objectGrid.setRowCount(mRowCount);
 
     int[] nextInColumn = new int[mColCount];
 
@@ -401,7 +396,7 @@ public class RubikStatePlay extends RubikStateAbstract implements RubikPreRender
 
         nextInColumn[col]++;
 
-        mObjectGrid.addView(button, params);
+        objectGrid.addView(button, params);
         }
       }
     }
diff --git a/src/main/java/org/distorted/states/RubikStateReady.java b/src/main/java/org/distorted/states/RubikStateReady.java
index 5a58fbe4..17b713d2 100644
--- a/src/main/java/org/distorted/states/RubikStateReady.java
+++ b/src/main/java/org/distorted/states/RubikStateReady.java
@@ -63,15 +63,18 @@ public class RubikStateReady extends RubikStateAbstract
     layoutTop.addView(label);
 
     // BOT ////////////////////////////
-    LinearLayout layoutLeft = act.findViewById(R.id.mainBarLeft);
-    layoutLeft.removeAllViews();
+    LinearLayout layoutBot = act.findViewById(R.id.lowerBar);
+    layoutBot.removeAllViews();
+
+    LinearLayout.LayoutParams paramsL = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT,1);
+    LinearLayout layoutLeft = new LinearLayout(act);
+    layoutLeft.setLayoutParams(paramsL);
+    LinearLayout layoutRight = new LinearLayout(act);
+    layoutRight.setLayoutParams(paramsL);
 
     setupPrevMoveButtom(act,width);
     layoutLeft.addView(mPrevButton);
 
-    LinearLayout layoutRight = act.findViewById(R.id.mainBarRight);
-    layoutRight.removeAllViews();
-
     int padding = (int)(width*RubikActivity.PADDING);
     int margin  = (int)(width*RubikActivity.MARGIN);
     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT);
@@ -96,6 +99,9 @@ public class RubikStateReady extends RubikStateAbstract
       });
 
     layoutRight.addView(back);
+
+    layoutBot.addView(layoutLeft);
+    layoutBot.addView(layoutRight);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -103,10 +109,16 @@ public class RubikStateReady extends RubikStateAbstract
   private void setupPrevMoveButtom(final RubikActivity act, float width)
     {
     int padding = (int)(width*RubikActivity.PADDING);
+    int margin  = (int)(width*RubikActivity.MARGIN);
     int widthBut= (int)(width/6);
     int icon = RubikActivity.getDrawable(R.drawable.ui_small_cube_back,R.drawable.ui_medium_cube_back, R.drawable.ui_big_cube_back, R.drawable.ui_huge_cube_back);
 
     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(widthBut,LinearLayout.LayoutParams.MATCH_PARENT);
+    params.topMargin    = margin;
+    params.bottomMargin = margin;
+    params.leftMargin   = margin;
+    params.rightMargin  = margin;
+
     mPrevButton = new ImageButton(act);
     mPrevButton.setLayoutParams(params);
     mPrevButton.setPadding(padding,0,padding,0);
diff --git a/src/main/java/org/distorted/states/RubikStateSolution.java b/src/main/java/org/distorted/states/RubikStateSolution.java
index 3192677f..13bb6a2c 100644
--- a/src/main/java/org/distorted/states/RubikStateSolution.java
+++ b/src/main/java/org/distorted/states/RubikStateSolution.java
@@ -77,21 +77,31 @@ public class RubikStateSolution extends RubikStateAbstract implements RubikPreRe
     layoutTop.addView(text);
 
     // BOT ////////////////////////////
+    LinearLayout layoutBot = act.findViewById(R.id.lowerBar);
+    layoutBot.removeAllViews();
+
+    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT,1);
+
     setupPrevButton(act,width);
     setupNextButton(act,width);
     setupTextView(act,width);
 
-    LinearLayout layoutLeft = act.findViewById(R.id.mainBarLeft);
-    layoutLeft.removeAllViews();
+    LinearLayout layoutLeft = new LinearLayout(act);
+    layoutLeft.setLayoutParams(params);
+
     layoutLeft.addView(mPrevButton);
     layoutLeft.addView(mMovesText);
     layoutLeft.addView(mNextButton);
 
     setupBackButton(act,width);
 
-    LinearLayout layoutRight = act.findViewById(R.id.mainBarRight);
-    layoutRight.removeAllViews();
+    LinearLayout layoutRight = new LinearLayout(act);
+    layoutRight.setLayoutParams(params);
+
     layoutRight.addView(mBackButton);
+
+    layoutBot.addView(layoutLeft);
+    layoutBot.addView(layoutRight);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/states/RubikStateSolver.java b/src/main/java/org/distorted/states/RubikStateSolver.java
index 43066f67..8f1e1e19 100644
--- a/src/main/java/org/distorted/states/RubikStateSolver.java
+++ b/src/main/java/org/distorted/states/RubikStateSolver.java
@@ -107,17 +107,14 @@ public class RubikStateSolver extends RubikStateAbstract
     for(ImageButton button: mColorButton) layoutTop.addView(button);
 
     // BOT ////////////////////////////
-    setupSolveButton(act,width);
-
-    LinearLayout layoutLeft = act.findViewById(R.id.mainBarLeft);
-    layoutLeft.removeAllViews();
-    layoutLeft.addView(mSolveButton);
+    LinearLayout layoutBot = act.findViewById(R.id.lowerBar);
+    layoutBot.removeAllViews();
 
+    setupSolveButton(act,width);
     setupBackButton(act,width);
 
-    LinearLayout layoutRight = act.findViewById(R.id.mainBarRight);
-    layoutRight.removeAllViews();
-    layoutRight.addView(mBackButton);
+    layoutBot.addView(mSolveButton);
+    layoutBot.addView(mBackButton);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -191,7 +188,7 @@ public class RubikStateSolver extends RubikStateAbstract
     {
     int padding = (int)(width*RubikActivity.PADDING);
     int margin   = (int)(width*RubikActivity.MARGIN);
-    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT);
+    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT,1);
     params.topMargin    = margin;
     params.bottomMargin = margin;
     params.leftMargin   = margin;
@@ -226,7 +223,7 @@ public class RubikStateSolver extends RubikStateAbstract
     {
     int padding = (int)(width*RubikActivity.PADDING);
     int margin  = (int)(width*RubikActivity.MARGIN);
-    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT);
+    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT,1);
     params.topMargin    = margin;
     params.bottomMargin = margin;
     params.leftMargin   = margin;
diff --git a/src/main/java/org/distorted/states/RubikStateSolving.java b/src/main/java/org/distorted/states/RubikStateSolving.java
index 90943459..d759e064 100644
--- a/src/main/java/org/distorted/states/RubikStateSolving.java
+++ b/src/main/java/org/distorted/states/RubikStateSolving.java
@@ -108,15 +108,18 @@ public class RubikStateSolving extends RubikStateAbstract implements RubikPreRen
     layoutTop.addView(mTime);
 
     // BOT ////////////////////////////
-    LinearLayout layoutLeft = act.findViewById(R.id.mainBarLeft);
-    layoutLeft.removeAllViews();
+    LinearLayout layoutBot = act.findViewById(R.id.lowerBar);
+    layoutBot.removeAllViews();
+
+    LinearLayout.LayoutParams paramsL = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT,1);
+    LinearLayout layoutLeft = new LinearLayout(act);
+    layoutLeft.setLayoutParams(paramsL);
+    LinearLayout layoutRight = new LinearLayout(act);
+    layoutRight.setLayoutParams(paramsL);
 
     setupPrevMoveButtom(act,width);
     layoutLeft.addView(mPrevButton);
 
-    LinearLayout layoutRight = act.findViewById(R.id.mainBarRight);
-    layoutRight.removeAllViews();
-
     int padding = (int)(width*RubikActivity.PADDING);
     int margin  = (int)(width*RubikActivity.MARGIN);
     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT);
@@ -141,6 +144,9 @@ public class RubikStateSolving extends RubikStateAbstract implements RubikPreRen
       });
 
     layoutRight.addView(back);
+
+    layoutBot.addView(layoutLeft);
+    layoutBot.addView(layoutRight);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/res/layout/main.xml b/src/main/res/layout/main.xml
index 348aad54..bac51e4e 100644
--- a/src/main/res/layout/main.xml
+++ b/src/main/res/layout/main.xml
@@ -25,23 +25,6 @@
         android:layout_height="0dp"
         android:layout_weight="0.12"
         android:orientation="horizontal">
-
-        <LinearLayout
-            android:id="@+id/mainBarLeft"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:layout_weight="1"
-            android:orientation="horizontal">
-        </LinearLayout>
-
-        <LinearLayout
-            android:id="@+id/mainBarRight"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:layout_weight="1"
-            android:orientation="horizontal">
-        </LinearLayout>
-
     </LinearLayout>
 
 </LinearLayout>
