diff options
| -rwxr-xr-x | org.fox.ttrss/src/main/java/org/fox/ttrss/GalleryActivity.java | 25 | ||||
| -rw-r--r-- | org.fox.ttrss/src/main/java/org/fox/ttrss/GalleryModel.java | 27 |
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); } } } |