/*
* Copyright (C) 2015 Naman Dwivedi
*
* Licensed under the GNU General Public License v3
*
* This is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*/
package com.wm.remusic.recent;
import android.content.Context;
import android.database.Cursor;
import android.provider.BaseColumns;
import android.provider.MediaStore;
import android.text.TextUtils;
import com.wm.remusic.uitl.PreferencesUtility;
import java.util.ArrayList;
public class SongLoader {
private static final long[] sEmptyList = new long[0];
public static ArrayList<Song> getSongsForCursor(Cursor cursor) {
ArrayList arrayList = new ArrayList();
if ((cursor != null) && (cursor.moveToFirst()))
do {
long id = cursor.getLong(0);
String title = cursor.getString(1);
String artist = cursor.getString(2);
String album = cursor.getString(3);
int duration = cursor.getInt(4);
int trackNumber = cursor.getInt(5);
long artistId = cursor.getInt(6);
long albumId = cursor.getLong(7);
arrayList.add(new Song(id, albumId, artistId, title, artist, album, duration, trackNumber));
}
while (cursor.moveToNext());
if (cursor != null)
cursor.close();
return arrayList;
}
public static Song getSongForCursor(Cursor cursor) {
Song song = new Song();
if ((cursor != null) && (cursor.moveToFirst())) {
long id = cursor.getLong(0);
String title = cursor.getString(1);
String artist = cursor.getString(2);
String album = cursor.getString(3);
int duration = cursor.getInt(4);
int trackNumber = cursor.getInt(5);
long artistId = cursor.getInt(6);
long albumId = cursor.getLong(7);
song = new Song(id, albumId, artistId, title, artist, album, duration, trackNumber);
}
if (cursor != null)
cursor.close();
return song;
}
public static final long[] getSongListForCursor(Cursor cursor) {
if (cursor == null) {
return sEmptyList;
}
final int len = cursor.getCount();
final long[] list = new long[len];
cursor.moveToFirst();
int columnIndex = -1;
try {
columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Audio.Playlists.Members.AUDIO_ID);
} catch (final IllegalArgumentException notaplaylist) {
columnIndex = cursor.getColumnIndexOrThrow(BaseColumns._ID);
}
for (int i = 0; i < len; i++) {
list[i] = cursor.getLong(columnIndex);
cursor.moveToNext();
}
cursor.close();
cursor = null;
return list;
}
public static ArrayList<Song> getAllSongs(Context context) {
return getSongsForCursor(makeSongCursor(context, null, null));
}
public static Song getSongForID(Context context, long id) {
return getSongForCursor(makeSongCursor(context, "_id=" + String.valueOf(id), null));
}
public static ArrayList<Song> searchSongs(Context context, String searchString) {
return getSongsForCursor(makeSongCursor(context, "title LIKE ?", new String[]{"%" + searchString + "%"}));
}
public static Cursor makeSongCursor(Context context, String selection, String[] paramArrayOfString) {
String selectionStatement = "is_music=1 AND title != ''";
final String songSortOrder = PreferencesUtility.getInstance(context).getSongSortOrder();
if (!TextUtils.isEmpty(selection)) {
selectionStatement = selectionStatement + " AND " + selection;
}
Cursor cursor = context.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, new String[]{"_id", "title", "artist", "album", "duration", "track", "artist_id", "album_id"}, selectionStatement, paramArrayOfString, songSortOrder);
return cursor;
}
}