commit d00b534695b0e045117dcf90799abe912419e031
Author: leszek <leszek@koltunski.pl>
Date:   Sun Dec 29 01:59:37 2024 +0100

    Initial support for Algorithmic Kilominx verifier and introduction of it into the App.

diff --git a/src/main/java/org/distorted/dialogs/RubikDialogSolvers.java b/src/main/java/org/distorted/dialogs/RubikDialogSolvers.java
index 95ac4dfe..389df9e2 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogSolvers.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogSolvers.java
@@ -47,7 +47,7 @@ public class RubikDialogSolvers extends RubikDialogAbstract
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public int getResource()            { return R.layout.dialog_scrollable_panes; }
-  public int getTitleResource()       { return R.string.solver; }
+  public int getTitleResource()       { return R.string.solvers; }
   public boolean hasArgument()        { return true; }
   public int getPositive()            { return -1; }
   public int getNegative()            { return -1; }
diff --git a/src/main/java/org/distorted/main/MainObjectPopup.java b/src/main/java/org/distorted/main/MainObjectPopup.java
index 2039dad4..5373bd28 100644
--- a/src/main/java/org/distorted/main/MainObjectPopup.java
+++ b/src/main/java/org/distorted/main/MainObjectPopup.java
@@ -72,24 +72,32 @@ public class MainObjectPopup
     ///////// SOLVER //////////////////////////////////////////////////
     Button b1 = layout.findViewById(R.id.objectSolver);
 
-    if( object!=null && object.hasSolver() )
+    if( object!=null )
       {
-      LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,levelHeight);
-      params.setMargins(marginH,marginH,marginH,marginV);
-      b1.setLayoutParams(params);
-      b1.setTextSize(TypedValue.COMPLEX_UNIT_PX, mMenuTextSize);
+      int numSolvers = object.numSolvers();
 
-      b1.setOnClickListener(new View.OnClickListener()
+      if( numSolvers>0 )
         {
-        @Override
-        public void onClick(View v)
-          {
-          mPopup.dismiss();
-          act.switchToSolver(ordinal);
-          }
-        });
+        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,levelHeight);
+        params.setMargins(marginH,marginH,marginH,marginV);
+        b1.setLayoutParams(params);
+        b1.setTextSize(TypedValue.COMPLEX_UNIT_PX, mMenuTextSize);
 
-      firstButtonShown = true;
+        if( numSolvers>1 ) b1.setText(act.getString(R.string.solvers));
+
+        b1.setOnClickListener(new View.OnClickListener()
+          {
+          @Override
+          public void onClick(View v)
+            {
+            mPopup.dismiss();
+            act.switchToSolver(ordinal);
+            }
+          });
+
+        firstButtonShown = true;
+        }
+      else b1.setVisibility(GONE);
       }
     else b1.setVisibility(GONE);
 
