commit 4fb1fc0d3c6d616de6cef4f64f7534022b610ce7
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Sun Sep 20 19:13:03 2020 +0100

    Progress with UI

diff --git a/src/main/java/org/distorted/main/RubikActivity.java b/src/main/java/org/distorted/main/RubikActivity.java
index 5fab6f29..64fcf642 100644
--- a/src/main/java/org/distorted/main/RubikActivity.java
+++ b/src/main/java/org/distorted/main/RubikActivity.java
@@ -54,7 +54,7 @@ public class RubikActivity extends AppCompatActivity
     public static final float LARGE_MARGIN        = 0.025f;
     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.05f;
+    public static final float BITMAP_TEXT_SIZE    = 0.06f;
     public static final float MENU_ITEM_SIZE      = 0.12f;
     public static final float PATTERN_GROUP_TEXT  = 0.03f;
     public static final float PATTERN_CHILD_TEXT  = 0.02f;
diff --git a/src/main/java/org/distorted/states/RubikStateDone.java b/src/main/java/org/distorted/states/RubikStateDone.java
index 87f8fad9..3f44ff20 100644
--- a/src/main/java/org/distorted/states/RubikStateDone.java
+++ b/src/main/java/org/distorted/states/RubikStateDone.java
@@ -23,7 +23,7 @@ import android.content.SharedPreferences;
 import android.util.TypedValue;
 import android.view.LayoutInflater;
 import android.view.View;
-import android.widget.Button;
+import android.widget.ImageButton;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
@@ -62,10 +62,12 @@ public class RubikStateDone extends RubikStateAbstract
     layoutBot.removeAllViews();
 
     LinearLayout.LayoutParams paramsL = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT,1);
+    LinearLayout.LayoutParams paramsR = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT,2);
+
     LinearLayout layoutLeft = new LinearLayout(act);
     layoutLeft.setLayoutParams(paramsL);
     LinearLayout layoutRight = new LinearLayout(act);
-    layoutRight.setLayoutParams(paramsL);
+    layoutRight.setLayoutParams(paramsR);
 
     int padding = (int)(width*RubikActivity.PADDING);
     int margin  = (int)(width*RubikActivity.MARGIN);
@@ -76,11 +78,12 @@ public class RubikStateDone extends RubikStateAbstract
     params.leftMargin   = margin;
     params.rightMargin  = margin;
 
-    Button back = new Button(act);
+    final int icon = RubikActivity.getDrawable(R.drawable.ui_small_back,R.drawable.ui_medium_back, R.drawable.ui_big_back, R.drawable.ui_huge_back);
+
+    ImageButton back = new ImageButton(act);
     back.setLayoutParams(params);
     back.setPadding(padding,0,padding,0);
