mirror of
https://github.com/antebudimir/tempus.git
synced 2025-12-31 17:43:32 +00:00
feat: added sorting by newest album added
This commit is contained in:
parent
302458e76b
commit
2712b73dac
7 changed files with 47 additions and 0 deletions
|
|
@ -161,6 +161,10 @@ public class AlbumCatalogueAdapter extends RecyclerView.Adapter<AlbumCatalogueAd
|
||||||
case Constants.ALBUM_ORDER_BY_RANDOM:
|
case Constants.ALBUM_ORDER_BY_RANDOM:
|
||||||
Collections.shuffle(albums);
|
Collections.shuffle(albums);
|
||||||
break;
|
break;
|
||||||
|
case Constants.ALBUM_ORDER_BY_RECENTLY_ADDED:
|
||||||
|
albums.sort(Comparator.comparing(AlbumID3::getCreated));
|
||||||
|
Collections.reverse(albums);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
notifyDataSetChanged();
|
notifyDataSetChanged();
|
||||||
|
|
|
||||||
|
|
@ -67,6 +67,7 @@ public class AlbumCatalogueFragment extends Fragment implements ClickCallback {
|
||||||
|
|
||||||
initAppBar();
|
initAppBar();
|
||||||
initAlbumCatalogueView();
|
initAlbumCatalogueView();
|
||||||
|
initProgressLoader();
|
||||||
|
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
@ -124,6 +125,18 @@ public class AlbumCatalogueFragment extends Fragment implements ClickCallback {
|
||||||
bind.albumListSortImageView.setOnClickListener(view -> showPopupMenu(view, R.menu.sort_album_popup_menu));
|
bind.albumListSortImageView.setOnClickListener(view -> showPopupMenu(view, R.menu.sort_album_popup_menu));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void initProgressLoader() {
|
||||||
|
albumCatalogueViewModel.getLoadingStatus().observe(getViewLifecycleOwner(), isLoading -> {
|
||||||
|
if (isLoading) {
|
||||||
|
bind.albumListSortImageView.setEnabled(false);
|
||||||
|
bind.albumListProgressLoader.setVisibility(View.VISIBLE);
|
||||||
|
} else {
|
||||||
|
bind.albumListSortImageView.setEnabled(true);
|
||||||
|
bind.albumListProgressLoader.setVisibility(View.GONE);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
|
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
|
||||||
inflater.inflate(R.menu.toolbar_menu, menu);
|
inflater.inflate(R.menu.toolbar_menu, menu);
|
||||||
|
|
@ -171,6 +184,9 @@ public class AlbumCatalogueFragment extends Fragment implements ClickCallback {
|
||||||
} else if (menuItem.getItemId() == R.id.menu_album_sort_random) {
|
} else if (menuItem.getItemId() == R.id.menu_album_sort_random) {
|
||||||
albumAdapter.sort(Constants.ALBUM_ORDER_BY_RANDOM);
|
albumAdapter.sort(Constants.ALBUM_ORDER_BY_RANDOM);
|
||||||
return true;
|
return true;
|
||||||
|
} else if (menuItem.getItemId() == R.id.menu_album_sort_recently_added) {
|
||||||
|
albumAdapter.sort(Constants.ALBUM_ORDER_BY_RECENTLY_ADDED);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@ object Constants {
|
||||||
const val ALBUM_ORDER_BY_ARTIST = "ALBUM_ORDER_BY_ARTIST"
|
const val ALBUM_ORDER_BY_ARTIST = "ALBUM_ORDER_BY_ARTIST"
|
||||||
const val ALBUM_ORDER_BY_YEAR = "ALBUM_ORDER_BY_YEAR"
|
const val ALBUM_ORDER_BY_YEAR = "ALBUM_ORDER_BY_YEAR"
|
||||||
const val ALBUM_ORDER_BY_RANDOM = "ALBUM_ORDER_BY_RANDOM"
|
const val ALBUM_ORDER_BY_RANDOM = "ALBUM_ORDER_BY_RANDOM"
|
||||||
|
const val ALBUM_ORDER_BY_RECENTLY_ADDED = "ALBUM_ORDER_BY_RECENTLY_ADDED"
|
||||||
|
|
||||||
const val ARTIST_DOWNLOADED = "ARTIST_DOWNLOADED"
|
const val ARTIST_DOWNLOADED = "ARTIST_DOWNLOADED"
|
||||||
const val ARTIST_STARRED = "ARTIST_STARRED"
|
const val ARTIST_STARRED = "ARTIST_STARRED"
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ import retrofit2.Callback;
|
||||||
|
|
||||||
public class AlbumCatalogueViewModel extends AndroidViewModel {
|
public class AlbumCatalogueViewModel extends AndroidViewModel {
|
||||||
private final MutableLiveData<List<AlbumID3>> albumList = new MutableLiveData<>(new ArrayList<>());
|
private final MutableLiveData<List<AlbumID3>> albumList = new MutableLiveData<>(new ArrayList<>());
|
||||||
|
private final MutableLiveData<Boolean> loading = new MutableLiveData<>(true);
|
||||||
|
|
||||||
private int page = 0;
|
private int page = 0;
|
||||||
private Status status = Status.STOPPED;
|
private Status status = Status.STOPPED;
|
||||||
|
|
@ -32,6 +33,10 @@ public class AlbumCatalogueViewModel extends AndroidViewModel {
|
||||||
return albumList;
|
return albumList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public LiveData<Boolean> getLoadingStatus() {
|
||||||
|
return loading;
|
||||||
|
}
|
||||||
|
|
||||||
public void loadAlbums() {
|
public void loadAlbums() {
|
||||||
page = 0;
|
page = 0;
|
||||||
status = Status.RUNNING;
|
status = Status.RUNNING;
|
||||||
|
|
@ -52,6 +57,7 @@ public class AlbumCatalogueViewModel extends AndroidViewModel {
|
||||||
@Override
|
@Override
|
||||||
public void onLoadMedia(List<?> media) {
|
public void onLoadMedia(List<?> media) {
|
||||||
if (status == Status.STOPPED) {
|
if (status == Status.STOPPED) {
|
||||||
|
loading.setValue(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -62,8 +68,10 @@ public class AlbumCatalogueViewModel extends AndroidViewModel {
|
||||||
|
|
||||||
if (media.size() == size) {
|
if (media.size() == size) {
|
||||||
loadAlbums(size);
|
loadAlbums(size);
|
||||||
|
loading.setValue(true);
|
||||||
} else {
|
} else {
|
||||||
status = Status.STOPPED;
|
status = Status.STOPPED;
|
||||||
|
loading.setValue(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, size, size * page++);
|
}, size, size * page++);
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,20 @@
|
||||||
app:icon="@drawable/ic_sort_list"
|
app:icon="@drawable/ic_sort_list"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent" />
|
app:layout_constraintEnd_toEndOf="parent" />
|
||||||
|
|
||||||
|
<ProgressBar
|
||||||
|
android:id="@+id/album_list_progress_loader"
|
||||||
|
android:layout_width="52dp"
|
||||||
|
android:layout_height="52dp"
|
||||||
|
android:layout_marginStart="16dp"
|
||||||
|
android:layout_marginTop="16dp"
|
||||||
|
android:layout_marginEnd="16dp"
|
||||||
|
android:layout_marginBottom="12dp"
|
||||||
|
android:visibility="visible"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"/>
|
||||||
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
</com.google.android.material.appbar.AppBarLayout>
|
</com.google.android.material.appbar.AppBarLayout>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,4 +12,7 @@
|
||||||
<item
|
<item
|
||||||
android:id="@+id/menu_album_sort_random"
|
android:id="@+id/menu_album_sort_random"
|
||||||
android:title="@string/menu_sort_random" />
|
android:title="@string/menu_sort_random" />
|
||||||
|
<item
|
||||||
|
android:id="@+id/menu_album_sort_recently_added"
|
||||||
|
android:title="@string/menu_sort_recently_added" />
|
||||||
</menu>
|
</menu>
|
||||||
|
|
@ -153,6 +153,7 @@
|
||||||
<string name="menu_sort_artist">Artist</string>
|
<string name="menu_sort_artist">Artist</string>
|
||||||
<string name="menu_sort_name">Name</string>
|
<string name="menu_sort_name">Name</string>
|
||||||
<string name="menu_sort_random">Random</string>
|
<string name="menu_sort_random">Random</string>
|
||||||
|
<string name="menu_sort_recently_added">Recently added</string>
|
||||||
<string name="menu_sort_year">Year</string>
|
<string name="menu_sort_year">Year</string>
|
||||||
<string name="player_playback_speed">%1$.2fx</string>
|
<string name="player_playback_speed">%1$.2fx</string>
|
||||||
<string name="player_queue_clean_all_button">Clean play queue</string>
|
<string name="player_queue_clean_all_button">Clean play queue</string>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue