commit 74d088c315cda44f613fc6c7034988599fa008ba
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Sat Nov 27 01:40:28 2021 +0100

    Progress with ConfigScreen.

diff --git a/src/main/java/org/distorted/config/ConfigActivity.java b/src/main/java/org/distorted/config/ConfigActivity.java
index 75f4cd39..7a93ee7d 100644
--- a/src/main/java/org/distorted/config/ConfigActivity.java
+++ b/src/main/java/org/distorted/config/ConfigActivity.java
@@ -140,7 +140,7 @@ public class ConfigActivity extends AppCompatActivity
       super.onAttachedToWindow();
 
       if( mScreen==null ) mScreen = new ConfigScreen();
-      mScreen.enterScreen(this,mObjectOrdinal);
+      mScreen.onAttachedToWindow(this,mObjectOrdinal);
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/config/ConfigScreen.java b/src/main/java/org/distorted/config/ConfigScreen.java
index 5b5b1cde..6363075d 100644
--- a/src/main/java/org/distorted/config/ConfigScreen.java
+++ b/src/main/java/org/distorted/config/ConfigScreen.java
@@ -52,7 +52,7 @@ public class ConfigScreen
   private TransparentImageButton mBackButton, mObjectButton, mPrevButton, mNextButton;
   private TextView mMovesText;
   private PopupWindow mObjectPopup;
-  private LinearLayout mDetailsLayout, mComplexLayout, mMeshLayout;
+  private ConfigScreenPane mPane;
   private int mObjectOrdinal;
   private int mColCount, mRowCount, mMaxRowCount;
   private int mObjectSize;
@@ -117,7 +117,7 @@ public class ConfigScreen
             mObjectOrdinal = ordinal;
             act.changeObject(type);
             mMovesText.setText(act.getString(R.string.mo_placeholder,mObjectOrdinal+1,NUM_OBJECTS));
-            setupInfo(act);
+            mPane.updatePane(act,mObjectOrdinal);
             }
 
           mObjectPopup.dismiss();
@@ -242,7 +242,7 @@ public class ConfigScreen
     ObjectType type = ObjectType.getObject(mObjectOrdinal);
     act.changeObject(type);
 
-    setupInfo(act);
+    mPane.updatePane(act,mObjectOrdinal);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -255,7 +255,7 @@ public class ConfigScreen
     ObjectType type = ObjectType.getObject(mObjectOrdinal);
     act.changeObject(type);
 
