commit 9211042fd88ae98303feef9aff91e072908dc8ad
Author: leszek <leszek@koltunski.pl>
Date:   Mon Mar 11 02:25:58 2024 +0100

    Restore the colors and sticker properties from Preferences.

diff --git a/src/main/java/org/distorted/config/ConfigActivity.java b/src/main/java/org/distorted/config/ConfigActivity.java
index 82d2128e..2144ee68 100644
--- a/src/main/java/org/distorted/config/ConfigActivity.java
+++ b/src/main/java/org/distorted/config/ConfigActivity.java
@@ -155,16 +155,26 @@ public class ConfigActivity extends AppCompatActivity
       DistortedLibrary.onResume(ACTIVITY_NUMBER);
       ConfigSurfaceView view = findViewById(R.id.configSurfaceView);
       view.onResume();
-
-      if( mScreen==null ) mScreen = new ConfigScreen();
-      mScreen.onAttachedToWindow(this,mObjectOrdinal);
-      mPane = new ConfigScreenPane(this,mObjectOrdinal);
+      String key ="";
 
       if( mObjectOrdinal>=0 && mObjectOrdinal< RubikObjectList.getNumObjects() )
         {
         RubikObject object = RubikObjectList.getObject(mObjectOrdinal);
         changeIfDifferent(object,mObjectOrdinal,view.getObjectControl());
+        if( object!=null ) key = object.getUpperName();
         }
+
+      SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
+      restorePreferences(preferences);
+
+      if( mScreen==null ) mScreen = new ConfigScreen();
+      mScreen.onAttachedToWindow(this,mObjectOrdinal);
+
+      ObjectControl control = view.getObjectControl();
+      OSInterface os = view.getInterface();
+      TwistyObject obj = control.getObject();
+
+      mPane = new ConfigScreenPane(this,key,os);
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -227,6 +237,16 @@ public class ConfigActivity extends AppCompatActivity
       editor.apply();
       }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+    private void restorePreferences(SharedPreferences preferences)
+      {
+      ConfigSurfaceView view = findViewById(R.id.configSurfaceView);
+      OSInterface os = view.getInterface();
+      os.setPreferences(preferences);
+      view.getObjectControl().restorePreferences();
+      }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // PUBLIC API
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/config/ConfigScreenPane.java b/src/main/java/org/distorted/config/ConfigScreenPane.java
index c565a016..5c4e8e34 100644
--- a/src/main/java/org/distorted/config/ConfigScreenPane.java
+++ b/src/main/java/org/distorted/config/ConfigScreenPane.java
@@ -24,6 +24,7 @@ import androidx.appcompat.widget.AppCompatImageButton;
 
 import org.distorted.main.MainActivity;
 import org.distorted.main.R;
+import org.distorted.os.OSInterface;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -187,21 +188,19 @@ public class ConfigScreenPane
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  int getCurrentBorders()
+  private int extractIndex(float val, float[] table)
     {
-    return mCurrentBorders;
-    }
+    int len = table.length;
 
-///////////////////////////////////////////////////////////////////////////////////////////////////
+    for(int i=0; i<len; i++)
+      if( table[i]==val ) return i;
 
-  int getCurrentCorners()
-    {
-    return mCurrentCorners;
+    return len/2;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  ConfigScreenPane(final ConfigActivity act, int objectOrdinal)
+  ConfigScreenPane(final ConfigActivity act, String key, OSInterface os)
     {
     mRow = 0;
     mCol = 0;
@@ -210,6 +209,9 @@ public class ConfigScreenPane
     float textSize = height*TEXT_RATIO;
     int padding = (int)(height*PADDING_RATIO);
 
+    float borders = os.getFloat(key+"_border",1.0f);
+    float corners = os.getFloat(key+"_corner",1.0f);
+
     ///// UPPER LAYOUT /////////////////////////////////
     LinearLayout configLayoutU = act.findViewById(R.id.configLayoutUpper);
     configLayoutU.setPadding(padding,padding,padding,padding);
@@ -228,7 +230,12 @@ public class ConfigScreenPane
     textCorner.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize);
 
     mSeekBarBorders = configLayoutU.findViewById(R.id.configSeekBarBorder);
-    mCurrentBorders = mSeekBarBorders.getProgress();
+    mCurrentBorders = extractIndex(borders,BORDER_STEPS);
+
+    if( mCurrentBorders!=mSeekBarBorders.getProgress() )
+      {
+      mSeekBarBorders.setProgress(mCurrentBorders);
+      }
 
     mSeekBarBorders.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener()
       {
@@ -248,7 +255,12 @@ public class ConfigScreenPane
       });
 
     mSeekBarCorners = configLayoutU.findViewById(R.id.configSeekBarCorner);
-    mCurrentCorners = mSeekBarCorners.getProgress();
+    mCurrentCorners = extractIndex(corners,CORNER_STEPS);
+
+    if( mCurrentCorners!=mSeekBarCorners.getProgress() )
+      {
+      mSeekBarCorners.setProgress(mCurrentCorners);
+      }
 
     mSeekBarCorners.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener()
       {
