package com.buddycloud.utils;
import org.json.JSONObject;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.buddycloud.R;
import com.buddycloud.model.ChannelMetadataModel;
import com.buddycloud.model.SyncModel;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
public class ChannelAdapterHelper {
public static View createChannelPersonalHeader(Context context, View convertView,
ViewGroup viewGroup, String channelJid) {
LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext());
convertView = inflater.inflate(R.layout.channel_personal_header, viewGroup, false);
String avatarURL = AvatarUtils.avatarURL(context, channelJid);
DisplayImageOptions dio = new DisplayImageOptions.Builder()
.cloneFrom(ImageHelper.defaultImageOptions())
.showImageOnFail(R.drawable.ic_avatar)
.showImageOnLoading(R.drawable.ic_avatar)
.build();
ImageView avatar = (ImageView) convertView.findViewById(R.id.bcProfilePic);
ImageLoader.getInstance().displayImage(avatarURL, avatar, dio);
String[] channelUserName = channelJid.split("@");
TextView bcUsername = (TextView) convertView.findViewById(R.id.bcUserName);
bcUsername.setText(TextUtils.capitalize(channelUserName[0]));
TextView bcUserChannelJId = (TextView) convertView.findViewById(R.id.bcUserChannelJId);
bcUserChannelJId.setText(channelJid);
return convertView;
}
public static View createChannelGroupItem(Context context, View convertView,
ViewGroup viewGroup, String channelGroup) {
LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext());
convertView = inflater.inflate(R.layout.channel_group_header, viewGroup, false);
TextView groupHeader = (TextView) convertView.findViewById(R.id.groupHeader);
groupHeader.setText(channelGroup);
return convertView;
}
public static View createChannelMenuItem(Context context, View convertView,
ViewGroup viewGroup, String channelJid) {
ViewHolder holder = null;
boolean firstLoad = convertView == null;
if (firstLoad) {
LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext());
convertView = inflater.inflate(R.layout.channel_item, viewGroup, false);
holder = fillHolder(convertView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
// Title and description
loadTitleAndDescription(context, holder, channelJid);
// Load avatar
loadAvatar(context, holder, channelJid);
// Counters
loadCounters(context, holder, channelJid);
return convertView;
}
private static class ViewHolder {
TextView title;
TextView description;
TextView unreadCounter;
ImageView avatar;
}
private static ViewHolder fillHolder(View view) {
ViewHolder viewHolder = new ViewHolder();
viewHolder.title = (TextView) view.findViewById(R.id.bcUserId);
viewHolder.description = (TextView) view.findViewById(R.id.bcMessage);
viewHolder.unreadCounter = (TextView) view.findViewById(R.id.unreadCounter);
viewHolder.avatar = (ImageView) view.findViewById(R.id.bcProfilePic);
return viewHolder;
}
private static void loadTitleAndDescription(Context parent, final ViewHolder holder, final String channelJid) {
JSONObject metadata = ChannelMetadataModel.getInstance().getFromCache(parent, channelJid);
String channelTitle = channelJid;
String channelDescription = null;
if (metadata != null) {
channelTitle = metadata.optString("title");
channelDescription = metadata.optString("description");
}
holder.title.setText(channelTitle);
holder.description.setText(channelDescription);
}
private static void loadAvatar(Context parent, ViewHolder holder, String channelJid) {
String avatarURL = AvatarUtils.avatarURL(parent, channelJid);
DisplayImageOptions dio = new DisplayImageOptions.Builder()
.cloneFrom(ImageHelper.defaultImageOptions())
.showImageOnFail(R.drawable.personal_50px)
.showImageOnLoading(R.drawable.personal_50px)
.build();
ImageLoader.getInstance().displayImage(avatarURL, holder.avatar, dio);
}
private static void loadCounters(Context context, final ViewHolder holder, final String channelJid) {
JSONObject allCounters = SyncModel.getInstance().getFromCache(context, channelJid);
JSONObject counters = allCounters.optJSONObject(channelJid);
if (counters != null) {
Integer totalCount = counters.optInt("totalCount");
if (totalCount > 30) {
holder.unreadCounter.setText("30+");
} else {
holder.unreadCounter.setText(totalCount.toString());
}
} else {
holder.unreadCounter.setText("0");
}
}
}