commit 236cc1c17e12a11a77cb687ee32b600dbd835c2d
Author: leszek <leszek@koltunski.pl>
Date:   Wed May 8 13:25:14 2024 +0200

    major progress with the main settings popup

diff --git a/src/main/java/org/distorted/helpers/BaseActivity.java b/src/main/java/org/distorted/helpers/BaseActivity.java
index 221be8d3..319428be 100644
--- a/src/main/java/org/distorted/helpers/BaseActivity.java
+++ b/src/main/java/org/distorted/helpers/BaseActivity.java
@@ -44,6 +44,7 @@ public class BaseActivity extends AppCompatActivity
     protected int mCurrentTheme;
     protected int mScreenWidth, mScreenHeight;
     protected int mHeightLowerBar, mHeightUpperBar;
+    protected float mDensity;
     protected SharedPreferences mPreferences;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -54,6 +55,8 @@ public class BaseActivity extends AppCompatActivity
       mPreferences = PreferenceManager.getDefaultSharedPreferences(this);
       mCurrentTheme = mPreferences.getInt("theme",THEME_GREY);
 
+      mDensity = getResources().getDisplayMetrics().density;
+
       switch(mCurrentTheme)
         {
         case THEME_WHITE : setTheme(R.style.WhiteTheme); break;
@@ -61,8 +64,6 @@ public class BaseActivity extends AppCompatActivity
         default          : setTheme(R.style.GreyTheme);  break;
         }
 
-      android.util.Log.e("D", "current theme: "+mCurrentTheme);
-
       super.onCreate(savedState);
       }
 
diff --git a/src/main/java/org/distorted/main/MainActivity.java b/src/main/java/org/distorted/main/MainActivity.java
index 3128fea5..d9633cb2 100644
--- a/src/main/java/org/distorted/main/MainActivity.java
+++ b/src/main/java/org/distorted/main/MainActivity.java
@@ -14,10 +14,8 @@ import android.content.SharedPreferences;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
 import android.content.res.Configuration;
-import android.os.Build;
 import android.os.Bundle;
 import android.util.TypedValue;
-import android.view.DisplayCutout;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.LinearLayout;
@@ -79,7 +77,6 @@ public class MainActivity extends BaseActivity implements RubikNetwork.Updatee,
       computeHeights();
 
       getWindowWidth(getResources().getConfiguration());
-android.util.Log.e("D", "onCreate: "+mScreenWidth+" "+mScreenHeight);
 
       mCurrVersion = getAppVers();
 
@@ -120,49 +117,12 @@ android.util.Log.e("D", "onCreate: "+mScreenWidth+" "+mScreenHeight);
       layoutBot.setLayoutParams(pL);
       }
 
-///////////////////////////////////////////////////////////////////////////////////////////////////
-/*
-    @Override
-    public void onAttachedToWindow()
-      {
-      super.onAttachedToWindow();
-
-      getWindowWidth(getResources().getConfiguration());
-
-
-android.util.Log.e("D", "onAttachedToWindow: "+mScreenWidth+" "+mScreenHeight);
-
-
-      mGrid = new MainScrollGrid();
-      mGrid.createGrid(this,mScreenWidth,mSortMode);
-
-      if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.P )
-        {
-        DisplayCutout cutout = getWindow().getDecorView().getRootWindowInsets().getDisplayCutout();
-        int insetHeight = cutout!=null ? cutout.getSafeInsetTop() : 0;
-
-        if( insetHeight>0 )
-          {
-          LinearLayout.LayoutParams pH = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 0, RATIO_HID);
-          LinearLayout layoutHid = findViewById(R.id.hiddenBar);
-          layoutHid.setLayoutParams(pH);
-
-          LinearLayout.LayoutParams pS = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 0, 1-2*RATIO_BAR-RATIO_HID);
-          ScrollView scroll = findViewById(R.id.objectScroll);
-          scroll.setLayoutParams(pS);
-          }
-        }
-      }
-*/
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
     @Override
     public void onConfigurationChanged(@NonNull Configuration conf)
       {
       super.onConfigurationChanged(conf);
-
-android.util.Log.e("D", "onConfigurationChanged");
-
       getWindowWidth(conf);
       if( mGrid!=null ) mGrid.updateGrid(this,mScreenWidth);
       }
