commit 52d0a923e2b3ab59bd02fd098bb38c989e9db828
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Sun Jun 21 12:27:53 2020 +0100

    Improvements to the UI - make it proportional regardless of the physical screen size. (Part 7 - last 2 Dialogs)

diff --git a/src/main/java/org/distorted/dialogs/RubikDialogEffects.java b/src/main/java/org/distorted/dialogs/RubikDialogEffects.java
index 5e56b158..cadcb500 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogEffects.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogEffects.java
@@ -58,17 +58,14 @@ public class RubikDialogEffects extends AppCompatDialogFragment implements SeekB
   private void addSettingsSection(FragmentActivity act, LinearLayout layout, int index)
     {
     BaseEffect.Type beType = BaseEffect.Type.getType(index);
-    DisplayMetrics metrics = act.getResources().getDisplayMetrics();
-    final float scale = metrics.density;
-    mTextSize = metrics.widthPixels * RubikActivity.MENU_SMALL_TEXT_SIZE;
 
-    int textH= (int)(mTextSize);
-    int layoH= (int)(1.2f*mTextSize);
-    int margH=10;
+    int textH= (int)(1.35f*mTextSize);
+    float A= 1.2f;
+    float B= 0.25f;
 
     ///// OUTER LAYOUT ///////////////////////////////////////////////////////////////////
 
-    int margin = (int)(scale*margH + 0.5f);
+    int margin = (int)(B*textH);
     int color  = ContextCompat.getColor(act, R.color.grey);
     LinearLayout outerLayout = new LinearLayout(act);
     LinearLayout.LayoutParams outerLayoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT, 0.5f);
@@ -85,8 +82,8 @@ public class RubikDialogEffects extends AppCompatDialogFragment implements SeekB
 
     ///// TEXT ///////////////////////////////////////////////////////////////////////////
 
-    int layoutHeight = (int)(scale*textH + 0.5f);
-    int padding      = (int)(scale*10    + 0.5f);
+    int layoutHeight = (int)(A*textH);
+    int padding      = (int)(B*textH);
 
     LinearLayout.LayoutParams textParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,layoutHeight);
 
@@ -100,7 +97,7 @@ public class RubikDialogEffects extends AppCompatDialogFragment implements SeekB
 
     ///// INNER LAYOUT1 //////////////////////////////////////////////////////////////////
 
-    int innerLayout1Height = (int)(scale*layoH + 0.5f);
+    int innerLayout1Height = (int)((A+B)*textH);
     LinearLayout innerLayout1 = new LinearLayout(act);
     LinearLayout.LayoutParams innerLayout1Params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,innerLayout1Height);
 
@@ -111,7 +108,7 @@ public class RubikDialogEffects extends AppCompatDialogFragment implements SeekB
 
     ///// STUFF INSIDE INNER LAYOUT1 /////////////////////////////////////////////////////
 
-    int text1Padding = (int)(scale*5 + 0.5f);
+    int text1Padding = (int)(B*textH);
     LinearLayout.LayoutParams text1LayoutParams = new LinearLayout.LayoutParams(0,layoutHeight,0.25f);
 
     TextView text1View = new TextView(act);
@@ -122,7 +119,7 @@ public class RubikDialogEffects extends AppCompatDialogFragment implements SeekB
     text1View.setPadding(text1Padding,0,text1Padding,0);
     innerLayout1.addView(text1View);
     //////////////////////////////////////////////////////////////////
-    int text2Padding = (int)(scale*5 + 0.5f);
+    int text2Padding = (int)(B*textH);
     LinearLayout.LayoutParams text2LayoutParams = new LinearLayout.LayoutParams(0,layoutHeight,0.25f);
 
     mDurationText[index] = new TextView(act);
@@ -132,7 +129,7 @@ public class RubikDialogEffects extends AppCompatDialogFragment implements SeekB
     mDurationText[index].setPadding(text2Padding,0,text2Padding,0);
     innerLayout1.addView(mDurationText[index]);
     //////////////////////////////////////////////////////////////////
-    int seekPadding = (int)(scale*10 + 0.5f);
+    int seekPadding = (int)(B*textH);
     LinearLayout.LayoutParams seekLayoutParams = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.MATCH_PARENT,0.5f);
 
     SeekBar seekBar = new SeekBar(act);
