diff options
Diffstat (limited to 'org.fox.ttrss/src')
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> |