commit b6606976c11defa82e8ba0c4c06e8630108bbca2
Author: leszek <leszek@koltunski.pl>
Date:   Mon May 19 11:06:57 2025 +0200

    Move preferences to JIT model.

diff --git a/src/main/java/org/distorted/bandaged/BandagedActivity.java b/src/main/java/org/distorted/bandaged/BandagedActivity.java
index 11c2911d..c840154d 100644
--- a/src/main/java/org/distorted/bandaged/BandagedActivity.java
+++ b/src/main/java/org/distorted/bandaged/BandagedActivity.java
@@ -21,6 +21,8 @@ import android.os.Bundle;
 import android.view.ViewGroup;
 import android.widget.LinearLayout;
 
+import androidx.preference.PreferenceManager;
+
 import org.distorted.dialogs.DialogError;
 import org.distorted.dialogs.DialogMessage;
 import org.distorted.helpers.RubikFiles;
@@ -164,7 +166,8 @@ public class BandagedActivity extends BaseActivity
 
     private void savePreferences()
       {
-      SharedPreferences.Editor editor = mPreferences.edit();
+      SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
+      SharedPreferences.Editor editor = preferences.edit();
       mScreen.savePreferences(editor);
 
       editor.putBoolean("bandageDisplayDialog", mDisplayMessageDialog );
@@ -176,9 +179,10 @@ public class BandagedActivity extends BaseActivity
 
     private void restorePreferences()
       {
-      mScreen.restorePreferences(this,mPreferences);
+      SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
+      mScreen.restorePreferences(this,preferences);
 
-      mDisplayMessageDialog = mPreferences.getBoolean("bandageDisplayDialog",true);
+      mDisplayMessageDialog = preferences.getBoolean("bandageDisplayDialog",true);
 
       if( mDisplayMessageDialog )
         {
@@ -250,7 +254,8 @@ public class BandagedActivity extends BaseActivity
 
         if( !object.getError() )
           {
-          SharedPreferences.Editor editor = mPreferences.edit();
+          SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
+          SharedPreferences.Editor editor = preferences.edit();
           OSInterface os = new OSInterface(this,null);
           os.setEditor(editor);
           object.removePreferences(os);
diff --git a/src/main/java/org/distorted/config/ConfigActivity.java b/src/main/java/org/distorted/config/ConfigActivity.java
index 19190dd1..2c1f3264 100644
--- a/src/main/java/org/distorted/config/ConfigActivity.java
+++ b/src/main/java/org/distorted/config/ConfigActivity.java
@@ -12,6 +12,8 @@ package org.distorted.config;
 import android.os.Bundle;
 import android.content.SharedPreferences;
 
+import androidx.preference.PreferenceManager;
+
 import org.distorted.dialogs.DialogError;
 import org.distorted.dialogs.DialogMessage;
 import org.distorted.helpers.BaseActivity;
@@ -93,9 +95,10 @@ public class ConfigActivity extends BaseActivity
           }
         }
 
+      SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
       OSInterface os = view.getInterface();
-      os.setPreferences(mPreferences);
-      restorePreferences();
+      os.setPreferences(preferences);
+      restorePreferences(preferences);
 
       if( mScreen==null ) mScreen = new ConfigScreen();
       mScreen.onAttachedToWindow(this,mObjectOrdinal);
@@ -153,7 +156,8 @@ public class ConfigActivity extends BaseActivity
 
     private void savePreferences()
       {
-      SharedPreferences.Editor editor = mPreferences.edit();
+      SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
+      SharedPreferences.Editor editor = preferences.edit();
 
       ConfigSurfaceView view = findViewById(R.id.configSurfaceView);
       OSInterface os = view.getInterface();
@@ -167,12 +171,12 @@ public class ConfigActivity extends BaseActivity
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-    private void restorePreferences()
+    private void restorePreferences(SharedPreferences preferences)
       {
       ConfigSurfaceView view = findViewById(R.id.configSurfaceView);
       view.getObjectControl().restoreStickers();
 
-      mDisplayMessageDialog = mPreferences.getBoolean("configDisplayDialog",true);
+      mDisplayMessageDialog = preferences.getBoolean("configDisplayDialog",true);
 
       if( mDisplayMessageDialog )
         {
diff --git a/src/main/java/org/distorted/helpers/BaseActivity.java b/src/main/java/org/distorted/helpers/BaseActivity.java
index 6532a047..4711d279 100644
--- a/src/main/java/org/distorted/helpers/BaseActivity.java
+++ b/src/main/java/org/distorted/helpers/BaseActivity.java
@@ -49,15 +49,14 @@ public class BaseActivity extends AppCompatActivity
     protected float mDensity;
     protected int mVeryDarkC, mDarkC, mNormalC, mMediumC, mLightC, mPassedC;
     protected int mDarkT, mLightT, mSelectC;
-    protected SharedPreferences mPreferences;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
     @Override
     protected void onCreate(Bundle savedState)
       {
-      mPreferences = PreferenceManager.getDefaultSharedPreferences(this);
-      mCurrentTheme = mPreferences.getInt("theme",THEME_GREEN);
+      SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
+      mCurrentTheme = preferences.getInt("theme",THEME_GREEN);
 
       mDensity = getResources().getDisplayMetrics().density;
 
@@ -156,8 +155,8 @@ public class BaseActivity extends AppCompatActivity
     public void changeThemeTo(int theme)
       {
       mCurrentTheme = theme;
-
-      SharedPreferences.Editor editor = mPreferences.edit();
+      SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
+      SharedPreferences.Editor editor = preferences.edit();
       editor.putInt("theme", mCurrentTheme );
       editor.apply();
 
diff --git a/src/main/java/org/distorted/helpers/RubikNetwork.java b/src/main/java/org/distorted/helpers/RubikNetwork.java
index c1f9d5ce..8296499b 100644
--- a/src/main/java/org/distorted/helpers/RubikNetwork.java
+++ b/src/main/java/org/distorted/helpers/RubikNetwork.java
@@ -112,7 +112,8 @@ public class RubikNetwork
 
   private static RubikNetwork mThis;
   private static String mScores = "";
-  private static boolean mRunning = false;
+  private static boolean mDowRunning = false;
+  private static boolean mSubRunning = false;
   private static ArrayList<Updatee> mUpdateeList;
   private static String mVersion;
   private static int mNumObjects;
@@ -451,13 +452,6 @@ public class RubikNetwork
     return url1 + "?" + url2 + "&h=" + hash;
     }
 
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  private boolean gottaDownload()
-    {
-    return ( mScores.isEmpty() && !mRunning);
-    }
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   private void figureOutVersion(Activity act)
@@ -480,19 +474,19 @@ public class RubikNetwork
 
   private void downloadThread(ScoresReceiver receiver)
     {
-    boolean receiveValues=true;
+    boolean receiveValues = true;
 
     try
       {
-      if( gottaDownload() )
+      if( mScores.isEmpty() && !mDowRunning )
         {
-        mRunning = true;
+        mDowRunning = true;
         receiveValues = network(constructDownloadURL(),receiver);
 
-        if( mRunning )
+        if( mDowRunning )
           {
           receiveValues = fillValuesNormal(receiver);
-          mRunning = false;
+          mDowRunning = false;
           }
         }
       if( receiveValues ) receiver.receive(mCountry, mName, mTime);
@@ -509,17 +503,17 @@ public class RubikNetwork
     {
     try
       {
-      mRunning = true;
       RubikScores scores = RubikScores.getInstance();
 
-      if( scores.thereAreUnsubmittedRecords() )
+      if( scores.thereAreUnsubmittedRecords() && !mSubRunning )
         {
+        mSubRunning = true;
         boolean receiveValues = network(constructSubmitURL(),receiver);
 
-        if( mRunning )
+        if( mSubRunning )
           {
           receiveValues = fillValuesNormal(receiver);
-          mRunning = false;
+          mSubRunning = false;
           }
 
         if( receiveValues )
@@ -794,7 +788,9 @@ public class RubikNetwork
 
   public static void onPause()
     {
-    mRunning = false;
+    mDowRunning = false;
+    mSubRunning = false;
+
     mUpdateeList.clear();
     }
 
diff --git a/src/main/java/org/distorted/main/MainActivity.java b/src/main/java/org/distorted/main/MainActivity.java
index 81b83f70..6797023d 100644
--- a/src/main/java/org/distorted/main/MainActivity.java
+++ b/src/main/java/org/distorted/main/MainActivity.java
@@ -23,6 +23,7 @@ import android.widget.ScrollView;
 import android.widget.TextView;
 
 import androidx.annotation.NonNull;
+import androidx.preference.PreferenceManager;
 
 import com.google.firebase.analytics.FirebaseAnalytics;
 import com.google.firebase.inappmessaging.FirebaseInAppMessaging;
@@ -200,7 +201,8 @@ public class MainActivity extends BaseActivity implements RubikNetwork.Updatee,
 
     private void savePreferences()
       {
-      SharedPreferences.Editor editor = mPreferences.edit();
+      SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
+      SharedPreferences.Editor editor = preferences.edit();
 
       editor.putString("appVersion", mCurrVersion );
       editor.putInt("sortMode", mSortMode);
@@ -215,12 +217,13 @@ public class MainActivity extends BaseActivity implements RubikNetwork.Updatee,
 
     private void restorePreferences(boolean justStarted)
       {
-      mOldVersion = mPreferences.getString("appVersion","");
-      mSortMode = mPreferences.getInt("sortMode", MainSettingsPopup.SORT_DEFAULT);
+      SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
+      mOldVersion = preferences.getString("appVersion","");
+      mSortMode = preferences.getInt("sortMode", MainSettingsPopup.SORT_DEFAULT);
 
-      RubikObjectList.restorePreferences(this,mPreferences,justStarted);
+      RubikObjectList.restorePreferences(this,preferences,justStarted);
       RubikScores scores = RubikScores.getInstance();
-      scores.restorePreferences(mPreferences);
+      scores.restorePreferences(preferences);
 
       if( scores.isVerified() )
         {
diff --git a/src/main/java/org/distorted/patterns/PatternActivity.java b/src/main/java/org/distorted/patterns/PatternActivity.java
index e0bbbd26..7c727a63 100644
--- a/src/main/java/org/distorted/patterns/PatternActivity.java
+++ b/src/main/java/org/distorted/patterns/PatternActivity.java
@@ -16,6 +16,8 @@ import android.view.DisplayCutout;
 import android.view.ViewGroup;
 import android.widget.LinearLayout;
 
+import androidx.preference.PreferenceManager;
+
 import org.distorted.dialogs.DialogError;
 import org.distorted.helpers.BaseActivity;
 import org.distorted.library.main.DistortedLibrary;
@@ -123,7 +125,8 @@ public class PatternActivity extends BaseActivity
 
     private void savePreferences()
       {
-      SharedPreferences.Editor editor = mPreferences.edit();
+      SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
+      SharedPreferences.Editor editor = preferences.edit();
 
       for(int i=0; i< ScreenList.LENGTH; i++ )
         ScreenList.getScreen(i).getScreenClass().savePreferences(editor);
@@ -138,10 +141,12 @@ public class PatternActivity extends BaseActivity
 
     private void restorePreferences()
       {
+      SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
+
       for (int i=0; i<ScreenList.LENGTH; i++)
-        ScreenList.getScreen(i).getScreenClass().restorePreferences(mPreferences);
+        ScreenList.getScreen(i).getScreenClass().restorePreferences(preferences);
 
-      ScreenList.restorePreferences(mPreferences);
+      ScreenList.restorePreferences(preferences);
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/play/PlayActivity.java b/src/main/java/org/distorted/play/PlayActivity.java
index 465b8a64..1609e543 100644
--- a/src/main/java/org/distorted/play/PlayActivity.java
+++ b/src/main/java/org/distorted/play/PlayActivity.java
@@ -18,6 +18,8 @@ import android.view.DisplayCutout;
 import android.view.ViewGroup;
 import android.widget.LinearLayout;
 
+import androidx.preference.PreferenceManager;
+
 import com.google.firebase.analytics.FirebaseAnalytics;
 
 import org.distorted.dialogs.DialogScores;
@@ -136,7 +138,8 @@ public class PlayActivity extends BaseActivity implements DialogScores.ScoresInv
       ObjectControl control = view.getObjectControl();
       view.onResume();
 
-      restorePreferences();
+      SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
+      restorePreferences(preferences);
 
       ScreenList sl =  mJustStarted ?
                       (mModeFree ? ScreenList.FREE : ScreenList.SCRA) :
@@ -144,9 +147,9 @@ public class PlayActivity extends BaseActivity implements DialogScores.ScoresInv
 
       ScreenList.switchScreen(this,sl);
 
-      if( !mJustStarted ) restoreMoves();
+      if( !mJustStarted ) restoreMoves(preferences);
 
-      if( mObjectName.length()>0 )
+      if( !mObjectName.isEmpty() )
         {
         changeIfDifferent(mObjectName,mObjectLocal,mObjectOrdinal,control);
         }
@@ -172,7 +175,8 @@ public class PlayActivity extends BaseActivity implements DialogScores.ScoresInv
 
   private void savePreferences()
     {
-    SharedPreferences.Editor editor = mPreferences.edit();
+    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
+    SharedPreferences.Editor editor = preferences.edit();
 
     for( int i=0; i<ScreenList.LENGTH; i++ )
       {
@@ -207,36 +211,36 @@ public class PlayActivity extends BaseActivity implements DialogScores.ScoresInv
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  private void restorePreferences()
+  private void restorePreferences(SharedPreferences preferences)
     {
     for( int i=0; i<ScreenList.LENGTH; i++)
       {
-      ScreenList.getScreen(i).getScreenClass().restorePreferences(mPreferences);
+      ScreenList.getScreen(i).getScreenClass().restorePreferences(preferences);
       }
 
-    if( !mJustStarted ) ScreenList.restorePreferences(mPreferences);
+    if( !mJustStarted ) ScreenList.restorePreferences(preferences);
 
     PlayView view = findViewById(R.id.playView);
     OSInterface os = view.getInterface();
-    os.setPreferences(mPreferences);
+    os.setPreferences(preferences);
     view.getObjectControl().restorePreferences();
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  private void restoreMoves()
+  private void restoreMoves(SharedPreferences preferences)
     {
     ScreenList curr = ScreenList.getCurrentScreen();
 
     if( curr==ScreenList.FREE )
       {
       ScreenFree free = (ScreenFree) ScreenList.FREE.getScreenClass();
-      free.restoreMovePreferences(this,KEY_FREE,mPreferences);
+      free.restoreMovePreferences(this,KEY_FREE,preferences);
       }
     if( curr==ScreenList.SOLV )
       {
       ScreenSolving solv = (ScreenSolving) ScreenList.SOLV.getScreenClass();
-      solv.restoreMovePreferences(this,KEY_SOLV,mPreferences);
+      solv.restoreMovePreferences(this,KEY_SOLV,preferences);
       }
     }
 
diff --git a/src/main/java/org/distorted/solvers/SolverActivity.java b/src/main/java/org/distorted/solvers/SolverActivity.java
index 61ae254c..7576f550 100644
--- a/src/main/java/org/distorted/solvers/SolverActivity.java
+++ b/src/main/java/org/distorted/solvers/SolverActivity.java
@@ -16,6 +16,8 @@ import android.view.DisplayCutout;
 import android.view.ViewGroup;
 import android.widget.LinearLayout;
 
+import androidx.preference.PreferenceManager;
+
 import org.distorted.dialogs.DialogError;
 import org.distorted.dialogs.DialogMessage;
 import org.distorted.helpers.BaseActivity;
@@ -129,7 +131,8 @@ public class SolverActivity extends BaseActivity
 
     private void savePreferences()
       {
-      SharedPreferences.Editor editor = mPreferences.edit();
+      SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
+      SharedPreferences.Editor editor = preferences.edit();
 
       for( int i=0; i< ScreenList.LENGTH; i++ )
         {
@@ -148,14 +151,16 @@ public class SolverActivity extends BaseActivity
 
     private void restorePreferences()
       {
+      SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
+
       for( int i=0; i<ScreenList.LENGTH; i++ )
         {
-        ScreenList.getScreen(i).getScreenClass().restorePreferences(mPreferences);
+        ScreenList.getScreen(i).getScreenClass().restorePreferences(preferences);
         }
 
-      ScreenList.restorePreferences(mPreferences);
+      ScreenList.restorePreferences(preferences);
 
-      mDisplayMessageDialog = mPreferences.getBoolean("solverDisplayDialog",true);
+      mDisplayMessageDialog = preferences.getBoolean("solverDisplayDialog",true);
 
       if( mDisplayMessageDialog )
         {