-    setupInfo(act);
+    mPane.updatePane(act,mObjectOrdinal);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -317,61 +317,9 @@ public class ConfigScreen
     mMovesText.setText(act.getString(R.string.mo_placeholder,mObjectOrdinal+1,NUM_OBJECTS));
     }
 
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  private LinearLayout createLayout(ConfigActivity act, final int marginT, final int marginB, final int marginS, final int color)
-    {
-    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,200);//LinearLayout.LayoutParams.WRAP_CONTENT);
-    params.bottomMargin = marginB;
-    params.topMargin    = marginT;
-    params.leftMargin   = marginS;
-    params.rightMargin  = marginS;
-
-    LinearLayout layout = new LinearLayout(act);
-    layout.setLayoutParams(params);
-    layout.setBackgroundColor(color);
-
-    return layout;
-    }
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  private void setupDetailsLayout(ConfigActivity act, final float width)
-    {
-
-    }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  private void setupComplexLayout(ConfigActivity act, final float width)
-    {
-
-
-    }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  private void setupMeshLayout(ConfigActivity act, final float width)
-    {
-
-
-    }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  private void setupInfo(ConfigActivity act)
-    {
-    int width = act.getScreenWidthInPixels();
-
-    setupDetailsLayout(act,width);
-    setupComplexLayout(act,width);
-    setupMeshLayout(act,width);
-    }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  void enterScreen(final ConfigActivity act, final int objectOrdinal)
+  void onAttachedToWindow(final ConfigActivity act, final int objectOrdinal)
     {
     int width = act.getScreenWidthInPixels();
     mBarHeight = act.getHeightBar();
@@ -382,9 +330,9 @@ public class ConfigScreen
 
     mObjectOrdinal = objectOrdinal;
 
-    LinearLayout.LayoutParams paramsL = new LinearLayout.LayoutParams((int)(width/4),LinearLayout.LayoutParams.MATCH_PARENT);
-    LinearLayout.LayoutParams paramsM = new LinearLayout.LayoutParams((int)(width/2),LinearLayout.LayoutParams.MATCH_PARENT);
-    LinearLayout.LayoutParams paramsR = new LinearLayout.LayoutParams((int)(width/4),LinearLayout.LayoutParams.MATCH_PARENT);
+    LinearLayout.LayoutParams paramsL = new LinearLayout.LayoutParams(width/4, LinearLayout.LayoutParams.MATCH_PARENT);
+    LinearLayout.LayoutParams paramsM = new LinearLayout.LayoutParams(width/2, LinearLayout.LayoutParams.MATCH_PARENT);
+    LinearLayout.LayoutParams paramsR = new LinearLayout.LayoutParams(width/4, LinearLayout.LayoutParams.MATCH_PARENT);
 
     LinearLayout layoutLeft = new LinearLayout(act);
     layoutLeft.setLayoutParams(paramsL);
@@ -411,17 +359,6 @@ public class ConfigScreen
     layout.addView(layoutMid);
     layout.addView(layoutRight);
 
-    int color = act.getResources().getColor(R.color.light_grey);
-    int margin = (int)(1.5f*width*RubikActivity.PADDING);
-
-    mDetailsLayout = createLayout(act,2*margin,  margin, 2*margin, color);
-    mComplexLayout = createLayout(act,  margin,  margin, 2*margin, color);
-    mMeshLayout    = createLayout(act,  margin,2*margin, 2*margin, color);
-
-    LinearLayout configLayout = act.findViewById(R.id.configLayout);
-    configLayout.removeAllViews();
-    configLayout.addView(mDetailsLayout);
-    configLayout.addView(mComplexLayout);
-    configLayout.addView(mMeshLayout);
+    mPane = new ConfigScreenPane(act,mObjectOrdinal);
     }
 }