@@ -146,7 +143,7 @@ public class RubikDialogEffects extends AppCompatDialogFragment implements SeekB
 
     ///// INNER LAYOUT2 //////////////////////////////////////////////////////////////////
 
-    int innerLayout2Height = (int)(scale*layoH + 0.5f);
+    int innerLayout2Height = (int)((A+B)*textH);
     LinearLayout innerLayout2 = new LinearLayout(act);
     LinearLayout.LayoutParams innerLayout2Params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,innerLayout2Height);
 
@@ -157,7 +154,7 @@ public class RubikDialogEffects extends AppCompatDialogFragment implements SeekB
 
     ///// STUFF INSIDE INNER LAYOUT2 /////////////////////////////////////////////////////
 
-    int text3Padding = (int)(scale*5 + 0.5f);
+    int text3Padding = (int)(B*textH);
     LinearLayout.LayoutParams text3LayoutParams = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.MATCH_PARENT,0.25f);
 
     TextView text3View = new TextView(act);
@@ -168,8 +165,8 @@ public class RubikDialogEffects extends AppCompatDialogFragment implements SeekB
     text3View.setPadding(text3Padding,0,text3Padding,0);
     innerLayout2.addView(text3View);
     //////////////////////////////////////////////////////////////////
-    int spinnerPadding = (int)(scale*10 + 0.5f);
-    int spinnerMargin  = (int)(scale* 3 + 0.5f);
+    int spinnerPadding = (int)(B*textH);
+    int spinnerMargin  = (int)(B*0.5f*textH);
     LinearLayout.LayoutParams spinnerLayoutParams = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.MATCH_PARENT,0.75f);
     spinnerLayoutParams.topMargin    =   spinnerMargin;
     spinnerLayoutParams.bottomMargin =   spinnerMargin;
@@ -218,6 +215,8 @@ public class RubikDialogEffects extends AppCompatDialogFragment implements SeekB
     final float titleSize= displaymetrics.widthPixels * RubikActivity.MENU_BIG_TEXT_SIZE;
     final float okSize   = displaymetrics.widthPixels * RubikActivity.MENU_MEDIUM_TEXT_SIZE;
 
+    mTextSize = displaymetrics.widthPixels * RubikActivity.MENU_SMALL_TEXT_SIZE;
+
     tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, titleSize);
     tv.setText(R.string.effects);
     builder.setCustomTitle(tv);
diff --git a/src/main/java/org/distorted/dialogs/RubikDialogPattern.java b/src/main/java/org/distorted/dialogs/RubikDialogPattern.java
index 87a0f872..1945b0f6 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogPattern.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogPattern.java
@@ -21,6 +21,7 @@ package org.distorted.dialogs;
 
 import android.app.Dialog;
 import android.content.Context;
+import android.content.DialogInterface;
 import android.os.Bundle;
 import androidx.annotation.NonNull;
 import androidx.fragment.app.FragmentActivity;
@@ -29,14 +30,17 @@ import androidx.appcompat.app.AlertDialog;
 import androidx.appcompat.app.AppCompatDialogFragment;
 import com.google.android.material.tabs.TabLayout;
 import android.util.DisplayMetrics;
+import android.util.TypedValue;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.Window;
 import android.view.WindowManager;
+import android.widget.Button;
 import android.widget.ImageView;
 import android.widget.TextView;
 
 import org.distorted.main.R;
+import org.distorted.main.RubikActivity;
 import org.distorted.objects.RubikObjectList;
 import org.distorted.patterns.RubikPatternList;
 
@@ -55,8 +59,14 @@ public class RubikDialogPattern extends AppCompatDialogFragment
     FragmentActivity act = getActivity();
     AlertDialog.Builder builder = new AlertDialog.Builder(act);
 
+    DisplayMetrics displaymetrics = new DisplayMetrics();
+    act.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
+    final float titleSize= displaymetrics.widthPixels * RubikActivity.MENU_BIG_TEXT_SIZE;
+    final float okSize   = displaymetrics.widthPixels * RubikActivity.MENU_MEDIUM_TEXT_SIZE;
+
     LayoutInflater layoutInflater = act.getLayoutInflater();
     TextView tv = (TextView) layoutInflater.inflate(R.layout.dialog_title, null);