-    back.setTextSize(TypedValue.COMPLEX_UNIT_PX, buttonSize);
-    back.setText(R.string.back);
+    back.setImageResource(icon);
 
     back.setOnClickListener( new View.OnClickListener()
       {
diff --git a/src/main/java/org/distorted/states/RubikStatePattern.java b/src/main/java/org/distorted/states/RubikStatePattern.java
index fc4d89c3..54db249a 100644
--- a/src/main/java/org/distorted/states/RubikStatePattern.java
+++ b/src/main/java/org/distorted/states/RubikStatePattern.java
@@ -26,7 +26,6 @@ import android.util.TypedValue;
 import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.view.View;
-import android.widget.Button;
 import android.widget.ImageButton;
 import android.widget.LinearLayout;
 import android.widget.TextView;
@@ -44,8 +43,7 @@ import org.distorted.patterns.RubikPatternList;
 public class RubikStatePattern extends RubikStateAbstract
   {
   private TextView mText;
-  private Button mBackButton;
-  private ImageButton mPrevButton, mNextButton;
+  private ImageButton mPrevButton, mNextButton, mBackButton;
   private TextView mMovesText;
   private int mNumMoves;
   private int mPatternOrdinal, mCategory, mPattern;
@@ -124,6 +122,8 @@ public class RubikStatePattern extends RubikStateAbstract
 
     LinearLayout layoutLeft = new LinearLayout(act);
     layoutLeft.setLayoutParams(params);
+    LinearLayout layoutRight = new LinearLayout(act);
+    layoutRight.setLayoutParams(params);
 
     layoutLeft.addView(mPrevButton);
     layoutLeft.addView(mMovesText);
@@ -131,9 +131,6 @@ public class RubikStatePattern extends RubikStateAbstract
 
     setupBackButton(act,width);
 
-    LinearLayout layoutRight = new LinearLayout(act);
-    layoutRight.setLayoutParams(params);
-
     layoutRight.addView(mBackButton);
 
     layoutBot.addView(layoutLeft);
@@ -175,11 +172,12 @@ public class RubikStatePattern extends RubikStateAbstract
     params.leftMargin   = margin;
     params.rightMargin  = margin;
 
-    mBackButton = new Button(act);
+    final int icon = RubikActivity.getDrawable(R.drawable.ui_small_back,R.drawable.ui_medium_back, R.drawable.ui_big_back, R.drawable.ui_huge_back);
+
+    mBackButton = new ImageButton(act);
     mBackButton.setLayoutParams(params);
     mBackButton.setPadding(padding,0,padding,0);
-    mBackButton.setTextSize(TypedValue.COMPLEX_UNIT_PX, mButtonSize);
-    mBackButton.setText(R.string.back);
+    mBackButton.setImageResource(icon);
 
     mBackButton.setOnClickListener( new View.OnClickListener()
       {
diff --git a/src/main/java/org/distorted/states/RubikStatePlay.java b/src/main/java/org/distorted/states/RubikStatePlay.java
index 7cc467e8..ecaeabca 100644
--- a/src/main/java/org/distorted/states/RubikStatePlay.java
+++ b/src/main/java/org/distorted/states/RubikStatePlay.java
@@ -126,10 +126,23 @@ public class RubikStatePlay extends RubikStateAbstract implements RubikPreRender
     LinearLayout layoutBot = act.findViewById(R.id.lowerBar);
     layoutBot.removeAllViews();
 
+    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT,1);
+
+    LinearLayout layoutLeft = new LinearLayout(act);
+    layoutLeft.setLayoutParams(params);
+    LinearLayout layoutMid = new LinearLayout(act);
+    layoutMid.setLayoutParams(params);
+    LinearLayout layoutRight = new LinearLayout(act);
+    layoutRight.setLayoutParams(params);
+
     setupPrevButton(act,width);
-    layoutBot.addView(mPrevButton);
+    layoutLeft.addView(mPrevButton);
     setupSolveButton(act,width);
-    layoutBot.addView(mSolveButton);
+    layoutRight.addView(mSolveButton);
+
+    layoutBot.addView(layoutLeft);
+    layoutBot.addView(layoutMid);
+    layoutBot.addView(layoutRight);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -261,10 +274,9 @@ public class RubikStatePlay extends RubikStateAbstract implements RubikPreRender
     {
     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_solve,R.drawable.ui_medium_cube_solve, R.drawable.ui_big_cube_solve, R.drawable.ui_huge_cube_solve);
 
-    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(widthBut, LinearLayout.LayoutParams.MATCH_PARENT);
+    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
     params.topMargin    = margin;
     params.bottomMargin = margin;
     params.leftMargin   = margin;
@@ -292,10 +304,9 @@ public class RubikStatePlay extends RubikStateAbstract implements RubikPreRender
     {
     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);
+    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
     params.topMargin    = margin;
     params.bottomMargin = margin;
     params.leftMargin   = margin;
diff --git a/src/main/java/org/distorted/states/RubikStateReady.java b/src/main/java/org/distorted/states/RubikStateReady.java
index 17b713d2..d586a22c 100644
--- a/src/main/java/org/distorted/states/RubikStateReady.java
+++ b/src/main/java/org/distorted/states/RubikStateReady.java
@@ -67,8 +67,11 @@ public class RubikStateReady extends RubikStateAbstract
     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 layoutMid = new LinearLayout(act);
+    layoutMid.setLayoutParams(paramsL);
     LinearLayout layoutRight = new LinearLayout(act);
     layoutRight.setLayoutParams(paramsL);
 
@@ -83,11 +86,12 @@ public class RubikStateReady extends RubikStateAbstract
     params.leftMargin   = margin;
     params.rightMargin  = margin;
 
-    Button back = new Button(act);
+    final int icon = RubikActivity.getDrawable(R.drawable.ui_small_back,R.drawable.ui_medium_back, R.drawable.ui_big_back, R.drawable.ui_huge_back);
+
+    ImageButton back = new ImageButton(act);
     back.setLayoutParams(params);
     back.setPadding(padding,0,padding,0);
-    back.setTextSize(TypedValue.COMPLEX_UNIT_PX, buttonSize);
-    back.setText(R.string.back);
+    back.setImageResource(icon);
 
     back.setOnClickListener( new View.OnClickListener()
       {
@@ -101,6 +105,7 @@ public class RubikStateReady extends RubikStateAbstract
     layoutRight.addView(back);
 
     layoutBot.addView(layoutLeft);
+    layoutBot.addView(layoutMid);
     layoutBot.addView(layoutRight);
     }
 
@@ -110,10 +115,9 @@ public class RubikStateReady extends RubikStateAbstract
     {
     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);
+    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT);
     params.topMargin    = margin;
     params.bottomMargin = margin;
     params.leftMargin   = margin;
diff --git a/src/main/java/org/distorted/states/RubikStateSolution.java b/src/main/java/org/distorted/states/RubikStateSolution.java
index 13bb6a2c..2c1e6605 100644
--- a/src/main/java/org/distorted/states/RubikStateSolution.java
+++ b/src/main/java/org/distorted/states/RubikStateSolution.java
@@ -41,8 +41,7 @@ public class RubikStateSolution extends RubikStateAbstract implements RubikPreRe
   {
   private static final int DURATION_MILLIS = 750;
 
-  private Button mBackButton;
-  private ImageButton mPrevButton, mNextButton;
+  private ImageButton mPrevButton, mNextButton, mBackButton;
   private TextView mMovesText;
   private int[][] mMoves;
   private int mCurrMove, mNumMoves;
@@ -199,11 +198,12 @@ public class RubikStateSolution extends RubikStateAbstract implements RubikPreRe
     params.leftMargin   = margin;
     params.rightMargin  = margin;
 
-    mBackButton = new Button(act);
+    final int icon = RubikActivity.getDrawable(R.drawable.ui_small_back,R.drawable.ui_medium_back, R.drawable.ui_big_back, R.drawable.ui_huge_back);
+
+    mBackButton = new ImageButton(act);
     mBackButton.setLayoutParams(params);
     mBackButton.setPadding(padding,0,padding,0);
-    mBackButton.setTextSize(TypedValue.COMPLEX_UNIT_PX, mButtonSize);
-    mBackButton.setText(R.string.back);
+    mBackButton.setImageResource(icon);
 
     mBackButton.setOnClickListener( new View.OnClickListener()
       {
diff --git a/src/main/java/org/distorted/states/RubikStateSolver.java b/src/main/java/org/distorted/states/RubikStateSolver.java
index 8f1e1e19..4c781241 100644
--- a/src/main/java/org/distorted/states/RubikStateSolver.java
+++ b/src/main/java/org/distorted/states/RubikStateSolver.java
@@ -50,7 +50,8 @@ public class RubikStateSolver extends RubikStateAbstract
   {
   private static Bitmap[] mBitmap;
   private ImageButton[] mColorButton;
-  private Button mBackButton, mSolveButton;
+  private ImageButton mBackButton;
+  private Button mSolveButton;
   private boolean mSolving;
   private int mCurrentColor;
   private int[] mFaceColors;
@@ -229,11 +230,12 @@ public class RubikStateSolver extends RubikStateAbstract
     params.leftMargin   = margin;
     params.rightMargin  = margin;
 
-    mBackButton = new Button(act);
+    final int icon = RubikActivity.getDrawable(R.drawable.ui_small_back,R.drawable.ui_medium_back, R.drawable.ui_big_back, R.drawable.ui_huge_back);
+
+    mBackButton = new ImageButton(act);
     mBackButton.setLayoutParams(params);
     mBackButton.setPadding(padding,0,padding,0);
-    mBackButton.setTextSize(TypedValue.COMPLEX_UNIT_PX, mButtonSize);
-    mBackButton.setText(R.string.back);
+    mBackButton.setImageResource(icon);
 
     mBackButton.setOnClickListener( new View.OnClickListener()
       {
diff --git a/src/main/java/org/distorted/states/RubikStateSolving.java b/src/main/java/org/distorted/states/RubikStateSolving.java
index d759e064..c67293cb 100644
--- a/src/main/java/org/distorted/states/RubikStateSolving.java
+++ b/src/main/java/org/distorted/states/RubikStateSolving.java
@@ -112,8 +112,11 @@ public class RubikStateSolving extends RubikStateAbstract implements RubikPreRen
     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 layoutMid = new LinearLayout(act);
+    layoutMid.setLayoutParams(paramsL);
     LinearLayout layoutRight = new LinearLayout(act);
     layoutRight.setLayoutParams(paramsL);
 
@@ -128,11 +131,12 @@ public class RubikStateSolving extends RubikStateAbstract implements RubikPreRen
     params.leftMargin   = margin;
     params.rightMargin  = margin;
 
-    Button back = new Button(act);
+    final int icon = RubikActivity.getDrawable(R.drawable.ui_small_back,R.drawable.ui_medium_back, R.drawable.ui_big_back, R.drawable.ui_huge_back);
+
+    ImageButton back = new ImageButton(act);
     back.setLayoutParams(params);
     back.setPadding(padding,0,padding,0);
-    back.setTextSize(TypedValue.COMPLEX_UNIT_PX, buttonSize);
-    back.setText(R.string.back);
+    back.setImageResource(icon);
 
     back.setOnClickListener( new View.OnClickListener()
       {
@@ -146,6 +150,7 @@ public class RubikStateSolving extends RubikStateAbstract implements RubikPreRen
     layoutRight.addView(back);
 
     layoutBot.addView(layoutLeft);
+    layoutBot.addView(layoutMid);
     layoutBot.addView(layoutRight);
     }
 
@@ -155,10 +160,9 @@ public class RubikStateSolving extends RubikStateAbstract implements RubikPreRen
     {
     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);
+    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT);
     params.topMargin    = margin;
     params.bottomMargin = margin;
     params.leftMargin   = margin;
diff --git a/src/main/res/drawable-nodpi/ui_big_menu.png b/src/main/res/drawable-nodpi/ui_big_menu.png
index 502b2089..85e5f276 100644
Binary files a/src/main/res/drawable-nodpi/ui_big_menu.png and b/src/main/res/drawable-nodpi/ui_big_menu.png differ
diff --git a/src/main/res/drawable-nodpi/ui_huge_menu.png b/src/main/res/drawable-nodpi/ui_huge_menu.png
index 0d44f02f..a68becb6 100644
Binary files a/src/main/res/drawable-nodpi/ui_huge_menu.png and b/src/main/res/drawable-nodpi/ui_huge_menu.png differ
diff --git a/src/main/res/drawable-nodpi/ui_medium_menu.png b/src/main/res/drawable-nodpi/ui_medium_menu.png
index 882be73c..23a137b4 100644
Binary files a/src/main/res/drawable-nodpi/ui_medium_menu.png and b/src/main/res/drawable-nodpi/ui_medium_menu.png differ
diff --git a/src/main/res/drawable-nodpi/ui_small_menu.png b/src/main/res/drawable-nodpi/ui_small_menu.png
index d2b808b3..8b444adc 100644
Binary files a/src/main/res/drawable-nodpi/ui_small_menu.png and b/src/main/res/drawable-nodpi/ui_small_menu.png differ