diff --git a/src/main/java/org/distorted/config/ConfigScreenPane.java b/src/main/java/org/distorted/config/ConfigScreenPane.java
new file mode 100644
index 00000000..ad649568
--- /dev/null
+++ b/src/main/java/org/distorted/config/ConfigScreenPane.java
@@ -0,0 +1,104 @@
+///////////////////////////////////////////////////////////////////////////////////////////////////
+// Copyright 2020 Leszek Koltunski                                                               //
+//                                                                                               //
+// This file is part of Magic Cube.                                                              //
+//                                                                                               //
+// Magic Cube is free software: you can redistribute it and/or modify                            //
+// it under the terms of the GNU General Public License as published by                          //
+// the Free Software Foundation, either version 2 of the License, or                             //
+// (at your option) any later version.                                                           //
+//                                                                                               //
+// Magic Cube is distributed in the hope that it will be useful,                                 //
+// but WITHOUT ANY WARRANTY; without even the implied warranty of                                //
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                 //
+// GNU General Public License for more details.                                                  //
+//                                                                                               //
+// You should have received a copy of the GNU General Public License                             //
+// along with Magic Cube.  If not, see <http://www.gnu.org/licenses/>.                           //
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+package org.distorted.config;
+
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import org.distorted.jsons.ObjectJson;
+import org.distorted.main.R;
+import org.distorted.objectlib.json.JsonReader;
+import org.distorted.objectlib.main.ObjectType;
+
+import java.io.InputStream;
+
+import static android.view.View.inflate;
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+public class ConfigScreenPane
+{
+  private static final float TEXT_RATIO = 0.015f;
+
+  private LinearLayout mDetailsLayout, mDifficultyLayout, mMeshLayout;
+  private JsonReader mReader;
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  void updatePane(ConfigActivity act, int objectOrdinal)
+    {
+    if( mReader==null ) mReader = new JsonReader();
+
+    ObjectType type = ObjectType.getObject(objectOrdinal);
+    InputStream stream = ObjectJson.getStream(type,act);
+    mReader.parseJsonFileMetadata(stream);
+
+    String name = mReader.getObjectName();
+    String author = mReader.getInventor();
+    int year = mReader.getYearOfInvention();
+
+    LinearLayout layout = act.findViewById(R.id.configLayout);
+    TextView view = layout.findViewById(R.id.configDetailsName2);
+    view.setText(name);
+    view = layout.findViewById(R.id.configDetailsAuthor2);
+    view.setText(author+" "+year);
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  ConfigScreenPane(final ConfigActivity act, int objectOrdinal)
+    {
+    mDetailsLayout    = (LinearLayout)inflate( act, R.layout.config_details   , null);
+    mDifficultyLayout = (LinearLayout)inflate( act, R.layout.config_difficulty, null);
+    mMeshLayout       = (LinearLayout)inflate( act, R.layout.config_mesh      , null);
+
+    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 0, 1.0f);
+    mDetailsLayout.setLayoutParams(params);
+    mDifficultyLayout.setLayoutParams(params);
+    mMeshLayout.setLayoutParams(params);
+
+    int height = act.getScreenHeightInPixels();
+    float textSize = height*TEXT_RATIO;
+    TextView text;
+    text = mDetailsLayout.findViewById(R.id.configDetailsTitle);
+    text.setTextSize(textSize);
+    text = mDetailsLayout.findViewById(R.id.configDetailsName1);
+    text.setTextSize(textSize);
+    text = mDetailsLayout.findViewById(R.id.configDetailsName2);
+    text.setTextSize(textSize);
+    text = mDetailsLayout.findViewById(R.id.configDetailsAuthor1);
+    text.setTextSize(textSize);
+    text = mDetailsLayout.findViewById(R.id.configDetailsAuthor2);
+    text.setTextSize(textSize);
+
+    text = mDifficultyLayout.findViewById(R.id.configDifficultyTitle);
+    text.setTextSize(textSize);
+    text = mMeshLayout.findViewById(R.id.configMeshTitle);
+    text.setTextSize(textSize);
+
+    LinearLayout layout = act.findViewById(R.id.configLayout);
+    layout.removeAllViews();
+    layout.addView(mDetailsLayout);
+    layout.addView(mDifficultyLayout);
+    layout.addView(mMeshLayout);
+
+    updatePane(act,objectOrdinal);
+    }
+}
diff --git a/src/main/res/layout/config.xml b/src/main/res/layout/config.xml
index c7ee753c..258b74fc 100644
--- a/src/main/res/layout/config.xml
+++ b/src/main/res/layout/config.xml
@@ -9,35 +9,17 @@
         android:id="@+id/configSurfaceView"
         android:layout_width="match_parent"
         android:layout_height="0dp"
-        android:layout_weight="1"/>
+        android:layout_weight="1.0"/>
 
     <LinearLayout
+        android:id="@+id/configLayout"
         android:layout_width="match_parent"
         android:layout_height="0dp"
-        android:layout_weight="1"
-        android:orientation="horizontal"
-        android:background="@color/light_grey">
-
-        <ScrollView
-           android:id="@+id/configScroll"
-           android:layout_width="match_parent"
-           android:layout_height="match_parent"
-           android:layout_marginLeft="10dp"
-           android:layout_marginRight="10dp"
-           android:background="@color/grey">
-
-           <LinearLayout
-               android:id="@+id/configLayout"
-               android:layout_width="match_parent"
-               android:layout_height="wrap_content"
-               android:layout_marginLeft="0dp"
-               android:layout_marginRight="0dp"
-               android:background="@color/grey"
-               android:orientation="vertical" >
-          </LinearLayout>
-
-        </ScrollView>
-
+        android:layout_weight="1.0"
+        android:layout_marginLeft="0dp"
+        android:layout_marginRight="0dp"
+        android:background="@color/light_grey"
+        android:orientation="vertical" >
     </LinearLayout>
 
     <LinearLayout
