package org.droidklavier.activity;
import android.app.Activity;
import android.app.ListActivity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import org.droidklavier.Droidklavier;
import org.droidklavier.R;
import org.droidklavier.db.Album;
import java.util.ArrayList;
import java.util.Locale;
public class AlbumList extends ListActivity {
private Droidklavier mDroidklavier;
private ArrayList<Album> mAlbumList;
private Album mAlbum;
private String mSource;
private ProgressDialog mLoadingDialog;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.album_list);
String source = getIntent().getStringExtra(Player.SOURCE);
String keyword = getIntent().getStringExtra(Player.KEYWORD);
mDroidklavier = (Droidklavier) getApplication();
setTitle(buildTitle(source, keyword));
mLoadingDialog = new ProgressDialog(this);
mLoadingDialog.setMessage(getString(R.string.loading));
mLoadingDialog.show();
new AlbumListTask().execute(source);
getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> av, View v, int pos, long id) {
startSongListActivity((int) id);
}
});
}
private CharSequence buildTitle(String source, String keyword) {
String title;
if (keyword != null && keyword.length() > 0) {
title = String.format("Results for '%s'", keyword);
} else {
title = String.format("Albums from: %s", source.toUpperCase(Locale.getDefault()));
}
return title;
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
}
private void startSongListActivity(int id) {
mAlbum = mAlbumList.get(id);
mSource = mAlbum.source;
Intent intent = new Intent(this, SongList.class);
intent.putExtra(Player.SOURCE, mSource);
intent.putExtra(Player.ALBUM, mAlbum);
startActivityForResult(intent, Player.SONG_LIST);
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case Player.SONG_LIST:
if (resultCode == Activity.RESULT_OK) {
Intent intent = new Intent();
intent.putExtra(Player.SOURCE, mSource);
intent.putExtra(Player.ALBUM, mAlbum);
intent.putExtra(Player.SONG,
data.getParcelableExtra(Player.SONG));
setResult(Activity.RESULT_OK, intent);
finish();
}
break;
}
}
private class AlbumListAdapter extends ArrayAdapter<Album> {
private ArrayList<Album> items;
public AlbumListAdapter(Context context, int textViewResourceId, ArrayList<Album> items) {
super(context, textViewResourceId, items);
this.items = items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.album_list_item, null);
}
Album album = items.get(position);
if (album != null) {
TextView album_title = (TextView) v.findViewById(R.id.album_title);
TextView album_source = (TextView) v.findViewById(R.id.album_source);
if (album_title != null) {
album_title.setText(album.title);
}
if (album_source != null) {
album_source.setText("Source: " + album.source);
}
}
return v;
}
}
private class AlbumListTask extends AsyncTask<String, Void, ArrayList<Album>> {
@Override
protected ArrayList<Album> doInBackground(String... params) {
ArrayList<Album> albumList = mDroidklavier.getDAO().getAlbumList(params[0]);
return albumList;
}
@Override
protected void onPostExecute(ArrayList<Album> result) {
super.onPostExecute(result);
if (result != null) {
mAlbumList = result;
setListAdapter(new AlbumListAdapter(AlbumList.this, R.layout.album_list_item, mAlbumList));
}
if (mLoadingDialog != null) {
mLoadingDialog.dismiss();
}
}
}
}