package com.samsung.spensdk.example.tools;
import java.io.File;
import java.util.ArrayList;
import com.samsung.spensdk.example.R;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Environment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.RadioButton;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
public class ToolAudioListView extends Activity {
Context mContext = null;
private Button BtnOK, BtnCancel;
private ListView lView;
private ArrayList<String> userSoundList;
private ListAdapter listAdapter = null;
private int m_nCurAudioFileIndex = -1;
private String strFilepath = Environment.getExternalStorageDirectory().getAbsolutePath();
private String m_strAudioFileName = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tool_sound_list);
if(strFilepath == null)
return;
mContext = this;
m_nCurAudioFileIndex = -1;
// load sound file list
userSoundList = new ArrayList<String>();
audioFileListUp(strFilepath);
listAdapter = new ListAdapter(this);
lView = (ListView)findViewById(R.id.soundList);
lView.setAdapter(listAdapter);
lView.setItemsCanFocus(false);
lView.setTextFilterEnabled(true);
lView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
m_nCurAudioFileIndex = position;
m_strAudioFileName = userSoundList.get(m_nCurAudioFileIndex);
listAdapter.notifyDataSetChanged();
listAdapter.updateDisplay();
}
});
BtnOK = (Button) findViewById(R.id.btnOK);
BtnOK.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(m_strAudioFileName != null)
{
getIntent().putExtra("BackgroundAudioFileName", m_strAudioFileName);
setResult(RESULT_OK, getIntent());
finish();
}
else
{
Toast.makeText(mContext, "Select valid audiofile!!!!", Toast.LENGTH_SHORT).show();
}
}
});
BtnCancel = (Button) findViewById(R.id.btnCancel);
BtnCancel.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
// update button and listview
if(userSoundList.size() <= 0)
{
BtnOK.setEnabled(false);
lView.setVisibility(View.GONE);
findViewById(R.id.noItemListMsg).setVisibility(View.VISIBLE);
}
else
{
BtnOK.setEnabled(true);
lView.setVisibility(View.VISIBLE);
findViewById(R.id.noItemListMsg).setVisibility(View.GONE);
}
}
public void audioFileListUp(String filepath)
{
if(filepath == null)
return;
File file = new File(filepath);
File[] files = file.listFiles();
if (files == null)
return;
for(int i = 0;i < files.length;i++)
{
if(files[i].isDirectory())
{
strFilepath = files[i].getPath();
audioFileListUp(strFilepath);
}
else
{
int nExtIndex = files[i].getName().lastIndexOf(".");
String strExt = files[i].getName().substring(nExtIndex + 1);
// Supporting audio type
if(strExt.compareToIgnoreCase("3gp")==0
|| strExt.compareToIgnoreCase("mp3")==0
|| strExt.compareToIgnoreCase("wav")==0
|| strExt.compareToIgnoreCase("amr")==0
|| strExt.compareToIgnoreCase("wma")==0
|| strExt.compareToIgnoreCase("m4a")==0
|| strExt.compareToIgnoreCase("aac")==0
|| strExt.compareToIgnoreCase("ogg")==0
|| strExt.compareToIgnoreCase("mid")==0
|| strExt.compareToIgnoreCase("3ga")==0)
{
userSoundList.add(files[i].getPath());
}
}
}
}
public class ListAdapter extends BaseAdapter{
//private Context mContext;
public ListAdapter(Context context) {
//mContext = context;
}
public View getView(int position, View convertView, ViewGroup parent)
{
if(convertView == null) {
final LayoutInflater inflater = getLayoutInflater();
convertView = inflater.inflate(R.layout.tool_sound_list_item, parent, false);
}
String strPath = userSoundList.get(position);
int ntemp = strPath.lastIndexOf("/");
String strTitle = strPath.substring(ntemp+1);
TextView textText= (TextView)convertView.findViewById(R.id.itemText);
textText.setText(strTitle);
if(position == m_nCurAudioFileIndex)
{
textText.setTextColor(0xFF00FF00);
}
else
{
textText.setTextColor(0xFFFFFFFF);
}
RadioButton radio = (RadioButton)convertView.findViewById(R.id.checkradio);
if(position == m_nCurAudioFileIndex) radio.setChecked(true);
else radio.setChecked(false);
return convertView;
}
public void updateDisplay() {
this.notifyDataSetChanged();
}
@Override
public int getCount() {
if(userSoundList==null)
return 0;
return userSoundList.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
}
}