commit 3c98dfd4789f600d9fff832012adf0137a6bc457
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Thu Nov 13 15:23:11 2025 +0100

    progress with remembering solves.

diff --git a/src/main/java/org/distorted/main/MainSolvesPopup.java b/src/main/java/org/distorted/main/MainSolvesPopup.java
index fd4d29e3..a6b2ea5b 100644
--- a/src/main/java/org/distorted/main/MainSolvesPopup.java
+++ b/src/main/java/org/distorted/main/MainSolvesPopup.java
@@ -9,12 +9,19 @@
 
 package org.distorted.main;
 
+import android.content.Context;
+import android.content.res.Resources;
+import android.graphics.drawable.ColorDrawable;
 import android.view.Gravity;
+import android.view.LayoutInflater;
 import android.view.View;
+import android.widget.LinearLayout;
 import android.widget.PopupWindow;
 
 import org.distorted.objects.RubikObject;
 import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
 
 import java.lang.ref.WeakReference;
 
@@ -23,8 +30,10 @@ import java.lang.ref.WeakReference;
 public class MainSolvesPopup
   {
   private final int mWidth, mHeight;
-  private PopupWindow mPopup;
-  private WeakReference<MainActivity> mAct;
+  private final PopupWindow mPopup;
+  private final WeakReference<MainActivity> mAct;
+  private final LinearLayout mLayout;
+  private int mMargin, mSize, mFontSize, mPadding;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -35,6 +44,73 @@ public class MainSolvesPopup
     mWidth = popupWidth;
     mHeight= popupHeight;
 
+    mMargin   = (int)(mHeight*0.01f);
+    mSize     = (int)(mHeight*0.14f);
+    mFontSize = (int)(mHeight*0.02f);
+    mPadding  = (int)(mHeight*0.01f);
+
+    LayoutInflater layoutInflater = (LayoutInflater)act.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+    final View layout = layoutInflater.inflate(R.layout.dialog_scrollable_panes, null);
+    mPopup = new PopupWindow(act);
+    mPopup.setContentView(layout);
+    mPopup.setFocusable(true);
+
+    Resources res = act.getResources();
+    int l = res.getColor(act.getLightTrans());
+    mPopup.setBackgroundDrawable(new ColorDrawable(l));
+
+    mLayout= layout.findViewById(R.id.dialog_scrollable_main_layout);
+
+    fillLayout(array);
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  private void fillLayout(JSONArray array)
+    {
+    int textH = (int)(mSize*0.27f);
+    int buttH = (int)(mSize*0.35f);
+
+    LinearLayout.LayoutParams pV = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, mSize );
+    pV.setMargins(mMargin, mMargin, mMargin, 0);
+    LinearLayout.LayoutParams pL = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, mSize );
+    pL.setMargins(mMargin, mMargin, mMargin, mMargin);
+    LinearLayout.LayoutParams pT = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, textH );
+    LinearLayout.LayoutParams pB = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, buttH );
+
+    int numSolves = array.length();
+
+    try
+      {
+      for(int s=0; s<numSolves; s++)
+        {
+        JSONObject object = array.getJSONObject(s);
+        long time = object.getLong("time");
+        View pane = createPane(time, pL, pT, pB);
+        mLayout.addView(pane);
+        }
+      }
+    catch(JSONException jex)
+      {
+      android.util.Log.e("D", "fillLayout: JSON error: "+jex.getMessage());
+      }
+
+    View pane = createNewPane(pL,pT,pB);
+    mLayout.addView(pane);
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  private View createPane(long time, LinearLayout.LayoutParams pView, LinearLayout.LayoutParams pText, LinearLayout.LayoutParams pButt)
+    {
+
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  private View createNewPane(LinearLayout.LayoutParams pView, LinearLayout.LayoutParams pText, LinearLayout.LayoutParams pButt)
+    {
+
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
