commit 9523ae281ea0494f3252396d3bf690868aebd997
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Tue Oct 5 14:12:37 2021 +0200

    Hide most of the TwistyActivity methods inside objectlib.

diff --git a/src/main/java/org/distorted/helpers/LockController.java b/src/main/java/org/distorted/helpers/LockController.java
index ab8dd420..0a05db2d 100644
--- a/src/main/java/org/distorted/helpers/LockController.java
+++ b/src/main/java/org/distorted/helpers/LockController.java
@@ -22,6 +22,7 @@ package org.distorted.helpers;
 import java.util.Timer;
 import java.util.TimerTask;
 
+import android.app.Activity;
 import android.view.View;
 import android.widget.ImageButton;
 import android.widget.LinearLayout;
@@ -29,6 +30,7 @@ import android.widget.LinearLayout;
 import org.distorted.main.R;
 import org.distorted.main.RubikActivity;
 import org.distorted.objectlib.helpers.TwistyActivity;
+import org.distorted.objectlib.main.ObjectControl;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -52,17 +54,18 @@ public class LockController
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public void toggleLock(TwistyActivity act)
+  public void toggleLock(ObjectControl control)
     {
-    act.toggleLock();
-    mLockButton.setImageResource(getLockIcon(act,false));
+    control.toggleLock();
+    boolean locked = control.retLocked();
+    mLockButton.setImageResource(getLockIcon(locked,false));
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  private int getLockIcon(TwistyActivity act, boolean red)
+  private int getLockIcon(boolean locked, boolean red)
     {
-    if( act.retLocked() )
+    if( locked )
       {
       if( red )
         {
@@ -90,7 +93,7 @@ public class LockController
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  private void changeIcon(TwistyActivity act, final boolean red)
+  private void changeIcon(Activity act, boolean locked, boolean red)
     {
     act.runOnUiThread(new Runnable()
       {
@@ -98,20 +101,21 @@ public class LockController
       public void run()
         {
         if( mLockButton!=null )
-          mLockButton.setImageResource(getLockIcon(act,red));
+          mLockButton.setImageResource(getLockIcon(locked,red));
         }
       });
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public void reddenLock(final TwistyActivity act)
+  public void reddenLock(final Activity act, ObjectControl control)
     {
     mLockTime = System.currentTimeMillis();
 
     if( !mTimerRunning )
       {
-      changeIcon(act,true);
+      boolean locked = control.retLocked();
+      changeIcon(act,locked,true);
 
       mTimerRunning = true;
       mTimer = new Timer();
@@ -128,7 +132,8 @@ public class LockController
               {
               if( System.currentTimeMillis()-mLockTime > LOCK_TIME )
                 {
-                changeIcon(act,false);
+                boolean locked = control.retLocked();
+                changeIcon(act,locked,false);
 
                 if( mTimer!=null )
                   {
@@ -147,9 +152,10 @@ public class LockController
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public void setupButton(final TwistyActivity act, final float width)
+  public void setupButton(final TwistyActivity act, ObjectControl control, final float width)
     {
-    final int icon = getLockIcon(act,false);
+    boolean locked = control.retLocked();
+    final int icon = getLockIcon(locked,false);
     mLockButton = new TransparentImageButton(act, icon, width,LinearLayout.LayoutParams.MATCH_PARENT);
 
     mLockButton.setOnClickListener( new View.OnClickListener()
@@ -157,14 +163,14 @@ public class LockController
       @Override
       public void onClick(View v)
         {
-        toggleLock(act);
+        toggleLock(control);
         }
       });
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public void setState(final TwistyActivity act)
+  public void setState(final Activity act, boolean locked)
     {
     act.runOnUiThread(new Runnable()
       {
@@ -172,7 +178,7 @@ public class LockController
       public void run()
         {
         if( mLockButton!=null )
-          mLockButton.setImageResource(getLockIcon(act,false));
+          mLockButton.setImageResource(getLockIcon(locked,false));
         }
       });
     }
diff --git a/src/main/java/org/distorted/main/RubikActivity.java b/src/main/java/org/distorted/main/RubikActivity.java
index a5cbc381..00dbdde8 100644
--- a/src/main/java/org/distorted/main/RubikActivity.java
+++ b/src/main/java/org/distorted/main/RubikActivity.java
@@ -116,7 +116,6 @@ public class RubikActivity extends TwistyActivity
       mScreenHeight=displaymetrics.heightPixels;
 
       mIsChinese = localeIsChinese();
-      unlock();
 
       hideNavigationBar();
       cutoutHack();
@@ -446,20 +445,6 @@ public class RubikActivity extends TwistyActivity
       control.changeObject(newObject);
       }
 
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  public boolean isLocked()
-    {
-    ScreenList state = ScreenList.getCurrentScreen();
-
-    if( state== ScreenList.PLAY || state== ScreenList.READ || state== ScreenList.SOLV )
-      {
-      return retLocked();
-      }
-
-    return false;
-    }
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
     public void setupObject(ObjectType object, int[][] moves)
@@ -548,8 +533,6 @@ public class RubikActivity extends TwistyActivity
 
     public void blockEverything(int place)
       {
-      setLock();
-
       RubikSurfaceView view = findViewById(R.id.rubikSurfaceView);
       ObjectControl control = view.getObjectControl();
       control.blockEverything(place);
@@ -562,8 +545,6 @@ public class RubikActivity extends TwistyActivity
 
     public void unblockEverything()
       {
-      unsetLock();
-
       RubikSurfaceView view = findViewById(R.id.rubikSurfaceView);
       ObjectControl control = view.getObjectControl();
       control.unblockEverything();
diff --git a/src/main/java/org/distorted/screens/RubikScreenBase.java b/src/main/java/org/distorted/screens/RubikScreenBase.java
index 234875c1..f06c8d91 100644
--- a/src/main/java/org/distorted/screens/RubikScreenBase.java
+++ b/src/main/java/org/distorted/screens/RubikScreenBase.java
@@ -22,11 +22,12 @@ package org.distorted.screens;
 import android.widget.ImageButton;
 import android.widget.LinearLayout;
 
+import org.distorted.objectlib.helpers.TwistyActivity;
+import org.distorted.objectlib.main.ObjectControl;
+
 import org.distorted.helpers.LockController;
 import org.distorted.helpers.MovesController;
-import org.distorted.objectlib.helpers.TwistyActivity;
 import org.distorted.main.R;
-import org.distorted.main.RubikActivity;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -37,7 +38,7 @@ abstract class RubikScreenBase extends RubikScreenAbstract
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  void createBottomPane(final RubikActivity act, float width, ImageButton button)
+  void createBottomPane(final TwistyActivity act, float width, ImageButton button)
     {
     mMovesController.clearMoves(act);
 
@@ -55,7 +56,7 @@ abstract class RubikScreenBase extends RubikScreenAbstract
 
     mMovesController.setupButton(act,width);
     layoutLeft.addView(mMovesController.getButton());
-    mLockController.setupButton(act,width);
+    mLockController.setupButton(act,act.getControl(),width);
     layoutMid.addView(mLockController.getButton());
     layoutRight.addView(button);
 
@@ -66,9 +67,10 @@ abstract class RubikScreenBase extends RubikScreenAbstract
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public void setLockState(final RubikActivity act)
+  public void setLockState(final TwistyActivity act)
     {
-    mLockController.setState(act);
+    boolean locked = act.getControl().retLocked();
+    mLockController.setState(act,locked);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -91,6 +93,7 @@ abstract class RubikScreenBase extends RubikScreenAbstract
 
   public void reddenLock(final TwistyActivity act)
     {
-    mLockController.reddenLock(act);
+    ObjectControl control = act.getControl();
+    mLockController.reddenLock(act,control);
     }
   }
diff --git a/src/main/java/org/distorted/screens/RubikScreenSolution.java b/src/main/java/org/distorted/screens/RubikScreenSolution.java
index 7f5b1ef0..9a7be7c1 100644
--- a/src/main/java/org/distorted/screens/RubikScreenSolution.java
+++ b/src/main/java/org/distorted/screens/RubikScreenSolution.java
@@ -29,7 +29,6 @@ import android.widget.LinearLayout;
 import android.widget.TextView;
 
 import org.distorted.objectlib.main.ObjectControl;
-import org.distorted.objectlib.main.TwistyObject;
 import org.distorted.objectlib.helpers.MovesFinished;
 
 import org.distorted.helpers.TransparentImageButton;
diff --git a/src/main/java/org/distorted/screens/RubikScreenSolver.java b/src/main/java/org/distorted/screens/RubikScreenSolver.java
index 0fd2808b..fc453c31 100644
--- a/src/main/java/org/distorted/screens/RubikScreenSolver.java
+++ b/src/main/java/org/distorted/screens/RubikScreenSolver.java
@@ -62,13 +62,17 @@ public class RubikScreenSolver extends RubikScreenAbstract
 
   void leaveScreen(RubikActivity act)
     {
-
+    ObjectControl control = act.getControl();
+    control.unsetLock();
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   void enterScreen(final RubikActivity act)
     {
+    ObjectControl control = act.getControl();
+    control.setLock(false);
+
     float width = act.getScreenWidthInPixels();
     float heigh = act.getScreenHeightInPixels();
 
diff --git a/src/main/java/org/distorted/tutorials/TutorialActivity.java b/src/main/java/org/distorted/tutorials/TutorialActivity.java
index 7d94df8a..cfd7bcb4 100644
--- a/src/main/java/org/distorted/tutorials/TutorialActivity.java
+++ b/src/main/java/org/distorted/tutorials/TutorialActivity.java
@@ -84,7 +84,6 @@ public class TutorialActivity extends TwistyActivity
         mObjectOrdinal = b.getInt("obj");
         }
 
-      unlock();
       mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);
 
       DisplayMetrics displaymetrics = new DisplayMetrics();
@@ -277,13 +276,6 @@ public class TutorialActivity extends TwistyActivity
       return renderer.getScreen();
       }
 
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-    public boolean isLocked()
-    {
-    return retLocked();
-    }
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
     public static int getDrawableSize()
diff --git a/src/main/java/org/distorted/tutorials/TutorialScreen.java b/src/main/java/org/distorted/tutorials/TutorialScreen.java
index ce250361..95986e2d 100644
--- a/src/main/java/org/distorted/tutorials/TutorialScreen.java
+++ b/src/main/java/org/distorted/tutorials/TutorialScreen.java
@@ -108,7 +108,7 @@ public class TutorialScreen
     layout.removeAllViews();
 
     mMovesController.setupButton(act,width);
-    mLockController.setupButton(act,width);
+    mLockController.setupButton(act,act.getControl(),width);
     setupSolveButton(act,width);
     setupScrambleButton(act,width);
     setupBackButton(act,width);
@@ -140,6 +140,6 @@ public class TutorialScreen
 
   public void reddenLock(final TwistyActivity act)
     {
-    mLockController.reddenLock(act);
+    mLockController.reddenLock(act,act.getControl());
     }
 }
