feat: added ui for radio stations and podcast channels existence check

This commit is contained in:
antonio 2023-06-04 18:37:53 +02:00
parent ff1fb78d4a
commit a57487d38d
8 changed files with 589 additions and 85 deletions

View file

@ -5,6 +5,7 @@ import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.InsetDrawable;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@ -33,8 +34,11 @@ import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.ui.adapter.PodcastChannelHorizontalAdapter;
import com.cappielloantonio.play.ui.adapter.PodcastEpisodeAdapter;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.Preferences;
import com.cappielloantonio.play.util.UIUtil;
import com.cappielloantonio.play.viewmodel.PodcastViewModel;
import com.google.android.material.divider.MaterialDividerItemDecoration;
import com.google.android.material.snackbar.Snackbar;
import com.google.common.util.concurrent.ListenableFuture;
import java.util.Objects;
@ -62,8 +66,6 @@ public class HomeTabPodcastFragment extends Fragment implements ClickCallback {
View view = bind.getRoot();
podcastViewModel = new ViewModelProvider(requireActivity()).get(PodcastViewModel.class);
init();
return view;
}
@ -71,6 +73,8 @@ public class HomeTabPodcastFragment extends Fragment implements ClickCallback {
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
init();
initPodcastView();
initNewestPodcastsView();
initPodcastChannelsView();
}
@ -96,6 +100,19 @@ public class HomeTabPodcastFragment extends Fragment implements ClickCallback {
private void init() {
bind.podcastChannelsTextViewClickable.setOnClickListener(v -> activity.navController.navigate(R.id.action_homeFragment_to_podcastChannelCatalogueFragment));
bind.hideSectionButton.setOnClickListener(v -> Preferences.setPodcastSectionHidden());
}
private void initPodcastView() {
podcastViewModel.getPodcastChannels(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), podcastChannels -> {
if (podcastChannels == null) {
if (bind != null) bind.homePodcastChannelsSector.setVisibility(View.GONE);
if (bind != null) bind.emptyPodcastLayout.setVisibility(View.GONE);
} else {
if (bind != null) bind.homePodcastChannelsSector.setVisibility(!podcastChannels.isEmpty() ? View.VISIBLE : View.GONE);
if (bind != null) bind.emptyPodcastLayout.setVisibility(podcastChannels.isEmpty() ? View.VISIBLE : View.GONE);
}
});
}
private void initPodcastChannelsView() {
@ -133,8 +150,6 @@ public class HomeTabPodcastFragment extends Fragment implements ClickCallback {
});
}
private void initializeMediaBrowser() {
mediaBrowserListenableFuture = new MediaBrowser.Builder(requireContext(), new SessionToken(requireContext(), new ComponentName(requireContext(), MediaService.class))).buildAsync();
}

View file

@ -23,6 +23,7 @@ import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.ui.adapter.InternetRadioStationAdapter;
import com.cappielloantonio.play.ui.dialog.RadioEditorDialog;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.Preferences;
import com.cappielloantonio.play.viewmodel.RadioViewModel;
import com.google.common.util.concurrent.ListenableFuture;
@ -87,6 +88,8 @@ public class HomeTabRadioFragment extends Fragment implements ClickCallback {
radioViewModel.getInternetRadioStations(getViewLifecycleOwner());
return true;
});
bind.hideSectionButton.setOnClickListener(v -> Preferences.setRadioSectionHidden());
}
private void initRadioStationView() {
@ -97,14 +100,13 @@ public class HomeTabRadioFragment extends Fragment implements ClickCallback {
bind.internetRadioStationRecyclerView.setAdapter(internetRadioStationAdapter);
radioViewModel.getInternetRadioStations(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), internetRadioStations -> {
if (internetRadioStations == null) {
if (bind != null)
bind.internetRadioStationPlaceholder.placeholder.setVisibility(View.VISIBLE);
if (bind != null) bind.internetRadioStationSector.setVisibility(View.GONE);
if (bind != null) bind.homeRadioStationSector.setVisibility(View.GONE);
if (bind != null) bind.emptyRadioStationLayout.setVisibility(View.GONE);
} else {
if (bind != null)
bind.internetRadioStationPlaceholder.placeholder.setVisibility(View.GONE);
bind.homeRadioStationSector.setVisibility(!internetRadioStations.isEmpty() ? View.VISIBLE : View.GONE);
if (bind != null)
bind.internetRadioStationSector.setVisibility(!internetRadioStations.isEmpty() ? View.VISIBLE : View.GONE);
bind.emptyRadioStationLayout.setVisibility(internetRadioStations.isEmpty() ? View.VISIBLE : View.GONE);
internetRadioStationAdapter.setItems(internetRadioStations);
}

View file

@ -215,8 +215,18 @@ object Preferences {
return App.getInstance().preferences.getBoolean(PODCAST_SECTION_VISIBILITY, true)
}
@JvmStatic
fun setPodcastSectionHidden() {
App.getInstance().preferences.edit().putBoolean(PODCAST_SECTION_VISIBILITY, false).apply()
}
@JvmStatic
fun isRadioSectionVisible(): Boolean {
return App.getInstance().preferences.getBoolean(RADIO_SECTION_VISIBILITY, true)
}
@JvmStatic
fun setRadioSectionHidden() {
App.getInstance().preferences.edit().putBoolean(RADIO_SECTION_VISIBILITY, false).apply()
}
}