commit 179f7189d36028a5e77d20c1383a3962f4811830
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Tue Jan 25 15:43:49 2022 +0100

    Downloading updates: dialog progress.

diff --git a/src/main/java/org/distorted/dialogs/RubikDialogUpdates.java b/src/main/java/org/distorted/dialogs/RubikDialogUpdates.java
index b08aa287..06643080 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogUpdates.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogUpdates.java
@@ -20,7 +20,6 @@
 package org.distorted.dialogs;
 
 import android.app.Dialog;
-import android.content.Context;
 import android.content.DialogInterface;
 import android.os.Bundle;
 import android.util.DisplayMetrics;
@@ -28,10 +27,8 @@ 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.LinearLayout;
-import android.widget.ScrollView;
 import android.widget.TextView;
 
 import androidx.annotation.NonNull;
@@ -49,22 +46,23 @@ import org.distorted.network.RubikUpdates;
 public class RubikDialogUpdates extends AppCompatDialogFragment implements RubikNetwork.Updatee
   {
   private TextView mText;
-  private ScrollView mScroll;
   private LinearLayout mLayout;
   private int mMargin, mSize, mFontSize;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  private View createView(FragmentActivity act, LayoutInflater inflater, float size)
+  private View createView(FragmentActivity act, LayoutInflater inflater, float size, int minH)
     {
     final View view = inflater.inflate(R.layout.dialog_updates, null);
 
     mLayout= view.findViewById(R.id.updates_main_layout);
-    mScroll= view.findViewById(R.id.updates_scroll);
     mText  = view.findViewById(R.id.updates_message);
     mText.setTextSize(TypedValue.COMPLEX_UNIT_PX, size);
     mText.setText( act.getString(R.string.downloading) );
 
+    mLayout.setMinimumHeight(minH);
+    mText.setMinimumHeight(minH);
+
     return view;
     }
 
@@ -103,7 +101,9 @@ public class RubikDialogUpdates extends AppCompatDialogFragment implements Rubik
         }
       });
 
-    View view = createView(act,inflater,okSize);
+    int minH = (int)(0.35f*h);
+    View view = createView(act,inflater,okSize,minH);
+    view.setMinimumHeight(minH);
     builder.setView(view);
 
     Dialog dialog = builder.create();
