summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--org.fox.ttrss/src/main/java/org/fox/ttrss/ApiCommon.java1
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/FeedsFragment.java26
-rwxr-xr-xorg.fox.ttrss/src/main/res/layout/fragment_feeds.xml10
3 files changed, 33 insertions, 4 deletions
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/ApiCommon.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/ApiCommon.java
index 3bbf4df9..17d0c75a 100644
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/ApiCommon.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/ApiCommon.java
@@ -149,6 +149,7 @@ public class ApiCommon {
OkHttpProgressGlideModule.ResponseProgressListener listener = new OkHttpProgressGlideModule.ResponseProgressListener() {
@Override
public void update(HttpUrl url, long bytesRead, long contentLength) {
+ // Log.d(TAG, "[progress] " + url + " " + bytesRead + " of " + contentLength);
if (contentLength > 0)
caller.notifyProgress((int) (bytesRead * 100f / contentLength));
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsFragment.java
index 07bffaef..03c2a076 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsFragment.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsFragment.java
@@ -34,6 +34,7 @@ import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.materialswitch.MaterialSwitch;
+import com.google.android.material.progressindicator.LinearProgressIndicator;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
@@ -63,6 +64,7 @@ public class FeedsFragment extends Fragment implements OnSharedPreferenceChangeL
protected FeedsAdapter m_adapter;
private RecyclerView m_list;
private RecyclerView.LayoutManager m_layoutManager;
+ private LinearProgressIndicator m_loadingProgress;
public void initialize(@NonNull Feed rootFeed, boolean enableParentBtn) {
Log.d(TAG, "initialize, feed=" + rootFeed);
@@ -249,6 +251,8 @@ public class FeedsFragment extends Fragment implements OnSharedPreferenceChangeL
m_swipeLayout.setOnRefreshListener(this::refresh);
+ m_loadingProgress = view.findViewById(R.id.loading_progress);
+
m_list = view.findViewById(R.id.feeds);
registerForContextMenu(m_list);
@@ -288,15 +292,29 @@ public class FeedsFragment extends Fragment implements OnSharedPreferenceChangeL
FeedsModel model = new ViewModelProvider(this).get(FeedsModel.class);
- model.getUpdatesData().observe(getActivity(), lastUpdate -> {
+ model.getUpdatesData().observe(m_activity, lastUpdate -> {
Log.d(TAG, "observed update=" + lastUpdate);
});
- model.getIsLoading().observe(getActivity(), isLoading -> {
+ model.getLoadingProgress().observe(m_activity, progress -> {
+ Log.d(TAG, "observed feeds loading progress=" + progress);
+
+ if (isAdded() && m_loadingProgress != null) {
+ m_loadingProgress.setVisibility(progress < 100 ? View.VISIBLE : View.GONE);
+ m_loadingProgress.setProgress(progress);
+ }
+ });
+
+ model.getIsLoading().observe(m_activity, isLoading -> {
Log.d(TAG, "observed isLoading=" + isLoading);
- if (isAdded() && m_swipeLayout != null)
- m_swipeLayout.setRefreshing(isLoading);
+ if (isAdded()) {
+ if (m_swipeLayout != null)
+ m_swipeLayout.setRefreshing(isLoading);
+
+ if (m_loadingProgress != null && !isLoading)
+ m_loadingProgress.setVisibility(View.GONE);
+ }
});
model.getFeeds().observe(getActivity(), feeds -> {
diff --git a/org.fox.ttrss/src/main/res/layout/fragment_feeds.xml b/org.fox.ttrss/src/main/res/layout/fragment_feeds.xml
index 9f57dda2..277d5d3f 100755
--- a/org.fox.ttrss/src/main/res/layout/fragment_feeds.xml
+++ b/org.fox.ttrss/src/main/res/layout/fragment_feeds.xml
@@ -60,6 +60,16 @@
android:textAppearance="?attr/textAppearanceTitleSmall"
android:textColor="?attr/colorOnSurfaceVariant"/>
</LinearLayout>
+
+ <com.google.android.material.progressindicator.LinearProgressIndicator
+ android:id="@+id/loading_progress"
+ android:max="100"
+ android:progress="50"
+ android:visibility="gone"
+ android:indeterminate="false"
+ android:layout_gravity="bottom"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content" />
</FrameLayout>
</com.google.android.material.appbar.AppBarLayout>