commit b92ad5cdb0991c406a2e8ff13b232cd64c1bd53a
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Thu Jan 27 16:32:50 2022 +0100

    Download Update icons - progress.

diff --git a/src/main/java/org/distorted/network/RubikNetwork.java b/src/main/java/org/distorted/network/RubikNetwork.java
index 2a6f1ce6..0213e920 100644
--- a/src/main/java/org/distorted/network/RubikNetwork.java
+++ b/src/main/java/org/distorted/network/RubikNetwork.java
@@ -664,6 +664,8 @@ public class RubikNetwork
     {
     try
       {
+      android.util.Log.e("D", "downloading "+url);
+
       java.net.URL connectURL = new URL(url);
       HttpURLConnection conn = (HttpURLConnection) connectURL.openConnection();
       conn.setDoInput(true);
@@ -688,33 +690,43 @@ public class RubikNetwork
 
     for(int c=0; c<numC; c++)
       {
-      Bitmap icon = mUpdates.getCompletedIcon(c);
+      int iconPresent = mUpdates.getCompletedIconPresent(c);
 
-      if( icon==null )
-        {
-        String url = mUpdates.getCompletedURL(c);
-        icon = downloadIcon(url);
-        }
-      if( icon!=null )
+      if( iconPresent!=0 )
         {
-        mUpdates.setCompletedIcon(c,icon);
-        mUpdatee.iconDownloaded(c,icon);
+        Bitmap icon = mUpdates.getCompletedIcon(c);
+
+        if( icon==null )
+          {
+          String url = mUpdates.getCompletedURL(c);
+          icon = downloadIcon(url);
+          }
+        if( icon!=null )
+          {
+          mUpdates.setCompletedIcon(c,icon);
+          mUpdatee.iconDownloaded(c,icon);
+          }
         }
       }
 
     for(int s=0; s<numS; s++)
       {
-      Bitmap icon = mUpdates.getStartedIcon(s);
+      int iconPresent = mUpdates.getStartedIconPresent(s);
 
-      if( icon==null )
+      if( iconPresent!=0 )
         {
-        String url = mUpdates.getStartedURL(s);
-        icon = downloadIcon(url);
-        }
-      if( icon!=null )
-        {
-        mUpdates.setStartedIcon(s,icon);
-        mUpdatee.iconDownloaded(numC+s,icon);
+        Bitmap icon = mUpdates.getStartedIcon(s);
+
+        if( icon==null )
+          {
+          String url = mUpdates.getStartedURL(s);
+          icon = downloadIcon(url);
+          }
+        if( icon!=null )
+          {
+          mUpdates.setStartedIcon(s,icon);
+          mUpdatee.iconDownloaded(numC+s,icon);
+          }
         }
       }
     }
diff --git a/src/main/java/org/distorted/network/RubikUpdates.java b/src/main/java/org/distorted/network/RubikUpdates.java
index e3e959e7..c86689d7 100644
--- a/src/main/java/org/distorted/network/RubikUpdates.java
+++ b/src/main/java/org/distorted/network/RubikUpdates.java
@@ -35,12 +35,13 @@ public class RubikUpdates
     public final int mObjectMinorVersion;
     public final int mExtrasMinorVersion;
     public final int mPercent;
+    public final int mIconPresent;
     public final boolean mUpdateObject;
     public final boolean mUpdateExtras;
     public Bitmap mIcon;
 
     public UpdateInfo(String shortName, String longName, String description, int objectMinor,
-                      int extrasMinor, int percent, boolean updateO, boolean updateE)
+                      int extrasMinor, int percent, int iconPresent, boolean updateO, boolean updateE)
       {
       mObjectShortName    = shortName;
       mObjectLongName     = longName;
@@ -48,6 +49,7 @@ public class RubikUpdates
       mObjectMinorVersion = objectMinor;
       mExtrasMinorVersion = extrasMinor;
       mPercent            = percent;
+      mIconPresent        = iconPresent;
       mUpdateObject       = updateO;
       mUpdateExtras       = updateE;
 
@@ -89,9 +91,10 @@ public class RubikUpdates
     String objMinor    = elements[1].trim();
     String extMinor    = elements[2].trim();
     String percent     = elements[3].trim();
-    String longName    = elements[4];
-    String description = elements[5];
-    int oMinor, eMinor, oPercent;
+    String iconPresent = elements[4].trim();
+    String longName    = elements[5];
+    String description = elements[6];
+    int oMinor, eMinor, oPercent, oIcon;
 
     try { oMinor = Integer.parseInt(objMinor); }
     catch (NumberFormatException ex) { oMinor = -1; }
@@ -99,6 +102,8 @@ public class RubikUpdates
     catch (NumberFormatException ex) { eMinor = -1; }
     try { oPercent = Integer.parseInt(percent); }
     catch (NumberFormatException ex) { oPercent = -1; }
+    try { oIcon = Integer.parseInt(iconPresent); }
+    catch (NumberFormatException ex) { oIcon = 0; }
 
     if( oMinor>=0 && eMinor>=0 && oPercent>=0 )
       {
@@ -114,7 +119,7 @@ public class RubikUpdates
         }
       if( updateO || updateE )
         {
-        UpdateInfo info = new UpdateInfo(shortName,longName,description,oMinor,eMinor,oPercent,updateO,updateE);
+        UpdateInfo info = new UpdateInfo(shortName,longName,description,oMinor,eMinor,oPercent,oIcon,updateO,updateE);
         if(oPercent>=100) mCompleted.add(info);
         else              mStarted.add(info);
         }
@@ -141,7 +146,7 @@ public class RubikUpdates
       for(int line=1; line<numLines; line++)
         {
         String[] elements = lines[line].split(",");
-        if( elements.length>=6 ) parseLine(elements);
+        if( elements.length>=7 ) parseLine(elements);
         }
       }
     }
@@ -202,6 +207,20 @@ public class RubikUpdates
     return mStarted.get(ordinal).mIcon;
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int getCompletedIconPresent(int ordinal)
+    {
+    return mCompleted.get(ordinal).mIconPresent;
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int getStartedIconPresent(int ordinal)
+    {
+    return mStarted.get(ordinal).mIconPresent;
+    }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public String getCompletedURL(int ordinal)
diff --git a/src/main/res/drawable/unknown_icon.png b/src/main/res/drawable/unknown_icon.png
index 47f10873..e6359c6a 100644
Binary files a/src/main/res/drawable/unknown_icon.png and b/src/main/res/drawable/unknown_icon.png differ