diff --git a/src/main/java/org/distorted/objects/RubikObject.java b/src/main/java/org/distorted/objects/RubikObject.java
index 71592db5..29567ea4 100644
--- a/src/main/java/org/distorted/objects/RubikObject.java
+++ b/src/main/java/org/distorted/objects/RubikObject.java
@@ -353,9 +353,9 @@ public class RubikObject
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public boolean hasSolver()
+  public int numSolvers()
     {
-    return mSolverOrdinals!=null;
+    return mSolverOrdinals!=null ? mSolverOrdinals.length : 0;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/solverui/ScreenSolver.java b/src/main/java/org/distorted/solverui/ScreenSolver.java
index cab73fb7..c407f032 100644
--- a/src/main/java/org/distorted/solverui/ScreenSolver.java
+++ b/src/main/java/org/distorted/solverui/ScreenSolver.java
@@ -297,7 +297,7 @@ public class ScreenSolver extends ScreenAbstract implements ResultScreen
         {
         int[] result = solver.validatePosition(object);
 
-        if( result[0]>=0 )
+        if( result[0]>=0 ) // position is valid
           {
           if( solverOrdinals.length==1 ) // just one solver - simply launch it
             {
diff --git a/src/main/res/layout/popup_menu.xml b/src/main/res/layout/popup_menu.xml
deleted file mode 100644
index 2a224551..00000000
--- a/src/main/res/layout/popup_menu.xml
+++ /dev/null
@@ -1,199 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-   android:id="@+id/menuGrid"
-   android:layout_width="wrap_content"
-   android:layout_height="wrap_content"
-   android:gravity="center"
-   android:orientation="vertical">
-
-   <Button
-      android:id="@+id/menuStars"
-      android:text="@string/stars"
-      android:layout_width="match_parent"
-      android:layout_height="0dp"
-      android:layout_weight="1.0"
-      android:paddingRight="10dp"
-      android:paddingLeft="10dp"
-      android:singleLine="true"
-      android:backgroundTint="?darkC"
-      android:gravity="center"/>
-
-   <Button
-      android:id="@+id/menuSolver"
-      android:text="@string/solver"
-      android:layout_width="match_parent"
-      android:layout_height="0dp"
-      android:layout_weight="1.0"
-      android:paddingRight="10dp"
-      android:paddingLeft="10dp"
-      android:singleLine="true"
-      android:backgroundTint="?darkC"
-      android:gravity="center"/>
-
-   <Button
-      android:id="@+id/menuHighScores"
-      android:text="@string/scores"
-      android:layout_width="match_parent"
-      android:layout_height="0dp"
-      android:layout_weight="1.0"
-      android:paddingRight="10dp"
-      android:paddingLeft="10dp"
-      android:singleLine="true"
-      android:backgroundTint="?darkC"
-      android:gravity="center"/>
-
-   <Button
-      android:id="@+id/menuPrettyPatterns"
-      android:text="@string/patterns"
-      android:layout_width="match_parent"
-      android:layout_height="0dp"
-      android:layout_weight="1.0"
-      android:paddingRight="10dp"
-      android:paddingLeft="10dp"
-      android:singleLine="true"
-      android:backgroundTint="?darkC"
-      android:gravity="center"/>
-
-   <Button
-      android:id="@+id/menuTutorials"
-      android:text="@string/tutorials"
-      android:layout_width="match_parent"
-      android:layout_height="0dp"
-      android:layout_weight="1.0"
-      android:paddingRight="10dp"
-      android:paddingLeft="10dp"
-      android:singleLine="true"
-      android:backgroundTint="?darkC"
-      android:gravity="center"/>
-
-   <Button
-      android:id="@+id/menuBandaged"
-      android:text="@string/bandaged"
-      android:layout_width="match_parent"
-      android:layout_height="0dp"
-      android:layout_weight="1.0"
-      android:paddingRight="10dp"
-      android:paddingLeft="10dp"
-      android:singleLine="true"
-      android:backgroundTint="?darkC"
-      android:gravity="center"/>
-
-   <Button
-      android:id="@+id/menuNew"
-      android:text="@string/about"
-      android:layout_width="match_parent"
-      android:layout_height="0dp"
-      android:layout_weight="1.0"
-      android:paddingRight="10dp"
-      android:paddingLeft="10dp"
-      android:singleLine="true"
-      android:backgroundTint="?darkC"
-      android:gravity="center"/>
-
-   <TextView
-       android:id="@+id/menuLevels"
-       android:layout_width="match_parent"
-       android:text="@string/levels"
-       android:layout_height="0dp"
-       android:layout_weight="0.6"
-       android:gravity="center"/>
-
-   <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="1.0"
-        android:gravity="center"
-        android:orientation="horizontal">
-
-        <Button
-           android:id="@+id/level1"
-           android:text="@string/level1"
-           android:layout_width="30dp"
-           android:layout_height="30dp"
-           android:paddingRight="10dp"
-           android:paddingLeft="10dp"
-           android:backgroundTint="?darkC"/>
-        <Button
-           android:id="@+id/level2"
-           android:text="@string/level2"
-           android:layout_width="30dp"
-           android:layout_height="30dp"
-           android:paddingRight="10dp"
-           android:paddingLeft="10dp"
-           android:backgroundTint="?darkC"/>
-        <Button
-           android:id="@+id/level3"
-           android:text="@string/level3"
-           android:layout_width="30dp"
-           android:layout_height="30dp"
-           android:paddingRight="10dp"
-           android:paddingLeft="10dp"
-           android:backgroundTint="?darkC"/>
-   </LinearLayout>
-
-   <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="1.0"
-        android:gravity="center"
-        android:orientation="horizontal">
-
-        <Button
-           android:id="@+id/level4"
-           android:text="@string/level4"
-           android:layout_width="30dp"
-           android:layout_height="30dp"
-           android:paddingRight="10dp"
-           android:paddingLeft="10dp"
-           android:backgroundTint="?darkC"/>
-        <Button
-           android:id="@+id/level5"
-           android:text="@string/level5"
-           android:layout_width="30dp"
-           android:layout_height="30dp"
-           android:paddingRight="10dp"
-           android:paddingLeft="10dp"
-           android:backgroundTint="?darkC"/>
-        <Button
-           android:id="@+id/level6"
-           android:text="@string/level6"
-           android:layout_width="30dp"
-           android:layout_height="30dp"
-           android:paddingRight="10dp"
-           android:paddingLeft="10dp"
-           android:backgroundTint="?darkC"/>
-   </LinearLayout>
-
-   <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="1.0"
-        android:gravity="center"
-        android:orientation="horizontal">
-
-        <Button
-           android:id="@+id/level7"
-           android:text="@string/level7"
-           android:layout_width="30dp"
-           android:layout_height="30dp"
-           android:paddingRight="10dp"
-           android:paddingLeft="10dp"
-           android:backgroundTint="?darkC"/>
-        <Button
-           android:id="@+id/level8"
-           android:text="@string/level8"
-           android:layout_width="30dp"
-           android:layout_height="30dp"
-           android:paddingRight="10dp"
-           android:paddingLeft="10dp"
-           android:backgroundTint="?darkC"/>
-        <Button
-           android:id="@+id/levelM"
-           android:text="@string/levelM"
-           android:layout_width="30dp"
-           android:layout_height="30dp"
-           android:paddingRight="10dp"
-           android:paddingLeft="10dp"
-           android:backgroundTint="?darkC"/>
-   </LinearLayout>
-</LinearLayout>
\ No newline at end of file
diff --git a/src/main/res/values-de/strings.xml b/src/main/res/values-de/strings.xml
index f458705e..c0ca167f 100755
--- a/src/main/res/values-de/strings.xml
+++ b/src/main/res/values-de/strings.xml
@@ -47,7 +47,7 @@
     <string name="no_updates">Nicht gefunden</string>
     <string name="install">Installieren</string>
     <string name="abandon_solve">Give up</string>
-    <string name="use_solver">Benutze</string>
+    <string name="use_solver">Verwenden</string>
     <string name="whatsnew">Was gibt\'s Neues</string>
     <string name="share">Teilen Sie diese App</string>
     <string name="contact">Kontakt</string>
@@ -66,7 +66,7 @@
     <string name="scores">Highscores</string>
     <string name="patterns">Hübsche Muster</string>
     <string name="control">Den Würfel steuern</string>
-    <string name="solver">Löser</string>
+    <string name="solvers">Löser</string>
     <string name="tutorials">Tutorials</string>
     <string name="about">Über die App</string>
     <string name="bandaged">Bandaged</string>
diff --git a/src/main/res/values-es/strings.xml b/src/main/res/values-es/strings.xml
index 834f6431..6af2b979 100755
--- a/src/main/res/values-es/strings.xml
+++ b/src/main/res/values-es/strings.xml
@@ -47,7 +47,7 @@
     <string name="no_updates">Extraviado</string>
     <string name="install">Instalar</string>
     <string name="abandon_solve">Abandonar</string>
-    <string name="use_solver">Utilizar</string>
+    <string name="use_solver">Usar</string>
     <string name="whatsnew">Qué hay de nuevo</string>
     <string name="share">Comparte esta app</string>
     <string name="contact">Contacto</string>
@@ -66,7 +66,7 @@
     <string name="scores">Leaderboard</string>
     <string name="patterns">Patrones</string>
     <string name="control">Controla el cubo</string>
-    <string name="solver">Solucionadores</string>
+    <string name="solvers">Solucionadores</string>
     <string name="tutorials">Tutoriales</string>
     <string name="about">Acerca de</string>
     <string name="bandaged">Bandaged</string>
diff --git a/src/main/res/values-fr/strings.xml b/src/main/res/values-fr/strings.xml
index c4ec3f35..817c0743 100755
--- a/src/main/res/values-fr/strings.xml
+++ b/src/main/res/values-fr/strings.xml
@@ -66,7 +66,7 @@
     <string name="scores">Meilleurs scores</string>
     <string name="patterns">Jolis motifs</string>
     <string name="control">Contrôle du cube</string>
-    <string name="solver">Solveurs</string>
+    <string name="solvers">Solveurs</string>
     <string name="tutorials">Tutoriels</string>
     <string name="about">À propos de</string>
     <string name="bandaged">Bandaged</string>
diff --git a/src/main/res/values-ja/strings.xml b/src/main/res/values-ja/strings.xml
index 2e302448..77a9449f 100755
--- a/src/main/res/values-ja/strings.xml
+++ b/src/main/res/values-ja/strings.xml
@@ -47,7 +47,7 @@
     <string name="no_updates">見つかりません</string>
     <string name="install">インストール</string>
     <string name="abandon_solve">あきらめる</string>
-    <string name="use_solver">使用する</string>
+    <string name="use_solver">使用</string>
     <string name="whatsnew">新着情報</string>
     <string name="share">このアプリを共有する</string>
     <string name="contact">お問い合わせ</string>
@@ -66,7 +66,7 @@
     <string name="scores">ハイスコア</string>
     <string name="patterns">プリティパターン</string>
     <string name="control">キューブの制御</string>
-    <string name="solver">ソルバー</string>
+    <string name="solvers">ソルバー</string>
     <string name="tutorials">チュートリアル</string>
     <string name="about">アプリについて</string>
     <string name="bandaged">包帯</string>
diff --git a/src/main/res/values-ko/strings.xml b/src/main/res/values-ko/strings.xml
index 3b070a43..080b3c7e 100755
--- a/src/main/res/values-ko/strings.xml
+++ b/src/main/res/values-ko/strings.xml
@@ -66,7 +66,7 @@
     <string name="scores">고득점</string>
     <string name="patterns">예쁜 패턴</string>
     <string name="control">큐브 제어</string>
-    <string name="solver">솔버</string>
+    <string name="solvers">솔버</string>
     <string name="tutorials">튜토리얼</string>
     <string name="about">정보</string>
     <string name="bandaged">밴디지</string>
diff --git a/src/main/res/values-pl/strings.xml b/src/main/res/values-pl/strings.xml
index e23638d1..774ee5cc 100644
--- a/src/main/res/values-pl/strings.xml
+++ b/src/main/res/values-pl/strings.xml
@@ -66,7 +66,7 @@
     <string name="scores">Lista najlepszych</string>
     <string name="patterns">Piękne Wzory</string>
     <string name="control">Obroty Kostki</string>
-    <string name="solver">Rozwiązywacze</string>
+    <string name="solvers">Rozwiązywacze</string>
     <string name="tutorials">Tutoriale</string>
     <string name="about">O aplikacji</string>
     <string name="bandaged">Bandaged</string>
diff --git a/src/main/res/values-ru/strings.xml b/src/main/res/values-ru/strings.xml
index 0e9a73cf..1acbf35d 100755
--- a/src/main/res/values-ru/strings.xml
+++ b/src/main/res/values-ru/strings.xml
@@ -47,7 +47,7 @@
     <string name="no_updates">Не найдено</string>
     <string name="install">Установите</string>
     <string name="abandon_solve">Сдаться</string>
-    <string name="use_solver">Попробуй</string>
+    <string name="use_solver">Использовай</string>
     <string name="whatsnew">Новинки</string>
     <string name="share">Поделись этим</string>
     <string name="contact">Контакт</string>
@@ -66,7 +66,7 @@
     <string name="scores">Высокие баллы</string>
     <string name="patterns">Красивые узоры</string>
     <string name="control">Управление кубом</string>
-    <string name="solver">Решатели</string>
+    <string name="solvers">Решатели</string>
     <string name="tutorials">Учебники</string>
     <string name="about">О нас</string>
     <string name="bandaged">Бандаж</string>
diff --git a/src/main/res/values-zh-rCN/strings.xml b/src/main/res/values-zh-rCN/strings.xml
index cfa633da..c9b04365 100644
--- a/src/main/res/values-zh-rCN/strings.xml
+++ b/src/main/res/values-zh-rCN/strings.xml
@@ -47,7 +47,7 @@
     <string name="no_updates">未找到更新</string>
     <string name="install">安装</string>
     <string name="abandon_solve">放弃</string>
-    <string name="use_solver">尝试</string>
+    <string name="use_solver">使用</string>
     <string name="whatsnew">新奇事物</string>
     <string name="share">分享这个应用程序</string>
     <string name="contact">联系我们</string>
@@ -66,7 +66,7 @@
     <string name="scores">高分</string>
     <string name="patterns">模式</string>
     <string name="control">控制立方体</string>
-    <string name="solver">求解器</string>
+    <string name="solvers">求解器</string>
     <string name="tutorials">讲解</string>
     <string name="about">关于</string>
     <string name="bandaged">捆绑魔方</string>
diff --git a/src/main/res/values-zh-rTW/strings.xml b/src/main/res/values-zh-rTW/strings.xml
index e5fc1c39..fddf5b91 100644
--- a/src/main/res/values-zh-rTW/strings.xml
+++ b/src/main/res/values-zh-rTW/strings.xml
@@ -47,7 +47,7 @@
     <string name="no_updates">未找到更新</string>
     <string name="install">安裝</string>
     <string name="abandon_solve">放棄</string>
-    <string name="use_solver">嘗試</string>
+    <string name="use_solver">使用</string>
     <string name="whatsnew">新奇事物</string>
     <string name="share">分享這個應用程序</string>
     <string name="contact">聯繫我們</string>
@@ -66,7 +66,7 @@
     <string name="scores">高分</string>
     <string name="patterns">模式</string>
     <string name="control">控制立方體</string>
-    <string name="solver">求解器</string>
+    <string name="solvers">求解器</string>
     <string name="tutorials">講解</string>
     <string name="about">關於</string>
     <string name="bandaged">捆绑魔方</string>
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index 46737ab9..57288c02 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -49,7 +49,7 @@
     <string name="no_updates">No update found</string>
     <string name="install">Install</string>
     <string name="abandon_solve">Give up</string>
-    <string name="use_solver">Try</string>
+    <string name="use_solver">Use</string>
     <string name="whatsnew">What\'s new</string>
     <string name="share">Share this app</string>
     <string name="contact">Contact us</string>
@@ -60,7 +60,7 @@
     <string name="scores">High Scores</string>
     <string name="patterns">Pretty Patterns</string>
     <string name="control">Control the Cube</string>
-    <string name="solver">Solvers</string>
+    <string name="solvers">Solvers</string>
     <string name="tutorials">Tutorials</string>
     <string name="about">About</string>
     <string name="bandaged">Bandaged</string>
