commit 2a1f50b08d9220b7a515e781773dc10ec758d4e1
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Sun Jan 15 23:53:32 2023 +0100

    Records dialog: support objects with less than 8 number of scrambles.

diff --git a/src/main/java/org/distorted/dialogs/RubikDialogScoresPagerAdapter.java b/src/main/java/org/distorted/dialogs/RubikDialogScoresPagerAdapter.java
index 99dc04ee..504c50ca 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogScoresPagerAdapter.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogScoresPagerAdapter.java
@@ -23,6 +23,7 @@ import android.widget.LinearLayout;
 import org.distorted.main.R;
 import org.distorted.external.RubikScores;
 import org.distorted.external.RubikNetwork;
+import org.distorted.objects.RubikObject;
 import org.distorted.objects.RubikObjectList;
 import org.distorted.screens.RubikScreenPlay;
 
@@ -65,9 +66,9 @@ class RubikDialogScoresPagerAdapter extends PagerAdapter implements RubikNetwork
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  private void addSection(int tab, int level, final RubikDialogScoresView view, final String[] country, final String[] name, final float[] time)
+  private void addSection(int tab, int level, int numLevels, final RubikDialogScoresView view, final String[] country, final String[] name, final float[] time)
     {
-    String title = level==RubikScreenPlay.LEVELS_SHOWN ?
+    String title = level==numLevels ?
                    mAct.getString(R.string.levelM) :
                    mAct.getString(R.string.lv_placeholder,level+1);
 
@@ -94,11 +95,9 @@ class RubikDialogScoresPagerAdapter extends PagerAdapter implements RubikNetwork
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  private void getNext(int currentTab, int[] toDoTab)
+  private void getNext(int currentTab, int[] toDoTab, int[] numLevels)
     {
-    int MAX = RubikScreenPlay.LEVELS_SHOWN;
-
-    if( toDoTab[currentTab]<=MAX )
+    if( toDoTab[currentTab]<=numLevels[currentTab] )
       {
       mToDoTab = currentTab;
       mToDoLvl = toDoTab[currentTab];
@@ -108,7 +107,7 @@ class RubikDialogScoresPagerAdapter extends PagerAdapter implements RubikNetwork
       {
       for(int tab=0; tab<mNumTabs; tab++)
         {
-        if( toDoTab[tab]<=MAX )
+        if( toDoTab[tab]<=numLevels[currentTab] )
           {
           mToDoTab = tab;
           mToDoLvl = toDoTab[tab];
@@ -125,19 +124,23 @@ class RubikDialogScoresPagerAdapter extends PagerAdapter implements RubikNetwork
     {
     prepareView();
     int toDo=0;
-    int[] toDoTab = new int[mNumTabs];
+    int[] toDoTab   = new int[mNumTabs];
+    int[] numLevels = new int[mNumTabs];
 
     for(int i=0; i<mNumTabs; i++)
       {
       toDoTab[i]= 0;
-      toDo += (RubikScreenPlay.LEVELS_SHOWN+1);
+      RubikObject object = RubikObjectList.getObject(i);
+      int numScramble = object==null ? 1 : object.getNumScramble();
+      numLevels[i] = Math.min(numScramble-1,RubikScreenPlay.LEVELS_SHOWN);
+      toDo += (numLevels[i]+1);
       }
 
     while( toDo>0 )
       {
       toDo--;
-      getNext(mViewPager.getCurrentItem(), toDoTab);
-      addSection( mToDoTab, mToDoLvl, mViews[mToDoTab], country[mToDoTab][mToDoLvl], name[mToDoTab][mToDoLvl], time[mToDoTab][mToDoLvl]);
+      getNext(mViewPager.getCurrentItem(), toDoTab, numLevels);
+      addSection( mToDoTab, mToDoLvl, numLevels[mToDoTab], mViews[mToDoTab], country[mToDoTab][mToDoLvl], name[mToDoTab][mToDoLvl], time[mToDoTab][mToDoLvl]);
       }
     }
 
