commit cf486b0d098f7e2cfd8160ed08f7c7df0161e8c9
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Sat Jul 2 22:36:20 2022 +0200

    Progress with new UI.

diff --git a/src/main/java/org/distorted/objects/RubikObject.java b/src/main/java/org/distorted/objects/RubikObject.java
index 5738a8a5..9213c202 100644
--- a/src/main/java/org/distorted/objects/RubikObject.java
+++ b/src/main/java/org/distorted/objects/RubikObject.java
@@ -37,6 +37,7 @@ import org.distorted.main.R;
 import org.distorted.objectlib.json.JsonWriter;
 import org.distorted.objectlib.main.ObjectType;
 import org.distorted.patterns.RubikPatternList;
+import org.distorted.solvers.ImplementedSolversList;
 
 import static org.distorted.objectlib.main.TwistyObject.MESH_NICE;
 import static org.distorted.main.RubikActivity.SHOW_DOWNLOADED_DEBUG;
@@ -55,23 +56,24 @@ public class RubikObject
   private int mMeshState;
   private int mExtrasOrdinal;
   private Drawable mStaticIconD, mRescaledIconD;
+  private final int mSignature;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   RubikObject(ObjectType type)
     {
-    int ordinal= type.ordinal();
+    mSignature   = type.ordinal();
 
     mUpperName   = type.name();
     mLowerName   = type.name().toLowerCase(Locale.ENGLISH);
     mNumScramble = type.getNumScramble();
 
     mIconID      = type.getIconID();
-    mJsonID      = ObjectJson.getObjectJsonID(ordinal);
-    mMeshID      = ObjectMesh.getMeshID(ordinal);
-    mExtrasID    = ObjectJson.getExtrasJsonID(ordinal);
+    mJsonID      = ObjectJson.getObjectJsonID(mSignature);
+    mMeshID      = ObjectMesh.getMeshID(mSignature);
+    mExtrasID    = ObjectJson.getExtrasJsonID(mSignature);
 
-    int patternOrdinal  = RubikPatternList.getOrdinal(ordinal);
+    int patternOrdinal  = RubikPatternList.getOrdinal(mSignature);
     mPatterns = RubikPatternList.getPatterns(patternOrdinal);
 
     mMeshState = MESH_NICE;
@@ -104,6 +106,7 @@ public class RubikObject
     mJsonID        = -1;
     mExtrasID      = -1;
     mIconID        = -1;
+    mSignature     = -1;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -212,6 +215,13 @@ public class RubikObject
     return mUpperName;
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int getSignature()
+    {
+    return mSignature;
+    }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public int getNumScramble()
@@ -305,6 +315,14 @@ public class RubikObject
     return mExtrasID!=0;
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+// a downloaded object (signature<0) for sure does not have a solver.
+
+  public boolean hasSolver()
+    {
+    return ImplementedSolversList.isImplemented(mSignature);
+    }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public String[][] getPatterns()
diff --git a/src/main/java/org/distorted/solvers/ImplementedSolversList.java b/src/main/java/org/distorted/solvers/ImplementedSolversList.java
index 50b9d65a..9338398f 100644
--- a/src/main/java/org/distorted/solvers/ImplementedSolversList.java
+++ b/src/main/java/org/distorted/solvers/ImplementedSolversList.java
@@ -45,6 +45,17 @@ public enum ImplementedSolversList
       }
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public static boolean isImplemented(int signature)
+    {
+    for(int i=0; i<NUM_OBJECTS; i++)
+      {
+      if( signature==objects[i].mObject ) return true;
+      }
+    return false;
+    }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public static int getObject(int ordinal)