@@ -133,46 +133,21 @@ public class RubikDialogUpdates extends AppCompatDialogFragment implements Rubik
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  @Override
-  public void onResume()
+  private void receiveUpdate(RubikUpdates updates, FragmentActivity act)
     {
-    super.onResume();
-
-    Window window = getDialog().getWindow();
-    Context context = getContext();
-
-    if( window!=null && context!=null )
-      {
-      DisplayMetrics metrics = context.getResources().getDisplayMetrics();
-      final float height= metrics.heightPixels;
-
-      WindowManager.LayoutParams params = window.getAttributes();
-      params.width = WindowManager.LayoutParams.WRAP_CONTENT;
-      params.height = (int)(0.75f*height);
-      window.setAttributes(params);
-
-      int textHeight = (int)(0.75f*params.height);
-      mText.setHeight(textHeight);
-      mLayout.setMinimumHeight(textHeight);
-      }
-    }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  public void receiveUpdate(RubikUpdates updates)
-    {
-    FragmentActivity act = getActivity();
     int numN = updates.getNewNumber();
     int numU = updates.getUpdNumber();
     int num = numN+numU;
 
     if( num<=0 )
       {
-      mScroll.setVerticalScrollBarEnabled(false);
+
       mText.setText(act.getString(R.string.no_updates));
       }
     else
       {
+      //mText.setText("Downloading...");
+
       int imagH = (int)(mSize*1.00f);
       int textH = (int)(mSize*0.23f);
       int buttH = (int)(mSize*0.49f);
@@ -209,11 +184,29 @@ public class RubikDialogUpdates extends AppCompatDialogFragment implements Rubik
       }
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public void receiveUpdate(RubikUpdates updates)
+    {
+    FragmentActivity act = getActivity();
+
+    if( act!=null )
+      {
+      act.runOnUiThread(new Runnable()
+        {
+        @Override
+        public void run()
+          {
+          receiveUpdate(updates,act);
+          }
+        });
+      }
+    }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public void errorUpdate()
     {
-    mScroll.setVerticalScrollBarEnabled(false);
     mText.setText("Network error");
     }
 
diff --git a/src/main/java/org/distorted/screens/RubikScreenPlay.java b/src/main/java/org/distorted/screens/RubikScreenPlay.java
index 86765e1b..43614531 100644
--- a/src/main/java/org/distorted/screens/RubikScreenPlay.java
+++ b/src/main/java/org/distorted/screens/RubikScreenPlay.java
@@ -19,6 +19,9 @@
 
 package org.distorted.screens;
 
+import java.lang.ref.WeakReference;
+
+import android.app.Activity;
 import android.content.Context;
 import android.content.SharedPreferences;
 import android.content.res.Resources;
@@ -86,6 +89,7 @@ public class RubikScreenPlay extends RubikScreenBase implements RubikNetwork.Upd
   private boolean mShouldReactToEndOfScrambling;
   private int mBottomHeight;
   private float mScreenWidth;
+  private WeakReference<RubikActivity> mWeakAct;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -98,6 +102,7 @@ public class RubikScreenPlay extends RubikScreenBase implements RubikNetwork.Upd
 
   void enterScreen(final RubikActivity act)
     {
+    mWeakAct = new WeakReference<>(act);
     int numObjects = RubikObjectList.getNumObjects();
     mScreenWidth = act.getScreenWidthInPixels();
     mUpperBarHeight = act.getHeightUpperBar();
@@ -707,21 +712,33 @@ public class RubikScreenPlay extends RubikScreenBase implements RubikNetwork.Upd
     {
     updates.showDebug();
 
-    int numN = updates.getNewNumber();
-    int numU = updates.getUpdNumber();
-    int num = numN+numU;
+    Activity act = mWeakAct.get();
 
-    if( num>0 )
-      {
-      String shownNum = String.valueOf(num);
-      mBubbleUpdates.setText(shownNum);
-      mBubbleUpdates.setVisibility(View.VISIBLE);
-      int height = (int)(0.05f*mScreenWidth);
-      mBubbleUpdates.setTextSize(TypedValue.COMPLEX_UNIT_PX,height);
-      }
-    else
+    if( act!=null )
       {
-      mBubbleUpdates.setVisibility(View.INVISIBLE);
+      act.runOnUiThread(new Runnable()
+        {
+        @Override
+        public void run()
+          {
+          int numN = updates.getNewNumber();
+          int numU = updates.getUpdNumber();
+          int num = numN+numU;
+
+          if( num>0 )
+            {
+            String shownNum = String.valueOf(num);
+            mBubbleUpdates.setText(shownNum);
+            mBubbleUpdates.setVisibility(View.VISIBLE);
+            int height = (int)(0.05f*mScreenWidth);
+            mBubbleUpdates.setTextSize(TypedValue.COMPLEX_UNIT_PX,height);
+            }
+         else
+            {
+            mBubbleUpdates.setVisibility(View.INVISIBLE);
+            }
+          }
+        });
       }
     }
 
diff --git a/src/main/res/layout/dialog_updates.xml b/src/main/res/layout/dialog_updates.xml
index 09438aa4..c7d76254 100644
--- a/src/main/res/layout/dialog_updates.xml
+++ b/src/main/res/layout/dialog_updates.xml
@@ -2,15 +2,15 @@
 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/updates_scroll"
     android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:paddingLeft="10dp"
-    android:paddingRight="10dp">
+    android:layout_height="match_parent"
+    android:background="@color/black"
+    android:layout_marginLeft="10dp"
+    android:layout_marginRight="10dp">
 
     <LinearLayout
         android:id="@+id/updates_main_layout"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:background="@color/black"
         android:paddingBottom="10dp"
         android:orientation="vertical">
 
diff --git a/src/main/res/layout/dialog_updates_pane.xml b/src/main/res/layout/dialog_updates_pane.xml
index 083103c8..33c3d29f 100644
--- a/src/main/res/layout/dialog_updates_pane.xml
+++ b/src/main/res/layout/dialog_updates_pane.xml
@@ -26,13 +26,15 @@
     		android:gravity="center_vertical"
     		android:layout_width="match_parent"
     		android:layout_height="wrap_content"
+    		android:singleLine="true"
     		android:textStyle="bold"/>
 
         <TextView
     		android:id="@+id/updates_pane_description"
     		android:gravity="center_vertical"
     		android:layout_width="wrap_content"
-    		android:layout_height="wrap_content"/>
+    		android:layout_height="wrap_content"
+    		android:singleLine="true"/>
 
     	<Button
              android:id="@+id/updates_pane_button"
