From b6bbcf5afb14701524570a5aad97ea6418ed1c71 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Sat, 21 Mar 2020 19:25:54 +0100 Subject: Made sure that all fragments have a progress bar --- .../antennapod/fragment/CompletedDownloadsFragment.java | 9 ++++++++- .../antennapod/fragment/FeedItemlistFragment.java | 11 +++++++---- .../antennapod/fragment/FeedSettingsFragment.java | 4 +++- .../antennapod/fragment/PlaybackHistoryFragment.java | 17 +++++++++++------ .../antennapod/fragment/SubscriptionFragment.java | 17 +++++++++++------ app/src/main/res/layout/feed_item_list_fragment.xml | 1 + app/src/main/res/layout/feedinfo.xml | 1 + app/src/main/res/layout/feeditemlist_header.xml | 4 ++++ app/src/main/res/layout/fragment_subscriptions.xml | 8 ++++++++ app/src/main/res/xml/feed_settings.xml | 3 ++- 10 files changed, 56 insertions(+), 19 deletions(-) (limited to 'app') diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java index 20999abe9..d5f8775f1 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java @@ -8,6 +8,7 @@ import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; +import android.widget.ProgressBar; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.Toolbar; @@ -55,7 +56,9 @@ public class CompletedDownloadsFragment extends Fragment { private List items = new ArrayList<>(); private CompletedDownloadsListAdapter adapter; private RecyclerView recyclerView; + private ProgressBar progressBar; private Disposable disposable; + private EmptyViewHandler emptyView; @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @@ -72,6 +75,7 @@ public class CompletedDownloadsFragment extends Fragment { recyclerView.setVisibility(View.GONE); adapter = new CompletedDownloadsListAdapter((MainActivity) getActivity()); recyclerView.setAdapter(adapter); + progressBar = root.findViewById(R.id.progLoading); addEmptyView(); EventBus.getDefault().register(this); @@ -127,7 +131,7 @@ public class CompletedDownloadsFragment extends Fragment { } private void addEmptyView() { - EmptyViewHandler emptyView = new EmptyViewHandler(getActivity()); + emptyView = new EmptyViewHandler(getActivity()); emptyView.setIcon(R.attr.av_download); emptyView.setTitle(R.string.no_comp_downloads_head_label); emptyView.setMessage(R.string.no_comp_downloads_label); @@ -191,6 +195,8 @@ public class CompletedDownloadsFragment extends Fragment { if (disposable != null) { disposable.dispose(); } + progressBar.setVisibility(View.VISIBLE); + emptyView.hide(); disposable = Observable.fromCallable(DBReader::getDownloadedItems) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) @@ -198,6 +204,7 @@ public class CompletedDownloadsFragment extends Fragment { items = result; adapter.updateItems(result); requireActivity().invalidateOptionsMenu(); + progressBar.setVisibility(View.GONE); }, error -> Log.e(TAG, Log.getStackTraceString(error))); } diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java index b4e28567c..c9502ae4c 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java @@ -364,7 +364,7 @@ public class FeedItemlistFragment extends Fragment implements AdapterView.OnItem Log.d(TAG, "onEventMainThread() called with: " + "event = [" + event + "]"); DownloaderUpdate update = event.update; if (event.hasChangedFeedUpdateStatus(isUpdatingFeed)) { - updateProgressBarVisibility(); + updateSyncProgressBarVisibility(); } if (adapter != null && update.mediaIds.length > 0) { for (long mediaId : update.mediaIds) { @@ -391,7 +391,7 @@ public class FeedItemlistFragment extends Fragment implements AdapterView.OnItem private void updateUi() { loadItems(); - updateProgressBarVisibility(); + updateSyncProgressBarVisibility(); } @Subscribe(threadMode = ThreadMode.MAIN) @@ -411,7 +411,7 @@ public class FeedItemlistFragment extends Fragment implements AdapterView.OnItem } } - private void updateProgressBarVisibility() { + private void updateSyncProgressBarVisibility() { if (isUpdatingFeed != updateRefreshMenuItemChecker.isRefreshing()) { getActivity().supportInvalidateOptionsMenu(); } @@ -436,7 +436,7 @@ public class FeedItemlistFragment extends Fragment implements AdapterView.OnItem adapter.updateItems(feed.getItems()); getActivity().supportInvalidateOptionsMenu(); - updateProgressBarVisibility(); + updateSyncProgressBarVisibility(); } private void refreshHeaderView() { @@ -478,8 +478,10 @@ public class FeedItemlistFragment extends Fragment implements AdapterView.OnItem // https://github.com/bumptech/glide/issues/529 imgvBackground.setColorFilter(new LightingColorFilter(0xff666666, 0x000000)); + butShowInfo.setVisibility(View.VISIBLE); butShowInfo.setOnClickListener(v -> showFeedInfo()); imgvCover.setOnClickListener(v -> showFeedInfo()); + butShowSettings.setVisibility(View.VISIBLE); butShowSettings.setOnClickListener(v -> { if (feed != null) { FeedSettingsFragment fragment = FeedSettingsFragment.newInstance(feed); @@ -522,6 +524,7 @@ public class FeedItemlistFragment extends Fragment implements AdapterView.OnItem if (disposable != null) { disposable.dispose(); } + progressBar.setVisibility(View.VISIBLE); disposable = Observable.fromCallable(this::loadData) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/FeedSettingsFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/FeedSettingsFragment.java index cf09c5b26..2cddc10cb 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/FeedSettingsFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/FeedSettingsFragment.java @@ -97,6 +97,7 @@ public class FeedSettingsFragment extends Fragment { public static class FeedSettingsPreferenceFragment extends PreferenceFragmentCompat { private static final CharSequence PREF_EPISODE_FILTER = "episodeFilter"; + private static final CharSequence PREF_SCREEN = "feedSettingsScreen"; private static final String PREF_FEED_PLAYBACK_SPEED = "feedPlaybackSpeed"; private static final DecimalFormat SPEED_FORMAT = new DecimalFormat("0.00", DecimalFormatSymbols.getInstance(Locale.US)); @@ -116,7 +117,7 @@ public class FeedSettingsFragment extends Fragment { @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { addPreferencesFromResource(R.xml.feed_settings); - + findPreference(PREF_SCREEN).setEnabled(false); setupAutoDownloadGlobalPreference(); // To prevent transition animation because of summary update long feedId = getArguments().getLong(EXTRA_FEED_ID); @@ -146,6 +147,7 @@ public class FeedSettingsFragment extends Fragment { updateVolumeReductionValue(); updateAutoDownloadEnabled(); updatePlaybackSpeedPreference(); + findPreference(PREF_SCREEN).setEnabled(true); }, error -> Log.d(TAG, Log.getStackTraceString(error)), () -> { }); } diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java index 10a5a81d4..4a7b9603d 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java @@ -9,6 +9,7 @@ import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; +import android.widget.ProgressBar; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; @@ -51,6 +52,8 @@ public class PlaybackHistoryFragment extends Fragment { private PlaybackHistoryListAdapter adapter; private Disposable disposable; private RecyclerView recyclerView; + private EmptyViewHandler emptyView; + private ProgressBar progressBar; @Override public void onCreate(Bundle savedInstanceState) { @@ -75,8 +78,9 @@ public class PlaybackHistoryFragment extends Fragment { recyclerView.setVisibility(View.GONE); adapter = new PlaybackHistoryListAdapter((MainActivity) getActivity()); recyclerView.setAdapter(adapter); + progressBar = root.findViewById(R.id.progLoading); - EmptyViewHandler emptyView = new EmptyViewHandler(getActivity()); + emptyView = new EmptyViewHandler(getActivity()); emptyView.setIcon(R.attr.ic_history); emptyView.setTitle(R.string.no_history_head_label); emptyView.setMessage(R.string.no_history_label); @@ -215,15 +219,16 @@ public class PlaybackHistoryFragment extends Fragment { if (disposable != null) { disposable.dispose(); } + progressBar.setVisibility(View.VISIBLE); + emptyView.hide(); disposable = Observable.fromCallable(this::loadData) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(result -> { - if (result != null) { - playbackHistory = result; - adapter.updateItems(playbackHistory); - onFragmentLoaded(); - } + progressBar.setVisibility(View.GONE); + playbackHistory = result; + adapter.updateItems(playbackHistory); + onFragmentLoaded(); }, error -> Log.e(TAG, Log.getStackTraceString(error))); } diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java index 83c2ea440..ba5d44b4d 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java @@ -5,6 +5,7 @@ import android.content.Context; import android.content.DialogInterface; import android.content.SharedPreferences; import android.os.Bundle; +import android.widget.ProgressBar; import androidx.annotation.StringRes; import androidx.appcompat.app.AppCompatActivity; import androidx.fragment.app.Fragment; @@ -65,6 +66,7 @@ public class SubscriptionFragment extends Fragment { private DBReader.NavDrawerData navDrawerData; private SubscriptionsAdapter subscriptionAdapter; private FloatingActionButton subscriptionAddButton; + private ProgressBar progressBar; private EmptyViewHandler emptyView; private int mPosition = -1; @@ -91,6 +93,7 @@ public class SubscriptionFragment extends Fragment { subscriptionGridLayout.setNumColumns(prefs.getInt(PREF_NUM_COLUMNS, 3)); registerForContextMenu(subscriptionGridLayout); subscriptionAddButton = root.findViewById(R.id.subscriptions_add); + progressBar = root.findViewById(R.id.progLoading); return root; } @@ -175,16 +178,17 @@ public class SubscriptionFragment extends Fragment { public void onStop() { super.onStop(); EventBus.getDefault().unregister(this); - if(disposable != null) { + if (disposable != null) { disposable.dispose(); } } private void loadSubscriptions() { - if(disposable != null) { + if (disposable != null) { disposable.dispose(); } emptyView.hide(); + progressBar.setVisibility(View.VISIBLE); disposable = Observable.fromCallable(DBReader::getNavDrawerData) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) @@ -192,6 +196,7 @@ public class SubscriptionFragment extends Fragment { navDrawerData = result; subscriptionAdapter.notifyDataSetChanged(); emptyView.updateVisibility(); + progressBar.setVisibility(View.GONE); }, error -> Log.e(TAG, Log.getStackTraceString(error))); } @@ -207,7 +212,7 @@ public class SubscriptionFragment extends Fragment { return; } - Feed feed = (Feed)selectedObject; + Feed feed = (Feed) selectedObject; MenuInflater inflater = requireActivity().getMenuInflater(); inflater.inflate(R.menu.nav_feed_context, menu); @@ -221,7 +226,7 @@ public class SubscriptionFragment extends Fragment { public boolean onContextItemSelected(MenuItem item) { final int position = mPosition; mPosition = -1; // reset - if(position < 0) { + if (position < 0) { return false; } @@ -231,8 +236,8 @@ public class SubscriptionFragment extends Fragment { return false; } - Feed feed = (Feed)selectedObject; - switch(item.getItemId()) { + Feed feed = (Feed) selectedObject; + switch (item.getItemId()) { case R.id.remove_all_new_flags_item: displayConfirmationDialog( R.string.remove_all_new_flags_label, diff --git a/app/src/main/res/layout/feed_item_list_fragment.xml b/app/src/main/res/layout/feed_item_list_fragment.xml index 2c5c30ed3..a26bb3531 100644 --- a/app/src/main/res/layout/feed_item_list_fragment.xml +++ b/app/src/main/res/layout/feed_item_list_fragment.xml @@ -20,6 +20,7 @@ diff --git a/app/src/main/res/layout/fragment_subscriptions.xml b/app/src/main/res/layout/fragment_subscriptions.xml index 4cfd369a7..f37a6febd 100644 --- a/app/src/main/res/layout/fragment_subscriptions.xml +++ b/app/src/main/res/layout/fragment_subscriptions.xml @@ -26,6 +26,14 @@ android:paddingBottom="88dp" android:clipToPadding="false"/> + + + xmlns:android="http://schemas.android.com/apk/res/android" + android:key="feedSettingsScreen">