mirror of
https://github.com/antebudimir/tempus.git
synced 2026-01-01 01:53:31 +00:00
Added the ability to sort items in the artist catalogue
This commit is contained in:
parent
3c617570de
commit
e6b997bc35
5 changed files with 70 additions and 0 deletions
|
|
@ -18,11 +18,14 @@ import androidx.recyclerview.widget.RecyclerView;
|
||||||
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
|
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
|
||||||
import com.cappielloantonio.play.R;
|
import com.cappielloantonio.play.R;
|
||||||
import com.cappielloantonio.play.glide.CustomGlideRequest;
|
import com.cappielloantonio.play.glide.CustomGlideRequest;
|
||||||
|
import com.cappielloantonio.play.model.Album;
|
||||||
import com.cappielloantonio.play.model.Artist;
|
import com.cappielloantonio.play.model.Artist;
|
||||||
import com.cappielloantonio.play.ui.activity.MainActivity;
|
import com.cappielloantonio.play.ui.activity.MainActivity;
|
||||||
import com.cappielloantonio.play.util.MusicUtil;
|
import com.cappielloantonio.play.util.MusicUtil;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Comparator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
|
|
@ -160,4 +163,17 @@ public class ArtistCatalogueAdapter extends RecyclerView.Adapter<ArtistCatalogue
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void sort(String order) {
|
||||||
|
switch (order) {
|
||||||
|
case Artist.ORDER_BY_NAME:
|
||||||
|
artists.sort(Comparator.comparing(Artist::getName));
|
||||||
|
break;
|
||||||
|
case Artist.ORDER_BY_RANDOM:
|
||||||
|
Collections.shuffle(artists);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
notifyDataSetChanged();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,9 @@ public class Artist implements Parcelable {
|
||||||
public static final String DOWNLOADED = "DOWNLOADED";
|
public static final String DOWNLOADED = "DOWNLOADED";
|
||||||
public static final String STARRED = "STARRED";
|
public static final String STARRED = "STARRED";
|
||||||
|
|
||||||
|
public static final String ORDER_BY_NAME = "ORDER_BY_NAME";
|
||||||
|
public static final String ORDER_BY_RANDOM = "ORDER_BY_RANDOM";
|
||||||
|
|
||||||
private List<Album> albums;
|
private List<Album> albums;
|
||||||
private List<Artist> similarArtists;
|
private List<Artist> similarArtists;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.view.inputmethod.EditorInfo;
|
import android.view.inputmethod.EditorInfo;
|
||||||
import android.view.inputmethod.InputMethodManager;
|
import android.view.inputmethod.InputMethodManager;
|
||||||
|
import android.widget.PopupMenu;
|
||||||
import android.widget.SearchView;
|
import android.widget.SearchView;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
|
@ -25,6 +26,8 @@ import com.cappielloantonio.play.R;
|
||||||
import com.cappielloantonio.play.adapter.ArtistCatalogueAdapter;
|
import com.cappielloantonio.play.adapter.ArtistCatalogueAdapter;
|
||||||
import com.cappielloantonio.play.databinding.FragmentArtistCatalogueBinding;
|
import com.cappielloantonio.play.databinding.FragmentArtistCatalogueBinding;
|
||||||
import com.cappielloantonio.play.helper.recyclerview.GridItemDecoration;
|
import com.cappielloantonio.play.helper.recyclerview.GridItemDecoration;
|
||||||
|
import com.cappielloantonio.play.model.Album;
|
||||||
|
import com.cappielloantonio.play.model.Artist;
|
||||||
import com.cappielloantonio.play.ui.activity.MainActivity;
|
import com.cappielloantonio.play.ui.activity.MainActivity;
|
||||||
import com.cappielloantonio.play.viewmodel.ArtistCatalogueViewModel;
|
import com.cappielloantonio.play.viewmodel.ArtistCatalogueViewModel;
|
||||||
|
|
||||||
|
|
@ -113,6 +116,8 @@ public class ArtistCatalogueFragment extends Fragment {
|
||||||
hideKeyboard(v);
|
hideKeyboard(v);
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
bind.artistListSortImageView.setOnClickListener(view -> showPopupMenu(view, R.menu.sort_artist_popup_menu));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -144,4 +149,23 @@ public class ArtistCatalogueFragment extends Fragment {
|
||||||
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
|
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||||
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
|
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void showPopupMenu(View view, int menuResource) {
|
||||||
|
PopupMenu popup = new PopupMenu(requireContext(), view);
|
||||||
|
popup.getMenuInflater().inflate(menuResource, popup.getMenu());
|
||||||
|
|
||||||
|
popup.setOnMenuItemClickListener(menuItem -> {
|
||||||
|
if (menuItem.getItemId() == R.id.menu_artist_sort_name) {
|
||||||
|
artistAdapter.sort(Artist.ORDER_BY_NAME);
|
||||||
|
return true;
|
||||||
|
} else if (menuItem.getItemId() == R.id.menu_artist_sort_random) {
|
||||||
|
artistAdapter.sort(Artist.ORDER_BY_RANDOM);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
popup.show();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -41,6 +41,24 @@
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toEndOf="parent" />
|
app:layout_constraintStart_toEndOf="parent" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/artist_list_sort_image_view"
|
||||||
|
style="@style/Widget.Material3.Button.TonalButton.Icon"
|
||||||
|
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:insetLeft="0dp"
|
||||||
|
android:insetTop="0dp"
|
||||||
|
android:insetRight="0dp"
|
||||||
|
android:insetBottom="0dp"
|
||||||
|
app:cornerRadius="30dp"
|
||||||
|
app:icon="@drawable/ic_sort_list"
|
||||||
|
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>
|
||||||
|
|
||||||
|
|
|
||||||
9
app/src/main/res/menu/sort_artist_popup_menu.xml
Normal file
9
app/src/main/res/menu/sort_artist_popup_menu.xml
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item
|
||||||
|
android:id="@+id/menu_artist_sort_name"
|
||||||
|
android:title="@string/menu_sort_name" />
|
||||||
|
<item
|
||||||
|
android:id="@+id/menu_artist_sort_random"
|
||||||
|
android:title="@string/menu_sort_random" />
|
||||||
|
</menu>
|
||||||
Loading…
Add table
Add a link
Reference in a new issue