commit c02235d5058b8e091a8313df06f203f78e3c821f
Author: leszek <leszek@koltunski.pl>
Date:   Thu Nov 16 13:08:51 2023 +0100

    progress

diff --git a/src/main/java/org/distorted/dialogs/RubikDialogPatternSingle.java b/src/main/java/org/distorted/dialogs/RubikDialogPatternSingle.java
index 3f8f820e..e42b16c7 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogPatternSingle.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogPatternSingle.java
@@ -66,7 +66,7 @@ public class RubikDialogPatternSingle extends RubikDialogAbstract
 
   public void prepareBody(Dialog dialog, View view, FragmentActivity act, float size)
     {
-    int objectOrdinal = RubikObjectList.getOrdinal(mArgument);
+    int objectOrdinal = Integer.parseInt(mArgument);
 
     if( objectOrdinal<0 )
       {
diff --git a/src/main/java/org/distorted/dialogs/RubikDialogScores.java b/src/main/java/org/distorted/dialogs/RubikDialogScores.java
index 60a600d1..e08a1248 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogScores.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogScores.java
@@ -33,6 +33,11 @@ public class RubikDialogScores extends RubikDialogAbstract
 
   private RubikDialogScoresPagerAdapter mPagerAdapter;
 
+  public interface ScoresInvoker
+    {
+    int getObjectOrdinal();
+    }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   @Override
@@ -73,7 +78,10 @@ public class RubikDialogScores extends RubikDialogAbstract
     mPagerAdapter = new RubikDialogScoresPagerAdapter(act,viewPager,mArgument.equals("true"), this);
     tabLayout.setupWithViewPager(viewPager);
 
-    viewPager.setCurrentItem(RubikObjectList.getCurrObject());
+    ScoresInvoker si = (ScoresInvoker) act;
+    int objectOrdinal = si.getObjectOrdinal();
+
+    viewPager.setCurrentItem(objectOrdinal);
     int numObjects = RubikObjectList.getNumObjects();
     ViewGroup.LayoutParams paramsView = new ViewGroup.LayoutParams( tabWidth,tabHeight );
 
diff --git a/src/main/java/org/distorted/dialogs/RubikDialogTutorialSingle.java b/src/main/java/org/distorted/dialogs/RubikDialogTutorialSingle.java
index 9fbca7ff..069eab38 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogTutorialSingle.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogTutorialSingle.java
@@ -77,15 +77,14 @@ public class RubikDialogTutorialSingle extends RubikDialogAbstract
     {
     mDialog = dialog;
 
-    int objectOrdinal = RubikObjectList.getOrdinal(mArgument);
-
-    android.util.Log.e("D", "dialog tutorial: object "+mArgument);
+    int objectOrdinal = Integer.parseInt(mArgument);
 
     if( objectOrdinal<0 )
       {
       android.util.Log.e("D", "object "+mArgument+" not found");
       return;
       }
+
     RubikObject robject = RubikObjectList.getObject(objectOrdinal);
     InputStream jsonStream = robject==null ? null : robject.getExtrasStream(act);
     String[][] tutorials=null;
diff --git a/src/main/java/org/distorted/external/RubikNetwork.java b/src/main/java/org/distorted/external/RubikNetwork.java
index 87e090ac..4266c123 100644
--- a/src/main/java/org/distorted/external/RubikNetwork.java
+++ b/src/main/java/org/distorted/external/RubikNetwork.java
@@ -796,7 +796,6 @@ public class RubikNetwork
     {
     mRunning = false;
     mUpdateeList.clear();
-    mUpdatesState = UPDATES_RUNNING;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/helpers/MovesController.java b/src/main/java/org/distorted/helpers/MovesController.java
index f8390c0c..8adb8320 100644
--- a/src/main/java/org/distorted/helpers/MovesController.java
+++ b/src/main/java/org/distorted/helpers/MovesController.java
@@ -163,9 +163,6 @@ public class MovesController implements MovesFinished
       StringBuilder moves = new StringBuilder();
       int numMoves = getNumMoves();
 
-
-      android.util.Log.e("D", "saving moves: "+numMoves);
-
       for(int m=0; m<numMoves; m++)
         {
         Move move = mMoves.get(m);
@@ -193,8 +190,6 @@ public class MovesController implements MovesFinished
         String[] tokens = objects.split(" ");
         int length = tokens.length/3;
 
-        android.util.Log.e("D", "restoring moves: "+length);
-
         for(int m=0; m<length; m++)
           {
           String axis  = tokens[3*m  ];
diff --git a/src/main/java/org/distorted/main/MainActivity.java b/src/main/java/org/distorted/main/MainActivity.java
index 7c53d652..54a663dd 100644
--- a/src/main/java/org/distorted/main/MainActivity.java
+++ b/src/main/java/org/distorted/main/MainActivity.java
@@ -53,7 +53,7 @@ import org.distorted.tutorials.TutorialActivity;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-public class MainActivity extends AppCompatActivity implements RubikNetwork.Updatee
+public class MainActivity extends AppCompatActivity implements RubikNetwork.Updatee, RubikDialogScores.ScoresInvoker
 {
     public static final float RATIO_BAR = 0.080f;
     public static final int FLAGS =  View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
@@ -69,6 +69,7 @@ public class MainActivity extends AppCompatActivity implements RubikNetwork.Upda
     private int mScreenWidth;
     private TextView mBubbleUpdates;
     private int mNumUpdates;
+    private int mCurrentObject;
     private MainScrollGrid mGrid;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -81,6 +82,7 @@ public class MainActivity extends AppCompatActivity implements RubikNetwork.Upda
       setContentView(R.layout.main);
       hideNavigationBar();
 
+      mCurrentObject = 0;
       mJustStarted = true;
       mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);
 
@@ -89,6 +91,10 @@ public class MainActivity extends AppCompatActivity implements RubikNetwork.Upda
 
       mCurrVersion = getAppVers();
 
+      mBubbleUpdates = findViewById(R.id.bubbleUpdates);
+      mBubbleUpdates.setVisibility(View.INVISIBLE);
+      mNumUpdates = 0;
+
       Thread thread = new Thread()
         {
         public void run()
@@ -239,16 +245,13 @@ public class MainActivity extends AppCompatActivity implements RubikNetwork.Upda
       SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
       restorePreferences(preferences,mJustStarted);
 
-      mBubbleUpdates = findViewById(R.id.bubbleUpdates);
-      mBubbleUpdates.setVisibility(View.INVISIBLE);
-      mNumUpdates = 0;
+      RubikNetwork network = RubikNetwork.getInstance();
+      network.signUpForUpdates(this);
 
       if( mJustStarted )
         {
         mJustStarted = false;
 
-        RubikNetwork network = RubikNetwork.getInstance();
-        network.signUpForUpdates(this);
         network.downloadUpdates(this);
         RubikScores scores = RubikScores.getInstance();
         scores.incrementNumRuns();
@@ -359,6 +362,20 @@ public class MainActivity extends AppCompatActivity implements RubikNetwork.Upda
       return mFirebaseAnalytics;
       }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+    public int getObjectOrdinal()
+      {
+      return mCurrentObject;
+      }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+    public void setCurrentObject(int current)
+      {
+      mCurrentObject = current;
+      }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
     public void switchToTutorial(int objectOrdinal)
diff --git a/src/main/java/org/distorted/main/MainScrollGrid.java b/src/main/java/org/distorted/main/MainScrollGrid.java
index 0b6337b8..90b71cf2 100644
--- a/src/main/java/org/distorted/main/MainScrollGrid.java
+++ b/src/main/java/org/distorted/main/MainScrollGrid.java
@@ -58,6 +58,7 @@ public class MainScrollGrid
         @Override
         public void onClick(View v)
           {
+          act.setCurrentObject(ordinal);
           int w = displaymetrics.widthPixels;
           int h = displaymetrics.heightPixels;
           MainObjectPopup popup = new MainObjectPopup(act,ordinal,w,h);
diff --git a/src/main/java/org/distorted/objects/RubikObjectList.java b/src/main/java/org/distorted/objects/RubikObjectList.java
index 07e2262b..c4706a8c 100644
--- a/src/main/java/org/distorted/objects/RubikObjectList.java
+++ b/src/main/java/org/distorted/objects/RubikObjectList.java
@@ -17,7 +17,6 @@ import android.content.SharedPreferences;
 
 import org.distorted.external.RubikFiles;
 import org.distorted.external.RubikScores;
-import org.distorted.objectlib.signature.ObjectConstants;
 import org.distorted.objectlib.main.ObjectType;
 
 import static org.distorted.objectlib.main.ObjectType.NUM_OBJECTS;
@@ -30,12 +29,10 @@ public class RubikObjectList
   public static final boolean SHOW_IAP_DEBUG        = false;
   public static final boolean USE_IAP               = false;
 
-  public static final int DEF_OBJECT= ObjectConstants.CUBE_3;
   private static RubikObjectList mThis;
   private static int mNumObjects;
   private static int mNumExtras;
   private static ArrayList<RubikObject> mObjects;
-  private static int mObject = DEF_OBJECT;
 
   public static class DownloadedObject
     {
@@ -58,7 +55,6 @@ public class RubikObjectList
     }
 
   private static ArrayList<DownloadedObject> mDownloadedObjects;
-
   private static String mBoughtObjects;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -285,9 +281,6 @@ public class RubikObjectList
 
   public static void savePreferences(SharedPreferences.Editor editor)
     {
-    RubikObject obj = getObject(mObject);
-    if( obj!=null ) editor.putString("rol_objName", obj.getUpperName() );
-
     int numDownloaded = mDownloadedObjects.size();
 
     if( numDownloaded>0 )
@@ -336,14 +329,6 @@ public class RubikObjectList
       }
     }
 
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  public static void savePreferencesMinimal(SharedPreferences.Editor editor)
-    {
-    RubikObject obj = getObject(mObject);
-    if( obj!=null ) editor.putString("rol_objName", obj.getUpperName() );
-    }
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public static void restorePreferences(Context context, SharedPreferences preferences, boolean justStarted)
@@ -397,12 +382,6 @@ public class RubikObjectList
         }
       }
 
-    RubikObject object = getObject(DEF_OBJECT);
-    String defName = object==null ? "CUBE_3" : object.getUpperName();
-    String objName= preferences.getString("rol_objName",defName);
-    mObject = getOrdinal(objName);
-    if( mObject<0 || mObject>=mNumObjects ) mObject = DEF_OBJECT;
-
     if( USE_IAP && justStarted ) restoreFreedObjects(preferences);
     }
 
@@ -473,34 +452,6 @@ public class RubikObjectList
     mBoughtObjects += add;
     }
 
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  public static boolean setCurrObject(int ordinal)
-    {
-    if( mObject!=ordinal )
-      {
-      mObject = ordinal;
-      return true;
-      }
-
-    return false;
-    }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  public static int getCurrObject()
-    {
-    return mObject;
-    }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  public static String getCurrentName()
-    {
-    RubikObject object = mObjects.get(mObject);
-    return object==null ? "" : object.getUpperName();
-    }
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public static RubikObject getObject(int ordinal)
diff --git a/src/main/java/org/distorted/patternui/PatternActivity.java b/src/main/java/org/distorted/patternui/PatternActivity.java
index 721e949d..8624e165 100644
--- a/src/main/java/org/distorted/patternui/PatternActivity.java
+++ b/src/main/java/org/distorted/patternui/PatternActivity.java
@@ -189,7 +189,6 @@ public class PatternActivity extends AppCompatActivity
       view.onResume();
 
       createObject();
-      RubikObjectList.setCurrObject(mObjectOrdinal);
       SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
       restorePreferences(preferences);
       ScreenList.setScreen(this);
@@ -278,6 +277,13 @@ public class PatternActivity extends AppCompatActivity
       return mScreenHeight;
       }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+    public int getObjectOrdinal()
+      {
+      return mObjectOrdinal;
+      }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
     public void createObject()
diff --git a/src/main/java/org/distorted/patternui/ScreenPattern.java b/src/main/java/org/distorted/patternui/ScreenPattern.java
index f86c1246..682902e3 100644
--- a/src/main/java/org/distorted/patternui/ScreenPattern.java
+++ b/src/main/java/org/distorted/patternui/ScreenPattern.java
@@ -125,8 +125,9 @@ public class ScreenPattern extends ScreenAbstract
 
   private void showDialog(final PatternActivity act)
     {
+    int ordinal = act.getObjectOrdinal();
     Bundle bundle = new Bundle();
-    bundle.putString("argument",RubikObjectList.getCurrentName());
+    bundle.putString("argument", String.valueOf(ordinal) );
     RubikDialogPatternSingle diag = new RubikDialogPatternSingle();
     diag.setArguments(bundle);
     diag.show( act.getSupportFragmentManager(), RubikDialogPatternSingle.getDialogTag() );
diff --git a/src/main/java/org/distorted/playui/PlayActivity.java b/src/main/java/org/distorted/playui/PlayActivity.java
index c9197d3e..648b962f 100644
--- a/src/main/java/org/distorted/playui/PlayActivity.java
+++ b/src/main/java/org/distorted/playui/PlayActivity.java
@@ -26,6 +26,7 @@ import androidx.preference.PreferenceManager;
 
 import com.google.firebase.analytics.FirebaseAnalytics;
 
+import org.distorted.dialogs.RubikDialogScores;
 import org.distorted.library.main.DistortedLibrary;
 import org.distorted.objectlib.main.InitAssets;
 import org.distorted.objectlib.main.ObjectControl;
@@ -40,7 +41,7 @@ import org.distorted.os.OSInterface;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-public class PlayActivity extends AppCompatActivity
+public class PlayActivity extends AppCompatActivity implements RubikDialogScores.ScoresInvoker
 {
     public static final int FLAGS            = MainActivity.FLAGS;
     public static final float TITLE_TEXT_SIZE= 0.060f;
@@ -344,8 +345,6 @@ public class PlayActivity extends AppCompatActivity
         InitAssets asset = new InitAssets(jsonStream, meshStream, os);
         control.changeIfDifferent(ordinal, upperName, iconMode, asset);
         }
-
-      RubikObjectList.setCurrObject(ordinal);
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -385,6 +384,13 @@ public class PlayActivity extends AppCompatActivity
       return mLevel;
       }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+    public int getObjectOrdinal()
+      {
+      return mObjectOrdinal;
+      }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
     public ObjectControl getControl()
diff --git a/src/main/java/org/distorted/playui/PlayLibInterface.java b/src/main/java/org/distorted/playui/PlayLibInterface.java
index e9c616c8..b6081df0 100644
--- a/src/main/java/org/distorted/playui/PlayLibInterface.java
+++ b/src/main/java/org/distorted/playui/PlayLibInterface.java
@@ -96,9 +96,9 @@ public class PlayLibInterface implements ObjectLibInterface
   private void reportRecord(PlayActivity act, long startTime, long endTime, String debug, int scrambleNum)
     {
     RubikScores scores  = RubikScores.getInstance();
-    int object  = RubikObjectList.getCurrObject();
+    int objectOrdinal = act.getObjectOrdinal();
     String name = scores.getName();
-    RubikObject obj = RubikObjectList.getObject(object);
+    RubikObject obj = RubikObjectList.getObject(objectOrdinal);
     String objName = obj==null ? "NULL" : obj.getUpperName();
 
     String record = objName+" time "+mNewRecord+" isNew: "+mIsNewRecord+" scrambleNum: "+scrambleNum;
@@ -249,18 +249,6 @@ public class PlayLibInterface implements ObjectLibInterface
       solving.resetElapsed();
       PlayActivity act = mAct.get();
       ScreenList.switchScreen( act,ScreenList.SOLV );
-
-      /*
-      act.runOnUiThread(new Runnable()
-        {
-        @Override
-        public void run()
-          {
-
-          }
-        });
-
-       */
       }
     }
 
@@ -286,9 +274,11 @@ public class PlayLibInterface implements ObjectLibInterface
     {
     if( ScreenList.getCurrentScreen()==ScreenList.SOLV )
       {
+      PlayActivity act = mAct.get();
+      int objectOrdinal = act.getObjectOrdinal();
       ScreenSolving solving = (ScreenSolving)ScreenList.SOLV.getScreenClass();
       mNewRecord = solving.stopTimerAndGetRecord();
-      mIsNewRecord = solving.setRecord();
+      mIsNewRecord = solving.setRecord(objectOrdinal);
       }
     }
 
diff --git a/src/main/java/org/distorted/playui/ScreenSolving.java b/src/main/java/org/distorted/playui/ScreenSolving.java
index 1132e01d..8e86443e 100644
--- a/src/main/java/org/distorted/playui/ScreenSolving.java
+++ b/src/main/java/org/distorted/playui/ScreenSolving.java
@@ -181,9 +181,8 @@ public class ScreenSolving extends ScreenBase
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public int setRecord()
+  public int setRecord(int object)
     {
-    int object = RubikObjectList.getCurrObject();
     return mScores.setRecord(object, mLevel, (int)mElapsed);
     }
 
diff --git a/src/main/java/org/distorted/purchase/PurchaseActivity.java b/src/main/java/org/distorted/purchase/PurchaseActivity.java
index 08d88c2c..2167c188 100644
--- a/src/main/java/org/distorted/purchase/PurchaseActivity.java
+++ b/src/main/java/org/distorted/purchase/PurchaseActivity.java
@@ -202,9 +202,7 @@ public class PurchaseActivity extends AppCompatActivity
       SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
       SharedPreferences.Editor editor = preferences.edit();
       RubikScores scores = RubikScores.getInstance();
-
       scores.savePreferencesMinimal(editor);
-      RubikObjectList.savePreferencesMinimal(editor);
 
       boolean success = editor.commit();
       if( !success ) android.util.Log.e("D", "Failed to save preferences");
diff --git a/src/main/java/org/distorted/purchase/PurchaseScreenPane.java b/src/main/java/org/distorted/purchase/PurchaseScreenPane.java
index 69db335d..440fc692 100644
--- a/src/main/java/org/distorted/purchase/PurchaseScreenPane.java
+++ b/src/main/java/org/distorted/purchase/PurchaseScreenPane.java
@@ -274,13 +274,6 @@ public class PurchaseScreenPane implements ListenerOverlay
   public void overlayFinished(long id)
     {
     PurchaseActivity act = mAct.get();
-
-    if( act!=null )
-      {
-      String upperName = mObject.getUpperName();
-      int ordinal = RubikObjectList.getOrdinal(upperName);
-      RubikObjectList.setCurrObject(ordinal);
-      act.finish();
-      }
+    if( act!=null ) act.finish();
     }
 }