@@ -175,10 +135,6 @@ android.util.Log.e("D", "onConfigurationChanged");
       super.onPause();
       RubikNetwork.onPause();
       savePreferences();
-
-
-android.util.Log.e("D", "onPause");
-
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -188,8 +144,6 @@ android.util.Log.e("D", "onPause");
       {
       super.onResume();
 
-android.util.Log.e("D", "onResume");
-
       restorePreferences(mJustStarted);
 
       RubikNetwork network = RubikNetwork.getInstance();
@@ -225,8 +179,6 @@ android.util.Log.e("D", "onResume");
     protected void onDestroy() 
       {
       super.onDestroy();
-
-android.util.Log.e("D", "onDestroy");
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -412,8 +364,8 @@ android.util.Log.e("D", "onDestroy");
 
     public void onSettings(View v)
       {
-      int sw = (int)(mScreenWidth*0.70);
-      int sh = (int)(mScreenHeight*0.25f);
+      int sw = (int)(340*mDensity + 0.5f);
+      int sh = (int)(188*mDensity + 0.5f);
 
       int vw = v.getWidth();
 
diff --git a/src/main/java/org/distorted/main/MainSettingsPopup.java b/src/main/java/org/distorted/main/MainSettingsPopup.java
index 19b19b9f..b4d70ee6 100644
--- a/src/main/java/org/distorted/main/MainSettingsPopup.java
+++ b/src/main/java/org/distorted/main/MainSettingsPopup.java
@@ -122,7 +122,7 @@ public class MainSettingsPopup implements AdapterView.OnItemSelectedListener
     buildSortOptions(act);
 
     ArrayAdapter<String> sortAdapter = new ArrayAdapter<>(act, R.layout.settings_spinner_item, mSortNames);
-    sortAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+    sortAdapter.setDropDownViewResource(R.layout.settings_spinner_item);
     sortSpinner.setAdapter(sortAdapter);
 
     if( sortMethod>=0 && sortMethod<mSortNames.length ) sortSpinner.setSelection(sortMethod);
@@ -134,7 +134,7 @@ public class MainSettingsPopup implements AdapterView.OnItemSelectedListener
     buildThemeOptions(act);
 
     ArrayAdapter<String> themeAdapter = new ArrayAdapter<>(act, R.layout.settings_spinner_item, mThemeNames);
-    themeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+    themeAdapter.setDropDownViewResource(R.layout.settings_spinner_item);
     themeSpinner.setAdapter(themeAdapter);
 
     if( themeValue>=0 && themeValue<mThemeNames.length ) themeSpinner.setSelection(themeValue);
diff --git a/src/main/res/layout/settings_popup.xml b/src/main/res/layout/settings_popup.xml
index b8272e9a..bd17e474 100644
--- a/src/main/res/layout/settings_popup.xml
+++ b/src/main/res/layout/settings_popup.xml
@@ -23,8 +23,10 @@
 
         <TextView
             android:id="@+id/sortText"
-            android:layout_marginStart="5dp"
-            android:layout_marginEnd="25dp"
+            android:layout_marginStart="10dp"
+            android:layout_marginEnd="15dp"
+            android:layout_marginTop="10dp"
+            android:layout_marginBottom="10dp"
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
             android:text="@string/sort_by"
@@ -35,13 +37,18 @@
             android:id="@+id/sortMethod"
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
-            android:layout_margin="10dip"
-            android:gravity="center|center_vertical"/>
+            android:layout_marginStart="15dp"
+            android:layout_marginEnd="10dp"
+            android:layout_marginTop="10dp"
+            android:layout_marginBottom="10dp"
+            android:gravity="start|center_vertical"/>
 
         <TextView
             android:id="@+id/themeText"
-            android:layout_marginStart="5dp"
-            android:layout_marginEnd="25dp"
+            android:layout_marginStart="10dp"
+            android:layout_marginEnd="15dp"
+            android:layout_marginTop="10dp"
+            android:layout_marginBottom="10dp"
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
             android:text="@string/theme"
@@ -52,8 +59,11 @@
             android:id="@+id/themeValue"
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
-            android:layout_margin="10dip"
-            android:gravity="center|center_vertical"/>
+            android:layout_marginStart="15dp"
+            android:layout_marginEnd="10dp"
+            android:layout_marginTop="10dp"
+            android:layout_marginBottom="10dp"
+            android:gravity="start|center_vertical"/>
 
    </GridLayout>
 </LinearLayout>
\ No newline at end of file
diff --git a/src/main/res/layout/settings_popup_android25.xml b/src/main/res/layout/settings_popup_android25.xml
index 45e64554..af85a715 100644
--- a/src/main/res/layout/settings_popup_android25.xml
+++ b/src/main/res/layout/settings_popup_android25.xml
@@ -11,53 +11,61 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:text="@string/settings_title"
+        android:textSize="34sp"
         android:background="@color/light_grey"
         android:gravity="center"/>
 
-   <LinearLayout
-        android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:gravity="center"
-        android:orientation="horizontal">
+   <GridLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:rowCount="2"
+        android:columnCount="2">
 
-       <TextView
+        <TextView
             android:id="@+id/sortText"
-            android:layout_marginStart="5dp"
-            android:layout_marginEnd="25dp"
+            android:layout_marginStart="10dp"
+            android:layout_marginEnd="15dp"
+            android:layout_marginTop="10dp"
+            android:layout_marginBottom="10dp"
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
             android:text="@string/sort_by"
+            android:textSize="24sp"
             android:gravity="start|center_vertical"/>
 
         <Spinner
             android:id="@+id/sortMethod"
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
+            android:layout_marginStart="15dp"
+            android:layout_marginEnd="10dp"
+            android:layout_marginTop="10dp"
+            android:layout_marginBottom="10dp"
             android:spinnerMode="dialog"
-            android:gravity="end|center_vertical"/>
-
-   </LinearLayout>
-
-   <LinearLayout
-        android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:gravity="center"
-        android:orientation="horizontal">
+            android:gravity="start|center_vertical"/>
 
-       <TextView
+        <TextView
             android:id="@+id/themeText"
-            android:layout_marginStart="5dp"
-            android:layout_marginEnd="25dp"
+            android:layout_marginStart="10dp"
+            android:layout_marginEnd="15dp"
+            android:layout_marginTop="10dp"
+            android:layout_marginBottom="10dp"
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
             android:text="@string/theme"
+            android:textSize="24sp"
             android:gravity="start|center_vertical"/>
 
-       <Spinner
+        <Spinner
             android:id="@+id/themeValue"
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
-            android:gravity="end|center_vertical"/>
+            android:layout_marginStart="15dp"
+            android:layout_marginEnd="10dp"
+            android:layout_marginTop="10dp"
+            android:layout_marginBottom="10dp"
+            android:spinnerMode="dialog"
+            android:gravity="start|center_vertical"/>
 
-   </LinearLayout>
+   </GridLayout>
 </LinearLayout>
\ No newline at end of file
diff --git a/src/main/res/layout/settings_spinner_item.xml b/src/main/res/layout/settings_spinner_item.xml
index bde17195..d42fad2a 100644
--- a/src/main/res/layout/settings_spinner_item.xml
+++ b/src/main/res/layout/settings_spinner_item.xml
@@ -3,10 +3,12 @@
 <TextView
     xmlns:android="http://schemas.android.com/apk/res/android"
     style="?android:attr/spinnerItemStyle"
-    android:layout_width="80dp"
+    android:layout_width="160dp"
     android:layout_height="wrap_content"
+    android:paddingTop="8dp"
+    android:paddingBottom="8dp"
     android:textSize="24sp"
-    android:gravity="end"
+    android:gravity="start"
     android:singleLine="true"
     android:textColor="#FFFFFF"
     />
\ 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 8b876b04..cf51fe2d 100755
--- a/src/main/res/values-de/strings.xml
+++ b/src/main/res/values-de/strings.xml
@@ -90,11 +90,11 @@
     <string name="config_corner">Ecken</string>
     <string name="config_no_support">Das aktuelle Puzzle unterstützt keine Farbanpassung.</string>
 
-    <string name="sort_classic">klassisch</string>
-    <string name="sort_shape">form</string>
-    <string name="sort_difficulty">schwierigkeit</string>
-    <string name="sort_author">autor</string>
-    <string name="sort_year">jahr</string>
+    <string name="sort_classic">Klassisch</string>
+    <string name="sort_shape">Form</string>
+    <string name="sort_difficulty">Schwierigkeit</string>
+    <string name="sort_author">Autor</string>
+    <string name="sort_year">Jahr</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>
diff --git a/src/main/res/values-es/strings.xml b/src/main/res/values-es/strings.xml
index a296bb23..56aece84 100755
--- a/src/main/res/values-es/strings.xml
+++ b/src/main/res/values-es/strings.xml
@@ -90,11 +90,11 @@
     <string name="config_corner">Esquinas</string>
     <string name="config_no_support">El cubo actual no admite el ajuste de colores.</string>
 
-    <string name="sort_classic">clásico</string>
-    <string name="sort_shape">forma</string>
-    <string name="sort_difficulty">dificultad</string>
-    <string name="sort_author">autor</string>
-    <string name="sort_year">año</string>
+    <string name="sort_classic">Clásico</string>
+    <string name="sort_shape">Forma</string>
+    <string name="sort_difficulty">Dificultad</string>
+    <string name="sort_author">Autor</string>
+    <string name="sort_year">Año</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>
diff --git a/src/main/res/values-fr/strings.xml b/src/main/res/values-fr/strings.xml
index 3f7ad1db..4a24c384 100755
--- a/src/main/res/values-fr/strings.xml
+++ b/src/main/res/values-fr/strings.xml
@@ -90,11 +90,11 @@
     <string name="config_corner">Coins</string>
     <string name="config_no_support">Le cube actuel ne prend pas en charge le réglage des couleurs.</string>
 
-    <string name="sort_classic">classique</string>
-    <string name="sort_shape">forme</string>
-    <string name="sort_difficulty">difficulté</string>
-    <string name="sort_author">auteur</string>
-    <string name="sort_year">année</string>
+    <string name="sort_classic">Classique</string>
+    <string name="sort_shape">Forme</string>
+    <string name="sort_difficulty">Difficulté</string>
+    <string name="sort_author">Auteur</string>
+    <string name="sort_year">Année</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>
diff --git a/src/main/res/values-pl/strings.xml b/src/main/res/values-pl/strings.xml
index d79c5783..a6638392 100644
--- a/src/main/res/values-pl/strings.xml
+++ b/src/main/res/values-pl/strings.xml
@@ -90,11 +90,11 @@
     <string name="config_corner">Rogi</string>
     <string name="config_no_support">Bieżąca kostka nie wspomaga zmieniania kolorów.</string>
 
-    <string name="sort_classic">klasycznie</string>
-    <string name="sort_shape">kształt</string>
-    <string name="sort_difficulty">trudność</string>
-    <string name="sort_author">autor</string>
-    <string name="sort_year">rok</string>
+    <string name="sort_classic">Klasycznie</string>
+    <string name="sort_shape">Kształt</string>
+    <string name="sort_difficulty">Trudność</string>
+    <string name="sort_author">Autor</string>
+    <string name="sort_year">Rok</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>
diff --git a/src/main/res/values-ru/strings.xml b/src/main/res/values-ru/strings.xml
index 14bfaef2..8128155e 100755
--- a/src/main/res/values-ru/strings.xml
+++ b/src/main/res/values-ru/strings.xml
@@ -90,11 +90,11 @@
     <string name="config_corner">Углы</string>
     <string name="config_no_support">Текущий куб не поддерживает настройку цветов.</string>
 
-    <string name="sort_classic">классик</string>
-    <string name="sort_shape">форма</string>
-    <string name="sort_difficulty">сложность</string>
-    <string name="sort_author">автор</string>
-    <string name="sort_year">год</string>
+    <string name="sort_classic">Классик</string>
+    <string name="sort_shape">Форма</string>
+    <string name="sort_difficulty">Сложность</string>
+    <string name="sort_author">Автор</string>
+    <string name="sort_year">Год</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>
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index 0537dd56..35c17e2d 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -124,11 +124,11 @@
     <string name="sort_by">Sort by</string>
     <string name="settings_title">Settings</string>
 
-    <string name="sort_classic">classic</string>
-    <string name="sort_shape">shape</string>
-    <string name="sort_difficulty">difficulty</string>
-    <string name="sort_author">author</string>
-    <string name="sort_year">year</string>
+    <string name="sort_classic">Classic</string>
+    <string name="sort_shape">Shape</string>
+    <string name="sort_difficulty">Difficulty</string>
+    <string name="sort_author">Author</string>
+    <string name="sort_year">Year</string>
 
     <string name="webview_error" translatable="false">Error Loading WebView</string>
     <string name="opengl_error" translatable="false">Error</string>