+    tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, titleSize);
     tv.setText(R.string.choose_pattern);
     builder.setCustomTitle(tv);
 
@@ -76,6 +86,9 @@ public class RubikDialogPattern extends AppCompatDialogFragment
     final View view = inflater.inflate(R.layout.dialog_tabbed, null);
     builder.setView(view);
 
+ //   TabLayout tl = view.findViewById(R.id.sliding_tabs);
+
+
     ViewPager viewPager = view.findViewById(R.id.viewpager);
     TabLayout tabLayout = view.findViewById(R.id.sliding_tabs);
     mPagerAdapter = new RubikDialogPatternPagerAdapter(act, viewPager, this);
@@ -108,6 +121,16 @@ public class RubikDialogPattern extends AppCompatDialogFragment
       window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
       }
 
+    dialog.setOnShowListener(new DialogInterface.OnShowListener()
+      {
+      @Override
+      public void onShow(DialogInterface dialog)
+        {
+        Button btnPositive = ((AlertDialog)dialog).getButton(Dialog.BUTTON_POSITIVE);
+        btnPositive.setTextSize(TypedValue.COMPLEX_UNIT_PX, okSize);
+        }
+      });
+
     return dialog;
     }
 
diff --git a/src/main/java/org/distorted/dialogs/RubikDialogScores.java b/src/main/java/org/distorted/dialogs/RubikDialogScores.java
index d9dfaa67..806bbb64 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogScores.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogScores.java
@@ -28,14 +28,19 @@ import androidx.viewpager.widget.ViewPager;
 import androidx.appcompat.app.AlertDialog;
 import androidx.appcompat.app.AppCompatDialogFragment;
 import com.google.android.material.tabs.TabLayout;
+
+import android.util.DisplayMetrics;
+import android.util.TypedValue;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.Window;
 import android.view.WindowManager;
+import android.widget.Button;
 import android.widget.ImageView;
 import android.widget.TextView;
 
 import org.distorted.main.R;
+import org.distorted.main.RubikActivity;
 import org.distorted.objects.RubikObjectList;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -53,8 +58,14 @@ public class RubikDialogScores extends AppCompatDialogFragment
     FragmentActivity act = getActivity();
     AlertDialog.Builder builder = new AlertDialog.Builder(act);
 
+    DisplayMetrics displaymetrics = new DisplayMetrics();
+    act.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
+    final float titleSize= displaymetrics.widthPixels * RubikActivity.MENU_BIG_TEXT_SIZE;
+    final float okSize   = displaymetrics.widthPixels * RubikActivity.MENU_MEDIUM_TEXT_SIZE;
+
     LayoutInflater layoutInflater = act.getLayoutInflater();
     TextView tv = (TextView) layoutInflater.inflate(R.layout.dialog_title, null);
+    tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, titleSize);
     tv.setText(R.string.scores);
     builder.setCustomTitle(tv);
 
@@ -122,6 +133,16 @@ public class RubikDialogScores extends AppCompatDialogFragment
       window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
       }
 
+    dialog.setOnShowListener(new DialogInterface.OnShowListener()
+      {
+      @Override
+      public void onShow(DialogInterface dialog)
+        {
+        Button btnPositive = ((AlertDialog)dialog).getButton(Dialog.BUTTON_POSITIVE);
+        btnPositive.setTextSize(TypedValue.COMPLEX_UNIT_PX, okSize);
+        }
+      });
+
     return dialog;
     }
   }
diff --git a/src/main/res/layout/dialog_tabbed.xml b/src/main/res/layout/dialog_tabbed.xml
index 0eccb3dd..4fcba905 100644
--- a/src/main/res/layout/dialog_tabbed.xml
+++ b/src/main/res/layout/dialog_tabbed.xml
@@ -8,7 +8,7 @@
     <com.google.android.material.tabs.TabLayout
         android:id="@+id/sliding_tabs"
         android:layout_width="match_parent"
-        android:layout_height="32dp"
+        android:layout_height="wrap_content"
         android:theme="@style/Theme.AppCompat.NoActionBar">
     </com.google.android.material.tabs.TabLayout>
 
