package net.coding.program.login.auth;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import net.coding.program.R;
import net.coding.program.model.AccountInfo;
import java.util.ArrayList;
import se.emilsjolander.stickylistheaders.StickyListHeadersAdapter;
/**
* Created by chenchao on 15/7/1.
*/
public class AuthAdapter extends ArrayAdapter<AuthInfo> implements StickyListHeadersAdapter {
LayoutInflater mLayoutInflater;
public AuthAdapter(Context context, int resource) {
super(context, resource);
mLayoutInflater = LayoutInflater.from(context);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
HolderAuthinfo holder;
if (convertView == null) {
convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.auth_list_item, parent, false);
holder = new HolderAuthinfo();
holder.name = (TextView) convertView.findViewById(R.id.name);
holder.code = (TextView) convertView.findViewById(R.id.code);
holder.company = (TextView) convertView.findViewById(R.id.company);
holder.indicator = (CountdownIndicator) convertView.findViewById(R.id.indicator);
convertView.setTag(holder);
} else {
holder = (HolderAuthinfo) convertView.getTag();
}
AuthInfo data = getItem(position);
holder.company.setText(data.getCompany());
holder.name.setText(data.getAccountName());
String code = data.getCode();
String newCode = code;
if (code.length() > 3) {
newCode = code.substring(0, 3) + " " + code.substring(3, code.length());
}
holder.code.setText(newCode);
return convertView;
}
public boolean containItem(AuthInfo item) {
for (int i = 0; i < getCount(); ++i) {
AuthInfo info = getItem(i);
if (item.equals(info)) {
return true;
}
}
return false;
}
public boolean containItemDiffSecrect(AuthInfo item) {
for (int i = 0; i < getCount(); ++i) {
AuthInfo info = getItem(i);
if (item.equalsAccount(info)) {
return true;
}
}
return false;
}
public void add(AuthInfo item) {
setNotifyOnChange(false);
for (int i = 0; i < getCount(); ++i) {
AuthInfo info = getItem(i);
if (item.equalsAccount(info)) {
remove(info);
}
}
setNotifyOnChange(true);
super.add(item);
}
public void saveData() {
ArrayList<String> uris = new ArrayList<>();
for (int i = 0; i < getCount(); ++i) {
String uri = getItem(i).getUriString();
uris.add(uri);
}
AccountInfo.saveAuthDatas(getContext(), uris);
}
@Override
public View getHeaderView(int i, View view, ViewGroup viewGroup) {
if (i == 0) {
return mLayoutInflater.inflate(R.layout.divide_0, null);
} else {
return mLayoutInflater.inflate(R.layout.divide_15_top_bottom, null);
}
}
@Override
public long getHeaderId(int i) {
return i;
}
static final class HolderAuthinfo {
public TextView name;
public TextView code;
public TextView company;
public CountdownIndicator indicator;
}
}