From a3323aeb7f7ed7d7a7e60152b76efeb8f2461415 Mon Sep 17 00:00:00 2001 From: h4h13 Date: Sun, 8 Dec 2019 23:57:07 +0530 Subject: [PATCH] Fix loading genres --- .../retromusic/adapter/SearchAdapter.kt | 3 -- .../monkey/retromusic/loaders/GenreLoader.kt | 31 +++++++++++++------ .../monkey/retromusic/loaders/SearchLoader.kt | 5 +-- app/src/main/res/layout/activity_search.xml | 4 ++- 4 files changed, 26 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/SearchAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/SearchAdapter.kt index 266c6bee..dc5c066d 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/SearchAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/SearchAdapter.kt @@ -20,8 +20,6 @@ import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.NavigationUtil import com.bumptech.glide.Glide -import java.util.* -import kotlin.collections.ArrayList import android.util.Pair as UtilPair class SearchAdapter( @@ -70,7 +68,6 @@ class SearchAdapter( GENRE -> { val genre = dataSet?.get(position) as Genre holder.title?.text = genre.name - holder.text?.text = String.format(Locale.getDefault(), "%d %s", genre.songCount, if (genre.songCount > 1) activity.getString(R.string.songs) else activity.getString(R.string.song)) } else -> { holder.title?.text = dataSet?.get(position).toString() diff --git a/app/src/main/java/code/name/monkey/retromusic/loaders/GenreLoader.kt b/app/src/main/java/code/name/monkey/retromusic/loaders/GenreLoader.kt index 7e5ab582..03be9bea 100644 --- a/app/src/main/java/code/name/monkey/retromusic/loaders/GenreLoader.kt +++ b/app/src/main/java/code/name/monkey/retromusic/loaders/GenreLoader.kt @@ -24,16 +24,18 @@ import code.name.monkey.retromusic.Constants.baseProjection import code.name.monkey.retromusic.model.Genre import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.util.PreferenceUtil -import java.util.* object GenreLoader { - fun getAllGenres(context: Context): ArrayList { return getGenresFromCursor(context, makeGenreCursor(context)) } + fun searchGenres(context: Context): ArrayList { + return getGenresFromCursorForSearch(context, makeGenreCursor(context)); + } + fun getSongs(context: Context, genreId: Int): ArrayList { // The genres table only stores songs that have a genre specified, // so we need to get songs without a genre a different way. @@ -51,6 +53,12 @@ object GenreLoader { } + private fun getGenreFromCursorWithOutSongs(context: Context, cursor: Cursor): Genre { + val id = cursor.getInt(0) + val name = cursor.getString(1) + return Genre(id, name, -1) + } + private fun getSongsWithNoGenre(context: Context): ArrayList { val selection = BaseColumns._ID + " NOT IN " + "(SELECT " + Genres.Members.AUDIO_ID + " FROM audio_genres_map)" @@ -107,7 +115,6 @@ object GenreLoader { context.contentResolver.delete(Genres.EXTERNAL_CONTENT_URI, Genres._ID + " == " + genre.id, null) } catch (e: Exception) { e.printStackTrace() - // nothing we can do then } } @@ -118,18 +125,24 @@ object GenreLoader { return genres } + private fun getGenresFromCursorForSearch(context: Context, cursor: Cursor?): ArrayList { + val genres = arrayListOf() + if (cursor != null && cursor.moveToFirst()) { + do { + genres.add(getGenreFromCursorWithOutSongs(context, cursor)) + } while (cursor.moveToNext()) + } + cursor?.close() + return genres + } + private fun makeGenreCursor(context: Context): Cursor? { val projection = arrayOf(Genres._ID, Genres.NAME) - try { - return context.contentResolver.query( - Genres.EXTERNAL_CONTENT_URI, - projection, null, null, PreferenceUtil.getInstance(context).genreSortOrder) + return context.contentResolver.query(Genres.EXTERNAL_CONTENT_URI, projection, null, null, PreferenceUtil.getInstance(context).genreSortOrder) } catch (e: SecurityException) { return null } - } - } diff --git a/app/src/main/java/code/name/monkey/retromusic/loaders/SearchLoader.kt b/app/src/main/java/code/name/monkey/retromusic/loaders/SearchLoader.kt index 1f5c494d..974beb41 100644 --- a/app/src/main/java/code/name/monkey/retromusic/loaders/SearchLoader.kt +++ b/app/src/main/java/code/name/monkey/retromusic/loaders/SearchLoader.kt @@ -41,10 +41,7 @@ object SearchLoader { results.add(context.resources.getString(R.string.albums)) results.addAll(albums) } - val genres: List = GenreLoader.getAllGenres(context).filter { genre -> genre.name.toLowerCase(Locale.getDefault()).contains(searchString.toLowerCase(Locale.getDefault())) } - genres.forEach { - println(it.name) - } + val genres: List = GenreLoader.searchGenres(context).filter { genre -> genre.name.toLowerCase(Locale.getDefault()).contains(searchString.toLowerCase(Locale.getDefault())) } if (genres.isNotEmpty()) { results.add(context.resources.getString(R.string.genres)) results.addAll(genres) diff --git a/app/src/main/res/layout/activity_search.xml b/app/src/main/res/layout/activity_search.xml index 6c210a73..22cd7b2c 100755 --- a/app/src/main/res/layout/activity_search.xml +++ b/app/src/main/res/layout/activity_search.xml @@ -4,8 +4,8 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:fitsSystemWindows="true" android:background="?attr/colorSurface" + android:fitsSystemWindows="true" android:orientation="vertical">