diff --git a/src/main/res/layout/config_details.xml b/src/main/res/layout/config_details.xml
new file mode 100644
index 00000000..56b80bd6
--- /dev/null
+++ b/src/main/res/layout/config_details.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="0dp"
+    android:layout_weight="1"
+    android:gravity="center|fill_horizontal"
+    android:background="@color/grey"
+    android:orientation="vertical">
+
+    <TextView
+        android:id="@+id/configDetailsTitle"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:gravity="center"
+        android:textSize="26sp"
+        android:layout_marginTop="10dp"
+        android:layout_marginLeft="10dp"
+        android:layout_marginRight="10dp"
+        android:paddingLeft="2dp"
+        android:paddingRight="2dp"
+        android:maxLines="1"
+        android:text="@string/config_details"
+        android:background="@color/light_grey"/>
+
+    <LinearLayout
+        android:layout_width="fill_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:layout_marginLeft="10dp"
+        android:layout_marginRight="10dp"
+        android:paddingLeft="5dp"
+        android:paddingRight="5dp"
+        android:background="@color/light_grey"
+        android:orientation="horizontal">
+
+        <TextView
+             android:id="@+id/configDetailsName1"
+             android:layout_width="0dp"
+             android:layout_height="match_parent"
+             android:layout_weight="1.0"
+             android:gravity="center_vertical|start"
+             android:paddingStart="5dp"
+             android:textSize="26sp"
+             android:singleLine="true"
+             android:maxLines="1"
+             android:text="@string/config_name"/>
+
+        <TextView
+             android:id="@+id/configDetailsName2"
+             android:layout_width="0dp"
+             android:layout_height="match_parent"
+             android:layout_weight="2.5"
+             android:gravity="center_vertical|start"
+             android:paddingStart="5dp"
+             android:textSize="26sp"
+             android:singleLine="true"
+             android:maxLines="1"/>
+
+    </LinearLayout>
+
+    <LinearLayout
+        android:layout_width="fill_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:layout_marginLeft="10dp"
+        android:layout_marginRight="10dp"
+        android:paddingLeft="5dp"
+        android:paddingRight="5dp"
+        android:background="@color/light_grey"
+        android:orientation="horizontal">
+
+        <TextView
+             android:id="@+id/configDetailsAuthor1"
+             android:layout_width="0dp"
+             android:layout_height="match_parent"
+             android:layout_weight="1.0"
+             android:gravity="center_vertical|start"
+             android:paddingStart="5dp"
+             android:textSize="26sp"
+             android:singleLine="true"
+             android:maxLines="1"
+             android:text="@string/config_author"/>
+
+        <TextView
+             android:id="@+id/configDetailsAuthor2"
+             android:layout_width="0dp"
+             android:layout_height="match_parent"
+             android:layout_weight="2.5"
+             android:gravity="center_vertical|start"
+             android:paddingStart="5dp"
+             android:textSize="26sp"
+             android:singleLine="true"
+             android:maxLines="1"/>
+
+    </LinearLayout>
+</LinearLayout>
diff --git a/src/main/res/layout/config_difficulty.xml b/src/main/res/layout/config_difficulty.xml
new file mode 100644
index 00000000..0ae7b1fa
--- /dev/null
+++ b/src/main/res/layout/config_difficulty.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="0dp"
+    android:layout_weight="1"
+    android:gravity="center|fill_horizontal"
+    android:background="@color/grey"
+    android:orientation="vertical">
+
+    <TextView
+        android:id="@+id/configDifficultyTitle"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:gravity="center"
+        android:textSize="26sp"
+        android:layout_marginTop="10dp"
+        android:layout_marginLeft="10dp"
+        android:layout_marginRight="10dp"
+        android:paddingLeft="2dp"
+        android:paddingRight="2dp"
+        android:maxLines="1"
+        android:text="@string/config_difficulty"
+        android:background="@color/light_grey"/>
+
+</LinearLayout>
diff --git a/src/main/res/layout/config_mesh.xml b/src/main/res/layout/config_mesh.xml
new file mode 100644
index 00000000..7eb9793f
--- /dev/null
+++ b/src/main/res/layout/config_mesh.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="0dp"
+    android:layout_weight="1"
+    android:gravity="center|fill_horizontal"
+    android:background="@color/grey"
+    android:orientation="vertical">
+
+    <TextView
+        android:id="@+id/configMeshTitle"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:gravity="center"
+        android:textSize="26sp"
+        android:layout_marginTop="10dp"
+        android:layout_marginLeft="10dp"
+        android:layout_marginRight="10dp"
+        android:paddingLeft="2dp"
+        android:paddingRight="2dp"
+        android:maxLines="1"
+        android:text="@string/config_mesh"
+        android:background="@color/light_grey"/>
+
+    <LinearLayout
+        android:layout_width="fill_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:layout_marginLeft="10dp"
+        android:layout_marginRight="10dp"
+        android:paddingLeft="5dp"
+        android:paddingRight="5dp"
+        android:background="@color/light_grey"
+        android:orientation="horizontal">
+
+        <TextView
+             android:layout_width="0dp"
+             android:layout_height="match_parent"
+             android:layout_weight="1.0"
+             android:gravity="center_vertical|start"
+             android:paddingStart="5dp"
+             android:textSize="26sp"
+             android:singleLine="true"
+             android:maxLines="1"
+             android:text="@string/config_name"/>
+
+        <TextView
+             android:id="@+id/configDetailsName"
+             android:layout_width="0dp"
+             android:layout_height="match_parent"
+             android:layout_weight="1.0"
+             android:gravity="center_vertical|start"
+             android:paddingStart="5dp"
+             android:textSize="26sp"
+             android:singleLine="true"
+             android:maxLines="1"/>
+
+    </LinearLayout>
+
+    <LinearLayout
+        android:layout_width="fill_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:layout_marginLeft="10dp"
+        android:layout_marginRight="10dp"
+        android:layout_marginBottom="10dp"
+        android:paddingLeft="5dp"
+        android:paddingRight="5dp"
+        android:background="@color/light_grey"
+        android:orientation="horizontal">
+
+        <TextView
+             android:layout_width="0dp"
+             android:layout_height="match_parent"
+             android:layout_weight="1.0"
+             android:gravity="center_vertical|start"
+             android:paddingStart="5dp"
+             android:textSize="26sp"
+             android:singleLine="true"
+             android:maxLines="1"
+             android:text="@string/config_author"/>
+
+        <TextView
+             android:id="@+id/configDetailsAuthor"
+             android:layout_width="0dp"
+             android:layout_height="match_parent"
+             android:layout_weight="1.0"
+             android:gravity="center_vertical|start"
+             android:paddingStart="5dp"
+             android:textSize="26sp"
+             android:singleLine="true"
+             android:maxLines="1"/>
+
+    </LinearLayout>
+</LinearLayout>
diff --git a/src/main/res/values-de/strings.xml b/src/main/res/values-de/strings.xml
index a68b1df1..3d9222ed 100755
--- a/src/main/res/values-de/strings.xml
+++ b/src/main/res/values-de/strings.xml
@@ -41,6 +41,14 @@
     <string name="about">Über die App</string>
     <string name="abandon_solve">Gib auf</string>
 
