package com.ladjzero.uzlee;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.util.TypedValue;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.ladjzero.hipda.Thread;
import com.ladjzero.hipda.User;
import com.ladjzero.uzlee.utils.Constants;
import com.ladjzero.uzlee.utils.Utils;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.FailReason;
import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;
import java.util.ArrayList;
public class AdapterThreads extends ArrayAdapter<Thread> implements View.OnClickListener {
ActivityBase context;
Core core;
private float mFontSize;
private int mColorRead, mColorUnread;
private LocalApi mLocalApi;
private boolean mShowProfileImage;
public AdapterThreads(Context context, ArrayList<Thread> threads) {
super(context, R.layout.list_item_thread, threads);
this.context = (ActivityBase) context;
mColorRead = Utils.getThemeColor(context, R.attr.colorTextLighter);
mColorUnread = Utils.getThemeColor(context, R.attr.colorUnread);
mLocalApi = App.getInstance().getCore().getLocalApi();
initalPreferences();
}
private void initalPreferences() {
SharedPreferences setting = context.getSettings();
String fontsize = setting.getString("font_size", "normal");
if (fontsize.equals("normal")) {
mFontSize = 16f;
} else if (fontsize.equals("big")) {
mFontSize = 20f;
} else {
mFontSize = 24f;
}
mShowProfileImage = setting.getBoolean(Constants.PREF_KEY_SHOW_PROFILE_IMAGE, true);
}
@Override
public void notifyDataSetChanged() {
initalPreferences();
super.notifyDataSetChanged();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
final PostHolder holder = row == null ? new PostHolder() : (PostHolder) row.getTag();
if (row == null) {
row = context.getLayoutInflater().inflate(R.layout.list_item_thread, parent, false);
holder.userWrapper = row.findViewById(R.id.user_wrapper);
holder.image = (ImageView) row.findViewById(R.id.user_image);
holder.imageMask = (TextView) row.findViewById(R.id.user_image_mask);
holder.name = (TextView) row.findViewById(R.id.user_mini_name);
holder.title = (TextView) row.findViewById(R.id.thread_title);
holder.date = (TextView) row.findViewById(R.id.thread_date);
holder.commentCount = (TextView) row.findViewById(R.id.thread_comment_count);
row.setTag(holder);
}
final Thread thread = getItem(position);
final User author = thread.getAuthor();
String imageUrl = author.getImage();
final int uid = author.getId();
final String userName = author.getName();
String color = thread.getColor();
int count = thread.getCommentCount();
boolean isNew = thread.isNew();
if (mShowProfileImage) {
holder.userWrapper.setVisibility(View.VISIBLE);
holder.imageMask.setText(Utils.getFirstChar(userName));
ImageLoader.getInstance().displayImage(imageUrl, holder.image, ActivityBase.LowQualityDisplay, new SimpleImageLoadingListener() {
@Override
public void onLoadingComplete(String imageUri, android.view.View view, android.graphics.Bitmap loadedImage) {
author.setImage(imageUri);
}
@Override
public void onLoadingFailed(String imageUri, android.view.View view, FailReason failReason) {
((ImageView) view).setImageResource(android.R.color.transparent);
author.setImage(null);
holder.imageMask.setText(Utils.getFirstChar(userName));
}
});
holder.image.setTag(author);
holder.image.setOnClickListener(this);
} else {
holder.userWrapper.setVisibility(View.GONE);
holder.name.setTag(author);
holder.name.setOnClickListener(this);
}
holder.date.setText(Utils.prettyTime(thread.getDateStr()));
holder.name.setText(thread.getAuthor().getName());
if (mLocalApi.getBanned().contains(new User().setId(uid))) {
holder.title.setText(context.getString(R.string.blocked));
} else {
holder.title.setText(thread.getTitle());
holder.title.getPaint().setFakeBoldText(thread.getBold());
}
if (color != null && color.length() > 0) {
holder.title.setTextColor(lowerSaturation(Color.parseColor(color)));
} else {
holder.title.setTextColor(Utils.getThemeColor(context, R.attr.colorText));
}
holder.title.setTextSize(TypedValue.COMPLEX_UNIT_SP, mFontSize);
holder.commentCount.setBackgroundColor(isNew ? mColorUnread : mColorRead);
holder.commentCount.setText(String.valueOf(count));
return row;
}
@Override
public void onClick(View view) {
User me = mLocalApi.getUser();
if (me == null || me.getId() == 0) {
context.showToast(context.getResources().getString(R.string.error_login_required));
} else {
User user = (User) view.getTag();
Intent intent = new Intent(context, ActivityUser.class);
intent.putExtra("uid", user.getId());
intent.putExtra("name", user.getName());
context.startActivity(intent);
}
}
private int lowerSaturation(int color) {
float[] hsv = new float[3];
Color.colorToHSV(color, hsv);
hsv[1] = 0.48f;
return Color.HSVToColor(hsv);
}
static class PostHolder {
View userWrapper;
ImageView image;
TextView imageMask;
TextView name;
TextView date;
TextView title;
TextView commentCount;
}
}