package cn.qylk.fragment;
import java.util.List;
import android.app.Activity;
import android.app.DialogFragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.Toast;
import cn.qylk.MainActivity;
import cn.qylk.R;
import cn.qylk.QianQianLyrics.LyricResults;
import cn.qylk.adapter.QianQianAdapter;
import cn.qylk.app.Tasks;
import cn.qylk.app.Tasks.onPostLrcItems;
import cn.qylk.app.TrackInfo;
import cn.qylk.database.MediaDatabase;
import cn.qylk.utils.ID3;
public class FragmentInfoInputDialog extends DialogFragment implements
OnClickListener, onPostLrcItems, OnCheckedChangeListener {
private String dialogtitle;
private TrackInfo info;
private ListView lrclist;
private Button positive, negitive, readtag1;
private CheckBox tagflag;
private EditText title, artist, album;
private ProgressBar waitingbar;
public FragmentInfoInputDialog(TrackInfo info, String title) {
this.dialogtitle = title;
this.info = info;
setStyle(DialogFragment.STYLE_NORMAL,
android.R.style.Theme_Holo_DialogWhenLarge);
}
private void getText() {
info.title = title.getText().toString();
info.artist = artist.getText().toString();
info.album = album.getText().toString();
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
((MainActivity) getActivity()).Service.setRWFlag(isChecked);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.positivebtn:
negitive.setEnabled(false);
waitingbar.setVisibility(View.VISIBLE);
InputMethodManager imm = (InputMethodManager) getActivity()
.getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(positive.getWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);
getDialog().setCancelable(false);
getText();
if (tagflag.isChecked())
MediaDatabase.updateTrackInfo(info);
Tasks.startLrcSearchTask(this);
break;
case R.id.negitivebtn:
this.dismiss();
break;
case R.id.additionbtn:
String[] ID3 = new String[3];
boolean suc = new ID3().getID3v1(info.path, ID3);
if (suc) {
title.setText(ID3[0]);
artist.setText(ID3[1]);
album.setText(ID3[2]);
} else
Toast.makeText(getActivity(), "找不到ID3v1", Toast.LENGTH_SHORT)
.show();
break;
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
getDialog().setTitle(dialogtitle);
View dialog = inflater.inflate(R.layout.infodialog, container, false);
title = (EditText) dialog.findViewById(R.id.et_title);
title.setText(info.title);
lrclist = (ListView) dialog.findViewById(R.id.lrclist);
artist = (EditText) dialog.findViewById(R.id.et_artist);
artist.setText(info.artist);
album = (EditText) dialog.findViewById(R.id.et_album);
album.setText(info.album);
readtag1 = (Button) dialog.findViewById(R.id.additionbtn);
readtag1.setOnClickListener(this);
tagflag = (CheckBox) dialog.findViewById(R.id.tagoption);
tagflag.setOnCheckedChangeListener(this);
positive = (Button) dialog.findViewById(R.id.positivebtn);
negitive = (Button) dialog.findViewById(R.id.negitivebtn);
waitingbar = (ProgressBar) dialog.findViewById(R.id.waitingbar);
positive.setOnClickListener(this);
negitive.setOnClickListener(this);
return dialog;
}
@Override
public void onLrcSearchDone(List<LyricResults> items) {
waitingbar.setVisibility(View.GONE);
negitive.setEnabled(true);
setCancelable(true);
if (items != null) {
lrclist.setAdapter(new QianQianAdapter(items, getActivity()));
lrclist.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
LyricResults selected = ((LyricResults) parent
.getItemAtPosition(position));
info.title = selected.track;
info.artist = selected.artist;
MediaDatabase.updateTrackInfo(info);
((MainActivity) getActivity()).StartLoad(selected.id);
FragmentInfoInputDialog.this.dismiss();
}
});
} else
Toast.makeText(getActivity(), "没有找到歌词", Toast.LENGTH_SHORT).show();
}
}