+    <string name="config_details">Einzelheiten</string>
+    <string name="config_name">Name</string>
+    <string name="config_author">Autor</string>
+    <string name="config_difficulty">Schwierigkeit</string>
+    <string name="config_mesh">3D Netz</string>
+    <string name="config_mesh_simple">Einfach und schnell</string>
+    <string name="config_mesh_nice">Schön und komplex</string>
+
     <string name="credits1">Open Source App, die mit der Distorted Graphics Library entwickelt wurde. Lizenziert unter <a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html">GPL Version 2</a> oder wie gewünscht einer späteren Version.</string>
     <string name="credits2">Hübsche Muster von Walter Randelshofer. Sehen Sie <a href="http://www.randelshofer.ch">http://www.randelshofer.ch</a></string>
     <string name="credits3">Laden Sie den Code herunter, sehen Sie sich Tutorials an, lernen Sie, wie Sie Ihren eigenen Grafikeffekt hinzufügen, wie Sie Ihr eigenes Objekt codieren, ein hübsches Muster beisteuern, Ihren eigenen Löser implementieren oder einen Fehler melden: <a href="https://distorted.org/redmine/projects/magic-cube/wiki">Distorted.org</a>
diff --git a/src/main/res/values-es/strings.xml b/src/main/res/values-es/strings.xml
index 037a83cc..a0e7efd9 100755
--- a/src/main/res/values-es/strings.xml
+++ b/src/main/res/values-es/strings.xml
@@ -41,6 +41,14 @@
     <string name="about">Acerca de</string>
     <string name="abandon_solve">Abandonar</string>
 
