commit c99db49349a870ddd0b572ef8182320942da1a9f
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Sun Jan 23 01:08:49 2022 +0100

    Progress downloading updates: dialog.

diff --git a/src/main/java/org/distorted/dialogs/RubikDialogUpdates.java b/src/main/java/org/distorted/dialogs/RubikDialogUpdates.java
index c5b09945..8e87ffa5 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogUpdates.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogUpdates.java
@@ -21,15 +21,10 @@ package org.distorted.dialogs;
 
 import android.app.Dialog;
 import android.content.DialogInterface;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
 import android.os.Bundle;
-import android.text.method.LinkMovementMethod;
-import android.text.method.MovementMethod;
 import android.util.DisplayMetrics;
 import android.util.TypedValue;
 import android.view.LayoutInflater;
-import android.view.View;
 import android.view.Window;
 import android.widget.Button;
 import android.widget.TextView;
@@ -46,7 +41,7 @@ import org.distorted.network.RubikUpdates;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-public class RubikDialogUpdates extends AppCompatDialogFragment
+public class RubikDialogUpdates extends AppCompatDialogFragment implements RubikNetwork.Updatee
   {
   @NonNull
   @Override
@@ -100,11 +95,18 @@ public class RubikDialogUpdates extends AppCompatDialogFragment
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public void setUpdates(RubikUpdates updates)
+  public void receiveUpdate(RubikUpdates updates)
     {
 
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public void errorUpdate()
+    {
+    android.util.Log.e("D", "Dialog: Error receiving update");
+    }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public static String getDialogTag()
diff --git a/src/main/java/org/distorted/network/RubikUpdates.java b/src/main/java/org/distorted/network/RubikUpdates.java
index 4b4fcd9a..e6b32fc3 100644
--- a/src/main/java/org/distorted/network/RubikUpdates.java
+++ b/src/main/java/org/distorted/network/RubikUpdates.java
@@ -29,30 +29,36 @@ public class RubikUpdates
 {
   public static class UpdateInfo
     {
-    public final String mObjectName;
-    public final int mMinorVersion;
-
-    public UpdateInfo(String name,int version)
+    public final String mObjectShortName;
+    public final String mObjectLongName;
+    public final String mDescription;
+    public final int mObjectMinorVersion;
+    public final int mExtrasMinorVersion;
+    public final boolean mUpdateObject;
+    public final boolean mUpdateExtras;
+
+    public UpdateInfo(String shortName, String longName, String description, int objectMinor, int extrasMinor, boolean updateO, boolean updateE)
       {
-      mObjectName  = name;
-      mMinorVersion= version;
+      mObjectShortName    = shortName;
+      mObjectLongName     = longName;
+      mDescription        = description;
+      mObjectMinorVersion = objectMinor;
+      mExtrasMinorVersion = extrasMinor;
+      mUpdateObject       = updateO;
+      mUpdateExtras       = updateE;
       }
     }
 
+  private int mNumberOfUpdates;
   private String mUrl;
-  private final ArrayList<UpdateInfo> mNewObjects;
-  private final ArrayList<UpdateInfo> mNewExtras;
-  private final ArrayList<UpdateInfo> mUpdObjects;
-  private final ArrayList<UpdateInfo> mUpdExtras;
+  private final ArrayList<UpdateInfo> mNew, mUpd;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public RubikUpdates()
     {
-    mNewObjects = new ArrayList<>();
-    mNewExtras  = new ArrayList<>();
-    mUpdObjects = new ArrayList<>();
-    mUpdExtras  = new ArrayList<>();
+    mNew = new ArrayList<>();
+    mUpd = new ArrayList<>();
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -60,7 +66,13 @@ public class RubikUpdates
   private String debug(ArrayList<UpdateInfo> list)
     {
     String ret = "";
-    for( UpdateInfo info : list) ret += ("  "+info.mObjectName+" "+info.mMinorVersion);
+
+    for( UpdateInfo info : list)
+      {
+      ret += (info.mObjectShortName+" "+info.mObjectLongName+" "+info.mDescription+" ");
+      ret += (info.mObjectMinorVersion+" "+info.mExtrasMinorVersion+" "+info.mUpdateObject+" "+info.mUpdateExtras+" , ");
+      }
+
     return ret;
     }
 
@@ -68,9 +80,12 @@ public class RubikUpdates
 
   private void parseLine(String[] elements)
     {
-    String objName  = elements[0];
-    String objMinor = elements[1];
-    String extMinor = elements[2];
+    boolean added = false;
+    String shortName   = elements[0];
+    String objMinor    = elements[1];
+    String extMinor    = elements[2];
+    String longName    = elements[3];
+    String description = elements[4];
     int oMinor, eMinor;
 
     try { oMinor = Integer.parseInt(objMinor); }
@@ -78,43 +93,33 @@ public class RubikUpdates
     try { eMinor = Integer.parseInt(extMinor); }
     catch (NumberFormatException ex) { eMinor = -1; }
 
-    int objOrdinal = RubikObjectList.getOrdinal(objName.toUpperCase());
-
-    if( oMinor>=0 )
+    if( oMinor>=0 && eMinor>=0 )
       {
-      if( objOrdinal>=0 )
-        {
-        int localObjectMinor = RubikObjectList.getLocalObjectMinor(objOrdinal);
-        if( localObjectMinor>=0 && localObjectMinor<oMinor )
-          {
-          UpdateInfo info = new UpdateInfo(objName,oMinor);
-          mUpdObjects.add(info);
-          }
-        }
-      else
-        {
-        UpdateInfo info = new UpdateInfo(objName,oMinor);
-        mNewObjects.add(info);
-        }
-      }
+      int objOrdinal = RubikObjectList.getOrdinal(shortName.toUpperCase());
 
-    if( eMinor>=0 )
-      {
       if( objOrdinal>=0 )
         {
+        int localObjectMinor = RubikObjectList.getLocalObjectMinor(objOrdinal);
         int localExtrasMinor = RubikObjectList.getLocalExtrasMinor(objOrdinal);
-        if( localExtrasMinor>=0 && localExtrasMinor<eMinor )
+        boolean updateO = localObjectMinor<oMinor;
+        boolean updateE = localExtrasMinor<eMinor;
+
+        if( updateO || updateE )
           {
-          UpdateInfo info = new UpdateInfo(objName,eMinor);
-          mUpdExtras.add(info);
+          UpdateInfo info = new UpdateInfo(shortName,longName,description,oMinor,eMinor,updateO,updateE);
+          mUpd.add(info);
+          added = true;
           }
         }
       else
         {
-        UpdateInfo info = new UpdateInfo(objName,eMinor);
-        mNewExtras.add(info);
+        UpdateInfo info = new UpdateInfo(shortName,longName,description,oMinor,eMinor,true,true);
+        mNew.add(info);
+        added = true;
         }
       }
+
+    if( added ) mNumberOfUpdates++;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -123,10 +128,10 @@ public class RubikUpdates
     {
     android.util.Log.e("D", updates);
 
-    mNewObjects.clear();
-    mNewExtras.clear();
-    mUpdObjects.clear();
-    mUpdExtras.clear();
+    mNumberOfUpdates = 0;
+
+    mNew.clear();
+    mUpd.clear();
 
     String[] lines = updates.split("\n");
     int numLines = lines.length;
@@ -136,7 +141,7 @@ public class RubikUpdates
       mUrl = lines[0];
       for(int line=1; line<numLines; line++)
         {
-        String[] elements = lines[line].split(" ");
+        String[] elements = lines[line].split(",");
         if( elements.length>=3 ) parseLine(elements);
         }
       }
@@ -146,12 +151,7 @@ public class RubikUpdates
 
   public int getNumberOfUpdates()
     {
-    int newO = mNewObjects.size();
-    int newE = mNewExtras.size();
-    int updO = mUpdObjects.size();
-    int updE = mUpdExtras.size();
-
-    return newO+newE+updO+updE;
+    return mNumberOfUpdates;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -159,9 +159,7 @@ public class RubikUpdates
   public void showDebug()
     {
     android.util.Log.e("D", "url: "+mUrl);
-    android.util.Log.e("D", "new objects: "+debug(mNewObjects));
-    android.util.Log.e("D", "new extras : "+debug(mNewExtras ));
-    android.util.Log.e("D", "upd objects: "+debug(mUpdObjects));
-    android.util.Log.e("D", "upd extras : "+debug(mUpdExtras ));
+    android.util.Log.e("D", "new objects: "+debug(mNew));
+    android.util.Log.e("D", "upd objects: "+debug(mUpd));
     }
 }
\ No newline at end of file
diff --git a/src/main/java/org/distorted/screens/RubikScreenPlay.java b/src/main/java/org/distorted/screens/RubikScreenPlay.java
index f1615648..688926a7 100644
--- a/src/main/java/org/distorted/screens/RubikScreenPlay.java
+++ b/src/main/java/org/distorted/screens/RubikScreenPlay.java
@@ -351,7 +351,6 @@ public class RubikScreenPlay extends RubikScreenBase implements RubikNetwork.Upd
         {
         if( mObjectPopup!=null ) mObjectPopup.dismiss();
         RubikDialogUpdates uDiag = new RubikDialogUpdates();
-        uDiag.setUpdates(mUpdates);
         uDiag.show( act.getSupportFragmentManager(), RubikDialogUpdates.getDialogTag() );
         }
       });
@@ -706,6 +705,8 @@ public class RubikScreenPlay extends RubikScreenBase implements RubikNetwork.Upd
 
   public void receiveUpdate(RubikUpdates updates)
     {
+    updates.showDebug();
+
     mUpdates = updates;
     int num = mUpdates.getNumberOfUpdates();
 
@@ -721,6 +722,6 @@ public class RubikScreenPlay extends RubikScreenBase implements RubikNetwork.Upd
 
   public void errorUpdate()
     {
-    android.util.Log.e("D", "Error receiving update");
+    android.util.Log.e("D", "Screen: Error receiving update");
     }
   }
