package org.freemp.droid.playlist;
import android.app.Activity;
import android.graphics.Color;
import android.text.TextUtils;
import android.util.TypedValue;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.CheckBox;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.androidquery.AQuery;
import org.freemp.droid.ClsTrack;
import org.freemp.droid.R;
import org.freemp.droid.StringUtils;
import java.util.ArrayList;
/**
* Created with IntelliJ IDEA.
* User: recoilme
* Date: 27/11/13
* Time: 18:30
* To change this template use File | Settings | File Templates.
*/
public class AdpPlaylist extends BaseExpandableListAdapter {
ArrayList<ClsArrTrack> data;
Activity activity;
float scale;
int med = 18, sml = 14;
public AdpPlaylist(Activity activity, ArrayList<ClsArrTrack> data) {
this.data = data;
med = (int) activity.getResources().getDimension(R.dimen.medium_text);
sml = (int) activity.getResources().getDimension(R.dimen.small_text);
this.activity = activity;
scale = activity.getResources().getDisplayMetrics().density;
}
@Override
public int getGroupCount() {
return data.size();
}
@Override
public int getChildrenCount(int groupPosition) {
return data.get(groupPosition).getPlaylists().size();
}
@Override
public Object getGroup(int groupPosition) {
return data.get(groupPosition);
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return data.get(groupPosition).getPlaylists().get(childPosition);
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public boolean hasStableIds() {
return true;
}
public ArrayList<ClsTrack> getSelected() {
ArrayList<ClsTrack> tracks = new ArrayList<ClsTrack>();
for (ClsArrTrack arrTrack : data) {
if (arrTrack.getPlaylists() == null) {
continue;
}
for (ClsTrack track : arrTrack.getPlaylists()) {
if (track.isSelected()) {
tracks.add(track);
}
}
}
return tracks;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = activity.getLayoutInflater().inflate(R.layout.playlist_group_row, null);
}
AQuery listAq = new AQuery(convertView);
final ClsArrTrack o = data.get(groupPosition);
final String section = o.getArtists();
listAq.id(R.id.section).gone();
if (groupPosition == 0 && !TextUtils.equals(section, "")) {
//recently added
listAq.id(R.id.section).visible();
listAq.id(R.id.section).text(StringUtils.capitalizeFully(section));
} else {
if (!TextUtils.equals(section, "") && (groupPosition > 0)) {
if (!TextUtils.equals(section, data.get(groupPosition - 1).getArtists())) {
listAq.id(R.id.section).visible();
listAq.id(R.id.section).text(StringUtils.capitalizeFully(section));
}
}
}
listAq.id(R.id.section).text(StringUtils.capitalizeFully(o.getArtists()));
listAq.id(R.id.textView).text(StringUtils.capitalizeFully(o.getDescription()));
final CheckBox checkBox = listAq.id(R.id.checkBox).getCheckBox();
final int checkSelection = o.checkSelection();
checkBox.setChecked((checkSelection >= 0));
if (checkSelection == 1) {
listAq.id(R.id.textView).textColor(Color.parseColor("#FDC332"));
} else if (checkSelection == 0) {
listAq.id(R.id.textView).textColor(Color.parseColor("#CC681F"));
} else {
listAq.id(R.id.textView).textColor(Color.parseColor("#F6FFFF"));
}
final int pos = groupPosition;
listAq.id(R.id.relativeLayout).clicked(new View.OnClickListener() {
@Override
public void onClick(View v) {
checkBox.setChecked(!(checkSelection >= 0));
ArrayList<ClsTrack> tracks = o.getPlaylists();
for (int i = 0; i < tracks.size(); i++) {
ClsTrack t = tracks.get(i);
t.setSelected(!(checkSelection >= 0));
tracks.set(i, t);
}
data.set(pos, o);
invalidate();
}
});
return convertView;
}
public void invalidate() {
((ActPlaylist) activity).updateColor();
this.notifyDataSetChanged();
}
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
final LinearLayout linearLayout = new LinearLayout(activity);
linearLayout.setOrientation(LinearLayout.VERTICAL);
int dpAsPixels = (int) (10 * scale + 0.5f);
linearLayout.setPadding(dpAsPixels, dpAsPixels, dpAsPixels, dpAsPixels);
final ClsTrack o = data.get(groupPosition).getPlaylists().get(childPosition);
final TextView artist = new TextView(activity);
//artist.setTextAppearance(activity,android.R.attr.textAppearanceMedium);
artist.setTextSize(TypedValue.COMPLEX_UNIT_PX, med);
artist.setText(o.getArtist());
final TextView title = new TextView(activity);
title.setTextSize(TypedValue.COMPLEX_UNIT_PX, sml);
title.setText(o.getTitle());
linearLayout.addView(artist);
linearLayout.addView(title);
//selected
if (o.isSelected()) {
title.setTextColor(Color.parseColor("#FDC332"));
} else {
title.setTextColor(Color.GRAY);
}
//selection
final int posGroup = groupPosition;
final int posChild = childPosition;
linearLayout.setClickable(true);
linearLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!o.isSelected()) {
title.setTextColor(Color.parseColor("#FDC332"));
} else {
title.setTextColor(Color.GRAY);
}
o.setSelected(!o.isSelected());
ClsArrTrack group = data.get(posGroup);
ArrayList<ClsTrack> tracks = group.getPlaylists();
ClsTrack t = tracks.get(posChild);
t.setSelected(o.isSelected());
tracks.set(posChild, t);
data.set(posGroup, group);
invalidate();
}
});
return linearLayout;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
}