package aceim.app.view.page.other;
import java.util.List;
import aceim.api.dataentity.Buddy;
import aceim.api.dataentity.PersonalInfo;
import aceim.api.service.ApiConstants;
import aceim.app.R;
import aceim.app.dataentity.Account;
import aceim.app.utils.DialogUtils;
import aceim.app.view.page.Page;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
public class SearchResult extends Page {
private final Account mAccount;
private final List<PersonalInfo> mInfos;
private ListView mList;
public SearchResult(Account account, List<PersonalInfo> mInfos) {
this.mAccount = account;
this.mInfos = mInfos;
}
@Override
public Drawable getIcon(Context context) {
return context.getResources().getDrawable(R.drawable.ic_menu_friendslist);
}
@Override
public String getTitle(Context context) {
return context.getString(R.string.search_result);
}
@Override
protected View createView(LayoutInflater inflater, ViewGroup group, Bundle saved) {
View view = inflater.inflate(R.layout.search_result_list, null);
mList = (ListView) view.findViewById(R.id.list);
mList.setAdapter(new PersonalInfoAdapter(getMainActivity()));
return view;
}
private class PersonalInfoAdapter extends ArrayAdapter<PersonalInfo> {
public PersonalInfoAdapter(Context context) {
super(context, R.layout.contact_list_plain_item, R.id.username, mInfos);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view;
if (convertView == null) {
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.contact_list_plain_item, null);
} else {
view = convertView;
}
fillView(view, getItem(position));
return view;
}
private void fillView(View container, final PersonalInfo item) {
ImageView icon = (ImageView) container.findViewById(R.id.image_icon);
ImageView status = (ImageView) container.findViewById(R.id.image_status);
ImageView extraImage1 = (ImageView) container.findViewById(R.id.image_extra_1);
ImageView extraImage2 = (ImageView) container.findViewById(R.id.image_extra_2);
ImageView extraImage3 = (ImageView) container.findViewById(R.id.image_extra_3);
ImageView extraImage4 = (ImageView) container.findViewById(R.id.image_extra_4);
TextView xstatusLabel = (TextView) container.findViewById(R.id.label_xstatus);
final TextView username = (TextView) container.findViewById(R.id.username);
boolean buddyManagementAvailable = mAccount.getOnlineInfo().getFeatures().getBoolean(ApiConstants.FEATURE_BUDDY_MANAGEMENT, false);
status.setVisibility(buddyManagementAvailable ? View.VISIBLE : View.GONE);
if (buddyManagementAvailable) {
status.setClickable(true);
status.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Buddy buddy = new Buddy(item.getProtocolUid(), mAccount.getProtocolUid(), mAccount.getProtocolName(), mAccount.getServiceId());
buddy.setGroupId(ApiConstants.NOT_IN_LIST_GROUP_ID);
buddy.setName(username.getText().toString());
if (item.isMultichat()) {
} else {
DialogUtils.showAddBuddyDialog(buddy, mAccount, getMainActivity());
}
}
});
} else {
status.setClickable(false);
}
ImageView[] images = new ImageView[] { extraImage1, extraImage2, extraImage3, extraImage4 };
if (item.getProperties().containsKey(PersonalInfo.INFO_NICK)) {
xstatusLabel.setText(item.getProtocolUid());
}
username.setText(item.getProperties().getString(PersonalInfo.INFO_NICK));
if (item.getProperties().containsKey(PersonalInfo.INFO_ICON)) {
byte[] bytes = item.getProperties().getByteArray(PersonalInfo.INFO_ICON);
Bitmap b = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
icon.setImageBitmap(b);
icon.setVisibility(View.VISIBLE);
} else {
icon.setVisibility(View.GONE);
}
int imagesIndex = 0;
//TODO generalize
if (item.getProperties().containsKey(PersonalInfo.INFO_GENDER)) {
String gender = item.getProperties().getString(PersonalInfo.INFO_GENDER);
if (gender.equalsIgnoreCase("male")) {
extraImage1.setImageResource(R.drawable.male);
imagesIndex++;
} else if (gender.equalsIgnoreCase("female")) {
extraImage1.setImageResource(R.drawable.female);
imagesIndex++;
}
}
for (int i = imagesIndex; i < images.length; i++) {
if (images[i] != null) {
images[i].setVisibility(View.GONE);
}
}
int pad = getContext().getResources().getDimensionPixelSize(R.dimen.default_padding);
container.setPadding(pad, pad, pad, 0);
container.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Page.getPersonalInfoPage(getMainActivity().getScreen(), item);
}
});
}
}
}