+    <string name="config_details">Detalles</string>
+    <string name="config_name">Nombre</string>
+    <string name="config_author">Autor</string>
+    <string name="config_difficulty">Dificultad</string>
+    <string name="config_mesh">Malla 3D</string>
+    <string name="config_mesh_simple">Sencilla y rápida</string>
+    <string name="config_mesh_nice">Bonita y compleja</string>
+
     <string name="credits1">Aplicación de código abierto desarrollada con la biblioteca de gráficos de Distorted. Con licencia <a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html">GPL versión 2</a> o, a tu elección, cualquier versión posterior.</string>
     <string name="credits2">Pretty Patterns por Walter Randelshofer. Mira <a href="http://www.randelshofer.ch">http://www.randelshofer.ch</a></string>
     <string name="credits3">Descarga código, echa un vistazo a los tutoriales, aprende a añadir tu propio efecto gráfico, aprende a programar tu propio objeto, contribuye con un patrón hermoso, implementa tu propio solucionador o informa un error: \n\n<a href="https://distorted.org/redmine/projects/magic-cube/wiki">Distorted.org</a>
diff --git a/src/main/res/values-fr/strings.xml b/src/main/res/values-fr/strings.xml
index 881fb184..7de3df8b 100755
--- a/src/main/res/values-fr/strings.xml
+++ b/src/main/res/values-fr/strings.xml
@@ -41,6 +41,14 @@
     <string name="about">À propos de</string>
     <string name="abandon_solve">Abandonner</string>
 
+    <string name="config_details">Détails</string>
+    <string name="config_name">Nom</string>
+    <string name="config_author">Auteur</string>
+    <string name="config_difficulty">Difficulté</string>
+    <string name="config_mesh">Maillage 3D</string>
+    <string name="config_mesh_simple">Simple et rapide</string>
+    <string name="config_mesh_nice">Agréable et complexe</string>
+
     <string name="credits1">Appli Open Source développée à l\'aide de la bibliothèque graphique Distorted. Sous licence <a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html">GPL version 2</a> ou - à votre choix - toute version ultérieure.</string>
     <string name="credits2">Pretty Patterns par Walter Randelshofer. Voir <a href="http://www.randelshofer.ch">http://www.randelshofer.ch</a></string>
     <string name="credits3">Téléchargez le code, consultez les tutoriels, apprenez comment ajouter votre propre effet graphique, apprenez à coder votre propre objet, contribuez à un joli modèle, mettez en oeuvre votre propre solutionneur ou signalez un bogue : \n\n<a href="https://distorted.org/redmine/projects/magic-cube/wiki">Distorted.org</a>
diff --git a/src/main/res/values-ja/strings.xml b/src/main/res/values-ja/strings.xml
index a929a0e8..2b1fb562 100755
--- a/src/main/res/values-ja/strings.xml
+++ b/src/main/res/values-ja/strings.xml
@@ -41,6 +41,14 @@
     <string name="about">アプリについて</string>
     <string name="abandon_solve">あきらめる</string>
 
+    <string name="config_details">詳細</string>
+    <string name="config_name">名前</string>
+    <string name="config_author">著者</string>
+    <string name="config_difficulty">困難</string>
+    <string name="config_mesh">メッシュ3D</string>
+    <string name="config_mesh_simple">シンプルで速い</string>
+    <string name="config_mesh_nice">素晴らしくて複雑</string>
+
     <string name="credits1">ディストートグラフィックのライブラリを使用して開発されたオープンソースアプリ。<a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html">GPL バージョン 2</a>でライセンスされているか、または-オプション-それ以降のすべてのバージョン。</string>
     <string name="credits2">Pretty Patterns 沿って Walter Randelshofer. 見る <a href="http://www.randelshofer.ch">http://www.randelshofer.ch</a></string>
     <string name="credits3">コードのダウンロード、チュートリアルの確認、独自のグラフィック効果の追加方法、独自のオブジェクトのコーディング方法、プリティパターンの提出、独自のソルバーの実装、またはバグの報告などについて知る。\n\n <a href="https://distorted.org/redmine/projects/magic-cube/wiki">Distorted.org</a>