diff --git a/src/main/java/org/distorted/solverui/SolverActivity.java b/src/main/java/org/distorted/solverui/SolverActivity.java
index 76f35d11..f11f39f6 100644
--- a/src/main/java/org/distorted/solverui/SolverActivity.java
+++ b/src/main/java/org/distorted/solverui/SolverActivity.java
@@ -307,6 +307,13 @@ public class SolverActivity extends AppCompatActivity
       return mSolverOrdinal;
       }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+    public int getObjectOrdinal()
+      {
+      return mObjectOrdinal;
+      }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
     public void createObject()
diff --git a/src/main/java/org/distorted/solverui/SolverObjectLibInterface.java b/src/main/java/org/distorted/solverui/SolverObjectLibInterface.java
index 98aaa57c..cdbd98bd 100644
--- a/src/main/java/org/distorted/solverui/SolverObjectLibInterface.java
+++ b/src/main/java/org/distorted/solverui/SolverObjectLibInterface.java
@@ -169,13 +169,14 @@ public class SolverObjectLibInterface implements ObjectLibInterface
 
   public void onReplaceModeDown(int cubit, int face)
     {
+    SolverActivity act = mAct.get();
     ScreenSolver solver = (ScreenSolver) ScreenList.SVER.getScreenClass();
     int color = solver.getCurrentColor();
-    int currObject = RubikObjectList.getCurrObject();
+    int currObject = act.getObjectOrdinal();
     mLastCubitColor = SolverMain.cubitIsLocked(currObject,cubit);
     mLastCubit = cubit;
     mLastCubitFace = face;
-    ObjectControl control = mAct.get().getControl();
+    ObjectControl control = act.getControl();
     control.setTextureMap( cubit, face, color );
     }
 
diff --git a/src/main/java/org/distorted/tutorials/TutorialActivity.java b/src/main/java/org/distorted/tutorials/TutorialActivity.java
index 136ea8ba..f3c21a2a 100644
--- a/src/main/java/org/distorted/tutorials/TutorialActivity.java
+++ b/src/main/java/org/distorted/tutorials/TutorialActivity.java
@@ -87,9 +87,8 @@ public class TutorialActivity extends AppCompatActivity
 
     public void showDialog()
       {
-      RubikObjectList.setCurrObject(mObjectOrdinal);
       Bundle bundle = new Bundle();
-      bundle.putString("argument",RubikObjectList.getCurrentName());
+      bundle.putString("argument", String.valueOf(mObjectOrdinal) );
       RubikDialogTutorialSingle diag = new RubikDialogTutorialSingle();
       diag.setArguments(bundle);
       diag.show( getSupportFragmentManager(), RubikDialogTutorialSingle.getDialogTag() );
