package com.distantfuture.videos.channellookup; import android.content.AsyncTaskLoader; import android.content.Context; import android.content.Intent; import android.util.Log; import com.distantfuture.videos.content.Content; import com.distantfuture.videos.database.YouTubeData; import com.distantfuture.videos.misc.DUtils; import com.distantfuture.videos.youtube.YouTubeAPI; import java.util.ArrayList; import java.util.List; public class ChannelLookupItemLoader extends AsyncTaskLoader<List<YouTubeData>> { private static final String TAG = "ChannelLookupItemLoader"; private final String query; public ChannelLookupItemLoader(Context context, String query) { super(context); if (query != null && query.isEmpty()) query = null; this.query = query; } @Override public List<YouTubeData> loadInBackground() { List<YouTubeData> result = null; try { YouTubeAPI helper = new YouTubeAPI(getContext(), false, true, new YouTubeAPI.YouTubeAPIListener() { @Override public void handleAuthIntent(final Intent authIntent) { DUtils.log("handleAuthIntent inside update Service. not handled here"); } }); if (query == null) { result = new ArrayList<YouTubeData>(); List<YouTubeData> list = Content.instance().channels(); for (YouTubeData data : list) { result.add(data); } } else { YouTubeAPI.SearchListResults searchList = helper.searchListResults(query, true); result = searchList.getAllItems(40); } } catch (Exception e) { Log.e(TAG, "Failed to fetch media data", e); } return result; } @Override protected void onStartLoading() { super.onStartLoading(); forceLoad(); } /** * Handles a request to stop the Loader. */ @Override protected void onStopLoading() { // Attempt to cancel the current load task if possible. cancelLoad(); } }