summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/GalleryActivity.java25
-rw-r--r--org.fox.ttrss/src/main/java/org/fox/ttrss/GalleryModel.java27
2 files changed, 37 insertions, 15 deletions
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/GalleryActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/GalleryActivity.java
index 89fcd59c..afd70b08 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/GalleryActivity.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/GalleryActivity.java
@@ -20,31 +20,21 @@ import androidx.core.view.WindowInsetsCompat;
import androidx.core.view.WindowInsetsControllerCompat;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
-import androidx.fragment.app.FragmentManager;
-import androidx.fragment.app.FragmentStatePagerAdapter;
import androidx.lifecycle.ViewModelProvider;
import androidx.preference.PreferenceManager;
import androidx.recyclerview.widget.DiffUtil;
-import androidx.viewpager.widget.ViewPager;
import androidx.viewpager2.widget.ViewPager2;
-import com.ToxicBakery.viewpager.transforms.DepthPageTransformer;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import org.fox.ttrss.types.GalleryEntry;
import org.fox.ttrss.util.DiffFragmentStateAdapter;
-import org.jsoup.Jsoup;
-import org.jsoup.nodes.Document;
-import org.jsoup.nodes.Element;
-import org.jsoup.select.Elements;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutionException;
-import me.relex.circleindicator.CircleIndicator;
-
public class GalleryActivity extends CommonActivity {
private final String TAG = this.getClass().getSimpleName();
@@ -284,6 +274,21 @@ public class GalleryActivity extends CommonActivity {
GalleryModel model = new ViewModelProvider(this).get(GalleryModel.class);
model.collectItems(m_content, firstSrc);
+ model.getItemsToCheck().observe(this, itemsToCheck -> {
+ Log.d(TAG, "observed items to check=" + itemsToCheck);
+
+ m_checkProgress.setMax(itemsToCheck);
+ m_checkProgress.setVisibility(View.VISIBLE);
+ m_checkProgress.setProgress(0);
+ });
+
+ model.getCheckProgress().observe(this, progress -> {
+ Log.d(TAG, "observed item check progress=" + progress);
+
+ m_checkProgress.setProgress(progress);
+ m_checkProgress.setVisibility(progress < m_checkProgress.getMax() ? View.VISIBLE : View.GONE);
+ });
+
model.getItems().observe(this, galleryEntries -> {
Log.d(TAG, "observed gallery entries=" + galleryEntries + " firstSrc=" + firstSrc);
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/GalleryModel.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/GalleryModel.java
index 16c38ed4..9486b7ed 100644
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/GalleryModel.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/GalleryModel.java
@@ -21,8 +21,6 @@ import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
-import java.net.MalformedURLException;
-import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
@@ -32,6 +30,8 @@ public class GalleryModel extends AndroidViewModel {
private final String TAG = this.getClass().getSimpleName();
private MutableLiveData<List<GalleryEntry>> m_items = new MutableLiveData<>(new ArrayList<>());
+ private MutableLiveData<Integer> m_checkProgress = new MutableLiveData<>(Integer.valueOf(0));
+ private MutableLiveData<Integer> m_itemsToCheck = new MutableLiveData<Integer>(Integer.valueOf(0));
public GalleryModel(@NonNull Application application) {
super(application);
@@ -44,6 +44,14 @@ public class GalleryModel extends AndroidViewModel {
private ExecutorService m_executor = Executors.newSingleThreadExecutor();
private Handler m_mainHandler = new Handler(Looper.getMainLooper());
+ public LiveData<Integer> getItemsToCheck() {
+ return m_itemsToCheck;
+ }
+
+ public LiveData<Integer> getCheckProgress() {
+ return m_checkProgress;
+ }
+
public void collectItems(String articleText, String srcFirst) {
Document doc = Jsoup.parse(articleText);
@@ -55,7 +63,13 @@ public class GalleryModel extends AndroidViewModel {
Elements elems = doc.select("img,video");
+ m_itemsToCheck.postValue(elems.size());
+
+ int currentItem = 0;
+
for (Element elem : elems) {
+ ++currentItem;
+
if ("video".equalsIgnoreCase(elem.tagName())) {
Element source = elem.select("source").first();
String poster = elem.attr("abs:poster");
@@ -87,7 +101,6 @@ public class GalleryModel extends AndroidViewModel {
}
}
}
-
} else {
String src = elem.attr("abs:src");
@@ -122,8 +135,10 @@ public class GalleryModel extends AndroidViewModel {
if (bmp != null && bmp.getWidth() >= HeadlinesFragment.FLAVOR_IMG_MIN_SIZE && bmp.getHeight() >= HeadlinesFragment.FLAVOR_IMG_MIN_SIZE) {
Log.d(TAG, "image matches gallery criteria, adding...");
- checkList.add(new GalleryEntry(src, GalleryEntry.GalleryEntryType.TYPE_IMAGE, null));
- m_items.postValue(checkList);
+ m_mainHandler.post(() -> {
+ checkList.add(new GalleryEntry(src, GalleryEntry.GalleryEntryType.TYPE_IMAGE, null));
+ m_items.postValue(checkList);
+ });
}
} catch (Exception e) {
e.printStackTrace();
@@ -135,6 +150,8 @@ public class GalleryModel extends AndroidViewModel {
}
}
}
+
+ m_checkProgress.postValue(currentItem);
}
}
}