diff --git a/src/main/res/values-ko/strings.xml b/src/main/res/values-ko/strings.xml
index d95fd49b..2c37a9bc 100755
--- a/src/main/res/values-ko/strings.xml
+++ b/src/main/res/values-ko/strings.xml
@@ -41,6 +41,14 @@
     <string name="about">정보</string>
     <string name="abandon_solve">포기</string>
 
+    <string name="config_details">세부</string>
+    <string name="config_name">이름</string>
+    <string name="config_author">작가</string>
+    <string name="config_difficulty">어려움</string>
+    <string name="config_mesh">메쉬3D</string>
+    <string name="config_mesh_simple">간단하고 빠름</string>
+    <string name="config_mesh_nice">멋지고 복잡한</string>
+
     <string name="credits1">왜곡된 그래픽 라이브러리를 사용하여 개발된 오픈 소스 앱. <a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html">GPL 버전 2</a> 또는 귀하의 선택에 따라 최신 버전으로 라이센스가 부여됩니다.</string>
     <string name="credits2">Pretty Patterns 으로 Walter Randelshofer. 보다 <a href="http://www.randelshofer.ch">http://www.randelshofer.ch</a></string>
     <string name="credits3">코드를 다운로드하고, 튜토리얼을보고, 자신만의 그래픽 효과를 추가하는 방법을 배우고, 자신의 개체를 코딩하는 방법을 배우며, 예쁜 패턴을 기여하고, 자신만의 해결사를 구현하거나, 버그를 신고하십시오:\n\n<a href="https://distorted.org/redmine/projects/magic-cube/wiki">Distorted.org</a>
diff --git a/src/main/res/values-pl/strings.xml b/src/main/res/values-pl/strings.xml
index b8f353bc..87bf5255 100644
--- a/src/main/res/values-pl/strings.xml
+++ b/src/main/res/values-pl/strings.xml
@@ -41,6 +41,14 @@
     <string name="about">O aplikacji</string>
     <string name="abandon_solve">Zrezygnuj</string>
 
+    <string name="config_details">O kostce</string>
+    <string name="config_name">Nazwa</string>
+    <string name="config_author">Autor</string>
+    <string name="config_difficulty">Trudność</string>
+    <string name="config_mesh">Siatka 3D</string>
+    <string name="config_mesh_simple">Prosta i szybka</string>
+    <string name="config_mesh_nice">Ładna i wolna</string>
+
     <string name="credits1">Aplikacja open-source napisana wykorzystując bibliotekę Distorted. Licencja: <a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html">GPL wersja 2</a> albo jakakolwiek poźniejsza.</string>
     <string name="credits2">Piękne Wzory Waltera Randelshofera. Zobacz <a href="http://www.randelshofer.ch">http://www.randelshofer.ch</a></string>
     <string name="credits3">Ściągnij kod, rzuć okiem na tutoriale, naucz się napisać swój własny efekt graficzny, dodaj własny obiekt, wymyśl Piekny Wzór, zaimplementuj Rozwiązywacz, albo zgłoś błąd: \n\n<a href="https://distorted.org/redmine/projects/magic-cube/wiki">Distorted.org</a></string>
diff --git a/src/main/res/values-ru/strings.xml b/src/main/res/values-ru/strings.xml
index ad0d404a..46dff3c3 100755
--- a/src/main/res/values-ru/strings.xml
+++ b/src/main/res/values-ru/strings.xml
@@ -41,6 +41,14 @@
     <string name="about">О нас</string>
     <string name="abandon_solve">Сдаться</string>
 
