commit 756f152c09d157665f4ba05f8da282c60d712c77
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Tue Jul 5 11:43:47 2022 +0200

    Come back to solve/scramble in the main screen.

diff --git a/src/main/java/org/distorted/screens/RubikScreenFreePlay.java b/src/main/java/org/distorted/screens/RubikScreenFreePlay.java
index 0422f3b7..e059d5d4 100644
--- a/src/main/java/org/distorted/screens/RubikScreenFreePlay.java
+++ b/src/main/java/org/distorted/screens/RubikScreenFreePlay.java
@@ -107,7 +107,7 @@ public class RubikScreenFreePlay extends RubikScreenBase
       @Override
       public void onClick(View v)
         {
-        ScreenList.goBack(act);
+        if(act.getControl().isUINotBlocked()) ScreenList.goBack(act);
         }
       });
     }
@@ -125,13 +125,16 @@ public class RubikScreenFreePlay extends RubikScreenBase
       @Override
       public void onClick(View v)
         {
-        Bundle bundle = new Bundle();
-        bundle.putInt("scraPos", mScrambleDepth );
-        bundle.putInt("animPos", mAnimationMode );
+        if(act.getControl().isUINotBlocked())
+          {
+          Bundle bundle = new Bundle();
+          bundle.putInt("scraPos", mScrambleDepth );
+          bundle.putInt("animPos", mAnimationMode );
 
-        RubikDialogFreePlaySettings setDiag = new RubikDialogFreePlaySettings();
-        setDiag.setArguments(bundle);
-        setDiag.show(act.getSupportFragmentManager(), null);
+          RubikDialogFreePlaySettings setDiag = new RubikDialogFreePlaySettings();
+          setDiag.setArguments(bundle);
+          setDiag.show(act.getSupportFragmentManager(), null);
+          }
         }
       });
     }
diff --git a/src/main/java/org/distorted/screens/RubikScreenPlay.java b/src/main/java/org/distorted/screens/RubikScreenPlay.java
index f5ad95f7..48739031 100644
--- a/src/main/java/org/distorted/screens/RubikScreenPlay.java
+++ b/src/main/java/org/distorted/screens/RubikScreenPlay.java
@@ -77,7 +77,7 @@ public class RubikScreenPlay extends RubikScreenBase implements RubikNetwork.Upd
   private static final float BIG_BUTTON = 1.5f;
   private static final int[] mLocation = new int[2];
 
-  private TransparentImageButton mObjButton, mMenuButton, mExitButton;
+  private TransparentImageButton mObjButton, mMenuButton, mSolveButton, mScrambleButton;
   private TransparentButton mPlayButton;
   private PopupWindow mObjectPopup, mMenuPopup, mPlayPopup;
   private LinearLayout mPlayLayout;
@@ -129,8 +129,9 @@ public class RubikScreenPlay extends RubikScreenBase implements RubikNetwork.Upd
     setupPlayButton(act,mScreenWidth);
     layoutTop.addView(mPlayButton);
 
-    setupExitButton(act);
-    createBottomPane(act,mExitButton,null);
+    setupSolveButton(act);
+    setupScrambleButton(act);
+    createBottomPane(act,mSolveButton,mScrambleButton);
     }
 
 //////////////////////////////////////////////////////////////////////////////////////////////////
@@ -468,18 +469,41 @@ public class RubikScreenPlay extends RubikScreenBase implements RubikNetwork.Upd
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  void setupExitButton(final RubikActivity act)
+  void setupSolveButton(final RubikActivity act)
     {
-    int icon = RubikActivity.getDrawable(R.drawable.ui_small_exit,R.drawable.ui_medium_exit, R.drawable.ui_big_exit, R.drawable.ui_huge_exit);
+    int icon = RubikActivity.getDrawable(R.drawable.ui_small_cube_solve_new,R.drawable.ui_medium_cube_solve_new, R.drawable.ui_big_cube_solve_new, R.drawable.ui_huge_cube_solve_new);
     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT,1.0f);
-    mExitButton = new TransparentImageButton(act, icon, TransparentImageButton.GRAVITY_MIDDLE,params);
+    mSolveButton = new TransparentImageButton(act, icon, TransparentImageButton.GRAVITY_END,params);
 
-    mExitButton.setOnClickListener( new View.OnClickListener()
+    mSolveButton.setOnClickListener( new View.OnClickListener()
       {
       @Override
       public void onClick(View v)
         {
-        act.finish();
+        act.getControl().solveObject();
+        mMovesController.clearMoves(act);
+        }
+      });
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  private void setupScrambleButton(final RubikActivity act)
+    {
+    int icon = RubikActivity.getDrawable(R.drawable.ui_small_cube_scramble_new,R.drawable.ui_medium_cube_scramble_new, R.drawable.ui_big_cube_scramble_new, R.drawable.ui_huge_cube_scramble_new);
+    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT,1.0f);
+    mScrambleButton = new TransparentImageButton(act, icon, TransparentImageButton.GRAVITY_START, params);
+
+    mScrambleButton.setOnClickListener( new View.OnClickListener()
+      {
+      @Override
+      public void onClick(View v)
+        {
+        int currObject = RubikObjectList.getCurrObject();
+        RubikObject object = RubikObjectList.getObject(currObject);
+        int numScrambles = object==null ? 0 : object.getNumScramble();
+        mShouldReactToEndOfScrambling = false;
+        act.getControl().scrambleObject(numScrambles);
         }
       });
     }
