From 4a37a4dc89c721be9ae4b822b2d468ad4a77699b Mon Sep 17 00:00:00 2001
From: FurWaz <fur.waz06@gmail.com>
Date: Tue, 13 Dec 2022 13:26:47 +0100
Subject: [PATCH] Added image preloading to avoid lag

---
 .../java/com/furwaz/roomview/BuildingView.java | 18 ++++++++++++++++++
 .../java/com/furwaz/roomview/ZoneView.java     | 13 +++++++++++++
 2 files changed, 31 insertions(+)

diff --git a/Sources/app/src/main/java/com/furwaz/roomview/BuildingView.java b/Sources/app/src/main/java/com/furwaz/roomview/BuildingView.java
index 63da2cb..ba2e588 100644
--- a/Sources/app/src/main/java/com/furwaz/roomview/BuildingView.java
+++ b/Sources/app/src/main/java/com/furwaz/roomview/BuildingView.java
@@ -7,10 +7,16 @@ import android.os.Bundle;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
 import Common.BuildingManager;
 import Popups.DirectionsPopup;
 import Popups.GotoPopup;
 import Structures.BuildingInfo;
+import Structures.PhotoInfo;
+import Structures.RoomInfo;
+import Structures.ZoneInfo;
 
 public class BuildingView extends AppCompatActivity {
     BuildingInfo building = null;
@@ -41,6 +47,18 @@ public class BuildingView extends AppCompatActivity {
         tile_directions.setOnClickListener(view -> {
             showDirectionsPopup();
         });
+
+        // pre-load all the building's photos (to make the app faster)
+        ExecutorService executor = Executors.newSingleThreadExecutor();
+        executor.execute(() -> {
+            for (RoomInfo room: building.getRooms()) {
+                for (ZoneInfo zone : room.getZones()) {
+                    for (PhotoInfo photo : zone.getPhotos()) {
+                        photo.getBitmap();
+                    }
+                }
+            }
+        });
     }
 
     protected void showGotoPopup() {
diff --git a/Sources/app/src/main/java/com/furwaz/roomview/ZoneView.java b/Sources/app/src/main/java/com/furwaz/roomview/ZoneView.java
index 79c3177..afa9b9b 100644
--- a/Sources/app/src/main/java/com/furwaz/roomview/ZoneView.java
+++ b/Sources/app/src/main/java/com/furwaz/roomview/ZoneView.java
@@ -16,6 +16,9 @@ import android.widget.LinearLayout;
 import android.widget.TextView;
 import android.widget.Toast;
 
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
 import Common.BuildingManager;
 import Common.Coord;
 import Popups.PhotoInfoPopup;
@@ -100,6 +103,16 @@ public class ZoneView extends AppCompatActivity {
             zone = null;
         }
 
+        // pre-load all the zones's photos (to make the app faster)
+        ExecutorService executor = Executors.newSingleThreadExecutor();
+        executor.execute(() -> {
+            for (ZoneInfo zone : room.getZones()) {
+                for (PhotoInfo photo : zone.getPhotos()) {
+                    photo.getBitmap();
+                }
+            }
+        });
+
         // set the left-right buttons
         ImageButton btn_l = findViewById(R.id.btn_turn_l);
         ImageButton btn_r = findViewById(R.id.btn_turn_r);
-- 
GitLab