commit 47f420429a337453aa3a85dd44144ee5889dc790
Author: leszek <leszek@koltunski.pl>
Date:   Sat Mar 1 00:25:44 2025 +0100

    Reconfigure for Java 11
    Beginnings of real support for moving objects around in ListObjects

diff --git a/build.gradle b/build.gradle
index a24b1bb1..9ed8da2d 100644
--- a/build.gradle
+++ b/build.gradle
@@ -35,6 +35,10 @@ android {
         buildConfig = true
     }
     namespace 'org.distorted.main'
+    compileOptions {
+        sourceCompatibility JavaVersion.VERSION_11
+        targetCompatibility JavaVersion.VERSION_11
+    }
 }
 
 buildscript {
diff --git a/src/main/java/org/distorted/dialogs/DialogSolvers.java b/src/main/java/org/distorted/dialogs/DialogSolvers.java
index 9b406d77..24d4f8be 100644
--- a/src/main/java/org/distorted/dialogs/DialogSolvers.java
+++ b/src/main/java/org/distorted/dialogs/DialogSolvers.java
@@ -86,7 +86,8 @@ public class DialogSolvers extends DialogAbstract
 
     SolverActivity sact = (SolverActivity) getContext();
     int objectOrdinal = ListObjects.getObjectOrdinal(mArgument);
-    int[] solverOrdinals = ImplementedVerifierList.getSolverOrdinals(objectOrdinal);
+    ListObjects list = ListObjects.getObject(objectOrdinal);
+    int[] solverOrdinals = ImplementedVerifierList.getSolverOrdinals(list);
     int len = solverOrdinals==null ? 0 : solverOrdinals.length;
 
     for(int o=0; o<len; o++ )
diff --git a/src/main/java/org/distorted/objects/RubikObject.java b/src/main/java/org/distorted/objects/RubikObject.java
index 04a3ee2f..a23b746f 100644
--- a/src/main/java/org/distorted/objects/RubikObject.java
+++ b/src/main/java/org/distorted/objects/RubikObject.java
@@ -81,7 +81,8 @@ public class RubikObject
     int patternOrdinal  = RubikPatternList.getOrdinal(mObjectIndex);
     mPatterns = RubikPatternList.getPatterns(patternOrdinal);
 
-    int[] solverOrdinals= ImplementedVerifierList.getSolverOrdinals(mObjectOrdinal);
+    ListObjects list = ListObjects.getObject(mObjectOrdinal);
+    int[] solverOrdinals= ImplementedVerifierList.getSolverOrdinals(list);
     mNumSolvers = solverOrdinals==null ? 0 : solverOrdinals.length;
     mExtrasOrdinal = -1;
 
diff --git a/src/main/java/org/distorted/solvers/ScreenSetupPosition.java b/src/main/java/org/distorted/solvers/ScreenSetupPosition.java
index 8f54ca88..0ec62231 100644
--- a/src/main/java/org/distorted/solvers/ScreenSetupPosition.java
+++ b/src/main/java/org/distorted/solvers/ScreenSetupPosition.java
@@ -65,7 +65,7 @@ public class ScreenSetupPosition extends ScreenAbstract implements ResultScreen
   private int mNumBitmapRows;
   private float mBitmapSize;
   private WeakReference<SolverActivity> mWeakAct;
-  private int mObjectOrdinal;
+  private ListObjects mObject;
   private String[] mPhaseNames;
   private Timer mTimer;
   private SolverAbstract mSolver;
@@ -92,9 +92,9 @@ public class ScreenSetupPosition extends ScreenAbstract implements ResultScreen
     mSolving = false;
     mPhaseNames = null;
 
-    mObjectOrdinal = act.getObjectOrdinal();
+    mObject = act.getObjectList();
     control.solveOnly();
-    generateFaceColors(mObjectOrdinal);
+    generateFaceColors(mObject);
 
     mNumBitmapRows = mNumColors>8 ? 2 : 1;
     mBitmapSize = computeBitmapSize(width,heigh);
@@ -181,54 +181,54 @@ public class ScreenSetupPosition extends ScreenAbstract implements ResultScreen
 // This doesn't quite work in many cases, but in case of the solvers that will pop up in foreseeable
 // future it should be ok.
 
-  public void generateFaceColors(int object)
+  public void generateFaceColors(ListObjects object)
     {
     mColorMode = MODE_NORMAL;
 
-    if( object==PYRA_3.ordinal() ||
-        object==PYRA_4.ordinal() ||
-        object==PYRA_5.ordinal() ||
-        object==PDUO_2.ordinal() ||
-        object==JING_2.ordinal() ||
-        object==MORP_2.ordinal() ||
-        object==MORP_3.ordinal() ||
-        object==MORP_4.ordinal()  )
+    if( object==PYRA_3 ||
+        object==PYRA_4 ||
+        object==PYRA_5 ||
+        object==PDUO_2 ||
+        object==JING_2 ||
+        object==MORP_2 ||
+        object==MORP_3 ||
+        object==MORP_4  )
       {
       mNumColors  = ShapeTetrahedron.NUM_FACES;
       mFaceColors = ShapeTetrahedron.FACE_COLORS;
       }
-    else if( object==DIAM_2.ordinal() ||
-             object==DIAM_3.ordinal() ||
-             object==DIAM_4.ordinal() ||
-             object==TRAJ_3.ordinal() ||
-             object==TRAJ_4.ordinal() ||
-             object==PDIA_3.ordinal()  )
+    else if( object==DIAM_2 ||
+             object==DIAM_3 ||
+             object==DIAM_4 ||
+             object==TRAJ_3 ||
+             object==TRAJ_4 ||
+             object==PDIA_3  )
       {
       mNumColors  = ShapeOctahedron.NUM_FACES;
       mFaceColors = ShapeOctahedron.FACE_COLORS;
       }
-    else if( object==CRYS_3.ordinal() ||
-             object==STAR_3.ordinal() ||
-             object==PENT_2.ordinal() ||
-             object==KILO_3.ordinal() ||
-             object==KILO_5.ordinal() ||
-             object==MEGA_3.ordinal() ||
-             object==MEGA_5.ordinal()  )
+    else if( object==CRYS_3 ||
+             object==STAR_3 ||
+             object==PENT_2 ||
+             object==KILO_3 ||
+             object==KILO_5 ||
+             object==MEGA_3 ||
+             object==MEGA_5  )
       {
       mNumColors  = ShapeDodecahedron.NUM_FACES;
       mFaceColors = ShapeDodecahedron.FACE_COLORS;
       }
-    else if( object==BALL_4.ordinal() )
+    else if( object==BALL_4 )
       {
       mNumColors  = ShapeDiamond.NUM_FACES;
       mFaceColors = ShapeDiamond.FACE_COLORS;
       }
-    else if( object==ICOS_2.ordinal() )
+    else if( object==ICOS_2 )
       {
       mNumColors  = ShapeIcosahedron.NUM_FACES;
       mFaceColors = ShapeIcosahedron.FACE_COLORS;
       }
-    else if( object==DIN4_3.ordinal() )
+    else if( object==DIN4_3 )
       {
       mNumColors  = 4;
       mFaceColors = new int[] { ShapeColors.COLOR_YELLOW, ShapeColors.COLOR_RED, ShapeColors.COLOR_BLUE, ShapeColors.COLOR_WHITE};
@@ -292,7 +292,7 @@ public class ScreenSetupPosition extends ScreenAbstract implements ResultScreen
 
   private void pressSolve(SolverActivity act)
     {
-    int[] solverOrdinals = ImplementedVerifierList.getSolverOrdinals(mObjectOrdinal);
+    int[] solverOrdinals = ImplementedVerifierList.getSolverOrdinals(mObject);
 
     if( solverOrdinals!=null  )
       {
@@ -314,8 +314,7 @@ public class ScreenSetupPosition extends ScreenAbstract implements ResultScreen
             }
           else // more than one solver - pop up a choosing dialog
             {
-            ListObjects objList = ListObjects.getObject(mObjectOrdinal);
-            String upperName = objList.name();
+            String upperName = mObject.name();
             Bundle bundle = new Bundle();
             bundle.putString("argument", upperName );
             DialogSolvers dialog = new DialogSolvers();
@@ -327,7 +326,7 @@ public class ScreenSetupPosition extends ScreenAbstract implements ResultScreen
         }
       else displayErrorDialog(act.getString(R.string.solver_generic_not_implemented));
       }
-    else displayErrorDialog("No solvers found for object "+mObjectOrdinal);
+    else displayErrorDialog("No solvers found for object "+mObject.name() );
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/solvers/SolverActivity.java b/src/main/java/org/distorted/solvers/SolverActivity.java
index 568d12b5..0e6849bc 100644
--- a/src/main/java/org/distorted/solvers/SolverActivity.java
+++ b/src/main/java/org/distorted/solvers/SolverActivity.java
@@ -26,6 +26,7 @@ import org.distorted.objectlib.helpers.OperatingSystemInterface;
 import org.distorted.objectlib.main.InitAssets;
 import org.distorted.objectlib.main.ObjectControl;
 import org.distorted.objectlib.main.TwistyObject;
+import org.distorted.objectlib.metadata.ListObjects;
 import org.distorted.objectlib.solvers.verifiers.SolverAbstract;
 import org.distorted.objects.RubikObject;
 import org.distorted.objects.RubikObjectList;
@@ -226,9 +227,9 @@ public class SolverActivity extends BaseActivity
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-    public int getObjectOrdinal()
+    public ListObjects getObjectList()
       {
-      return mObjectOrdinal;
+      return ListObjects.getObject(mObjectOrdinal);
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/solvers/SolverObjectLibInterface.java b/src/main/java/org/distorted/solvers/SolverObjectLibInterface.java
index 336b5261..61fdc569 100644
--- a/src/main/java/org/distorted/solvers/SolverObjectLibInterface.java
+++ b/src/main/java/org/distorted/solvers/SolverObjectLibInterface.java
@@ -16,6 +16,7 @@ import org.distorted.main.BuildConfig;
 import org.distorted.objectlib.helpers.BlockController;
 import org.distorted.objectlib.helpers.ObjectLibInterface;
 import org.distorted.objectlib.main.ObjectControl;
+import org.distorted.objectlib.metadata.ListObjects;
 import org.distorted.objects.RubikObject;
 import org.distorted.objects.RubikObjectList;
 import org.distorted.objectlib.solvers.verifiers.ImplementedVerifierList;
@@ -172,7 +173,7 @@ public class SolverObjectLibInterface implements ObjectLibInterface
     SolverActivity act = mAct.get();
     ScreenSetupPosition solver = (ScreenSetupPosition) ScreenList.SVER.getScreenClass();
     int color = solver.getCurrentColor();
-    int currObject = act.getObjectOrdinal();
+    ListObjects currObject = act.getObjectList();
     mLastCubitColor = ImplementedVerifierList.cubitIsLocked(currObject,cubit);
     mLastCubit = cubit;
     mLastCubitFace = face;
