package iShamrock.Postal.items;
import android.content.ContentResolver;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.provider.MediaStore;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import iShamrock.Postal.R;
import iShamrock.Postal.activity.Timeline;
import iShamrock.Postal.commons.adapters.ItemsAdapter;
import iShamrock.Postal.commons.utils.Views;
import iShamrock.Postal.database.Database;
import iShamrock.Postal.entity.PostalDataItem;
import iShamrock.Postal.util.SystemUtil;
import java.util.Arrays;
//import com.squareup.picasso.Picasso;
public class PaintingsAdapter extends ItemsAdapter<Painting> implements View.OnClickListener {
Context context;
Resources resources;
ContentResolver contentResolver;
public PaintingsAdapter(Context context) {
super(context);
resources = context.getResources();
contentResolver = context.getContentResolver();
setItemsList(Arrays.asList(Painting.getAllPaintings(context.getResources())));
}
@Override
public void notifyDataSetChanged() {
setItemsList(Arrays.asList(Painting.getAllPaintings(resources)));
super.notifyDataSetChanged();
}
@Override
protected View createView(Painting item, int pos, ViewGroup parent, LayoutInflater inflater) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false);
ViewHolder vh = new ViewHolder();
vh.total = Views.find(view, R.id.total_list_item);
vh.linearLayout = Views.find(view, R.id.timeline_animation);
vh.linearLayout.setOnClickListener(this);
vh.contents = Views.find(view, R.id.list_contents);
vh.name = Views.find(view, R.id.list_item_name);
vh.text = Views.find(view, R.id.list_item_title);
vh.imageView = Views.find(view, R.id.list_item_image);
vh.imageView2 = Views.find(view, R.id.list_item_image_2);
vh.cover = Views.find(view, R.id.list_cover);
vh.profile = Views.find(view, R.id.profile_photo);
view.setTag(vh);
return view;
}
/**
* modify all the view's things about UI here
* It's preferred to change thing only in switch/case, or you debug yourself when something unexpected happens
*
* @param item:
*/
@Override
protected void bindView(Painting item, int pos, View convertView) {
ViewHolder vh = (ViewHolder) convertView.getTag();
vh.linearLayout.setTag(item);
if (item.getItem().time.equals("cover")) {
vh.total.removeAllViews();
vh.total.addView(vh.cover);
vh.total.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
notifyDataSetChanged();
}
});
return;
} else {
vh.total.removeAllViews();
vh.total.addView(vh.contents);
try {
Bitmap bitmap = MediaStore.Images.Media.getBitmap(contentResolver,
Uri.parse(Database.getPhotoURIWithName(item.getItem().from_user)));
vh.profile.setImageBitmap(SystemUtil.toRoundCorner(bitmap));
} catch (Exception e) {
// e.printStackTrace();
}
}
String text = item.getItem().text;
if (text.length() > 50) {
text = text.substring(0, 50) + "......";
}
vh.imageView2.setImageBitmap(null);
vh.imageView.setImageBitmap(null);
switch (item.getItem().type) {
case PostalDataItem.TYPE_IMAGE:
try {
vh.imageView2.setImageBitmap(MediaStore.Images.Media.getBitmap(contentResolver, Uri.parse(item.getItem().uri)));
} catch (Exception e) {
// e.printStackTrace();
}
vh.text.setText(text);
vh.name.setText(Database.getNameWithPhone(item.getItem().from_user));
break;
case PostalDataItem.TYPE_VIDEO:
//VideoView videoView = new VideoView(getContext());
//videoView.setVideoURI(Uri.parse(item.getItem().uri));
//vh.frameLayout.addView(videoView);
Bitmap video = BitmapFactory.decodeResource(resources, R.drawable.video_cover);
// Bitmap resizedBitmap = Bitmap.createScaledBitmap(video, 300, 300, false);
vh.imageView.setImageBitmap(video);
vh.text.setText(text);
vh.name.setText(Database.getNameWithPhone(item.getItem().from_user));
break;
case PostalDataItem.TYPE_AUDIO:
// ImageView audioImageView = new ImageView(getContext());
// audioImageView.setImageBitmap(BitmapFactory.decodeResource(resources, R.drawable.voice_message_playing));
// audioImageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
// vh.frameLayout.addView(audioImageView);
vh.text.setText(text);
vh.name.setText(Database.getNameWithPhone(item.getItem().from_user));
Bitmap audio = BitmapFactory.decodeResource(resources, R.drawable.audio_cover);
// audio = Bitmap.createScaledBitmap(audio, 300, 300, false);
vh.imageView.setImageBitmap(audio);
break;
case PostalDataItem.TYPE_WEB:
//todo
break;
case PostalDataItem.TYPE_TEXT:
vh.text.setLines(8);
vh.text.setText(text);
vh.linearLayout.setOnClickListener(null);
vh.name.setText(Database.getNameWithPhone(item.getItem().from_user));
break;
}
}
@Override
public void onClick(View view) {
if (view.getContext() instanceof Timeline) {
Timeline activity = (Timeline) view.getContext();
activity.openDetails(view, (Painting) view.getTag());
}
}
private static class ViewHolder {
LinearLayout total;
LinearLayout linearLayout;
LinearLayout contents;
FrameLayout cover;
TextView name;
ImageView imageView;
ImageView imageView2;
TextView text;
ImageView profile;
}
}