+    <string name="config_details">Детали</string>
+    <string name="config_name">Имя</string>
+    <string name="config_author">Автор</string>
+    <string name="config_difficulty">Сложность</string>
+    <string name="config_mesh">3D Cетка</string>
+    <string name="config_mesh_simple">Простая и быстрая</string>
+    <string name="config_mesh_nice">Красивая и сложная</string>
+
     <string name="credits1">Приложение с открытым исходным кодом, разработанное с использованием библиотеки графики Искажений. Лицензируется согласно <a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html">версии 2 GPL</a> или любой более поздней версии по вашему выбору.</string>
     <string name="credits2">Pretty Patterns по Walter Randelshofer. Смотри <a href="http://www.randelshofer.ch">http://www.randelshofer.ch</a></string>
     <string name="credits3">Загрузите код, посмотрите учебные пособия, узнайте, как добавить собственный графический эффект, научитесь кодировать собственный объект, добавьте Симпатичный узор, внедрите собственный решебник или сообщите об ошибке: \n\n<a href="https://distorted.org/redmine/projects/magic-cube/wiki">Distorted.org</a>
diff --git a/src/main/res/values-zh-rCN/strings.xml b/src/main/res/values-zh-rCN/strings.xml
index aea4021f..3163c7e8 100644
--- a/src/main/res/values-zh-rCN/strings.xml
+++ b/src/main/res/values-zh-rCN/strings.xml
@@ -41,6 +41,14 @@
     <string name="about">关于</string>
     <string name="abandon_solve">放弃</string>
 
+    <string name="config_details">细节</string>
+    <string name="config_name">姓名</string>
+    <string name="config_author">作者</string>
+    <string name="config_difficulty">困难</string>
+    <string name="config_mesh">3D网格</string>
+    <string name="config_mesh_simple">简单快捷</string>
+    <string name="config_mesh_nice">美好而复杂</string>
+
     <string name="credits1">此应用程式原始码开发使用Distorted图型库。根据<a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html">通用公共许可版本2</a>或者任何更新版本（根据您的选择）进行许可。</string>
     <string name="credits2">Pretty Patterns by Werner Randelshofer. 請看 <a href="http://www.randelshofer.ch">http://www.randelshofer.ch</a></string>
     <string name="credits3">下载代码，浏览教程，学习如何添加自己的图形效果，学习如何编写自己的专案，创造美丽图案，实现自己的求解器，或者报告错误：<a href="https://distorted.org/redmine/projects/magic-cube/wiki">Distorted.org</a>
diff --git a/src/main/res/values-zh-rTW/strings.xml b/src/main/res/values-zh-rTW/strings.xml
index 12db4195..d34d8da4 100644
--- a/src/main/res/values-zh-rTW/strings.xml
+++ b/src/main/res/values-zh-rTW/strings.xml
@@ -41,6 +41,14 @@
     <string name="about">關於</string>
     <string name="abandon_solve">放棄</string>
 
+    <string name="config_details">細節</string>
+    <string name="config_name">姓名</string>
+    <string name="config_author">作者</string>
+    <string name="config_difficulty">困難</string>
+    <string name="config_mesh">3D網格</string>
+    <string name="config_mesh_simple">簡單快捷</string>
+    <string name="config_mesh_nice">美好而復雜</string>
+
     <string name="credits1">此應用程式原始碼開發使用Distorted圖型庫。根據<a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html">通用公共許可版本2</a>或者任何更新版本（根據您的選擇）進行許可。</string>
     <string name="credits2">Pretty Patterns by Werner Randelshofer. 請看 <a href="http://www.randelshofer.ch">http://www.randelshofer.ch</a></string>
     <string name="credits3">下載代碼，瀏覽教程，學習如何添加自己的圖形效果，學習如何编寫自己的專案，創造美麗圖案，實现自己的求解器，或者報告錯誤：\n\n<a href="https://distorted.org/redmine/projects/magic-cube/wiki">Distorted.org</a>
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index d977a0d8..b06c644e 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -52,6 +52,14 @@
     <string name="decline" translatable="false">Decline</string>
     <string name="abandon_solve">Give up</string>
 
+    <string name="config_details">Details</string>
+    <string name="config_name">Name</string>
+    <string name="config_author">Author</string>
+    <string name="config_difficulty">Difficulty</string>
+    <string name="config_mesh">3D Mesh</string>
+    <string name="config_mesh_simple">Simple and fast</string>
+    <string name="config_mesh_nice">Nice and complex</string>
+
     <string name="opengl_error" translatable="false">Error</string>
     <string name="opengl_error_text" translatable="false">This device does not support OpenGL 3.0</string>
 
