package com.saikali.android_skwissh.adapters;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.Typeface;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.saikali.android_skwissh.R;
import com.saikali.android_skwissh.ServerDetailActivity;
import com.saikali.android_skwissh.objects.SkwisshServerContent.SkwisshServerItem;
import com.saikali.android_skwissh.objects.SkwisshServerGroupContent;
import com.saikali.android_skwissh.objects.SkwisshServerGroupContent.SkwisshServerGroupItem;
public class ServersAdapter extends BaseExpandableListAdapter {
public Context context;
private List<SkwisshServerGroupItem> serverGroupItems = new ArrayList<SkwisshServerGroupItem>();
private LayoutInflater inflater;
private Typeface tf;
public ServersAdapter(Context context) {
this.context = context;
this.inflater = LayoutInflater.from(context);
this.tf = Typeface.createFromAsset(context.getAssets(), "fonts/Oxygen.otf");
}
@Override
public boolean areAllItemsEnabled() {
return true;
}
@Override
public Object getChild(int gPosition, int cPosition) {
return this.serverGroupItems.get(gPosition).getServers().get(cPosition);
}
@Override
public long getChildId(int gPosition, int cPosition) {
return cPosition;
}
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
final SkwisshServerItem server = (SkwisshServerItem) this.getChild(groupPosition, childPosition);
ChildViewHolder childViewHolder;
if (convertView == null) {
childViewHolder = new ChildViewHolder();
convertView = this.inflater.inflate(R.layout.activity_servers_list_server_item, null);
childViewHolder.serverName = (TextView) convertView.findViewById(R.id.serverName);
childViewHolder.serverStatus = (ImageView) convertView.findViewById(R.id.imageViewServerStatus);
convertView.setTag(childViewHolder);
} else {
childViewHolder = (ChildViewHolder) convertView.getTag();
}
Resources res = this.context.getResources();
if (server.isAvailable()) {
childViewHolder.serverStatus.setImageDrawable(res.getDrawable(R.drawable.server_up));
} else {
childViewHolder.serverStatus.setImageDrawable(res.getDrawable(R.drawable.server_down));
}
childViewHolder.serverName.setText(server.getHostname());
childViewHolder.serverName.setTypeface(this.tf);
childViewHolder.serverName.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent serverDetailIntent = new Intent(v.getContext(), ServerDetailActivity.class);
serverDetailIntent.putExtra("server_id", server.getId());
serverDetailIntent.putExtra("group_id", server.getServerGroup().getId());
v.getContext().startActivity(serverDetailIntent);
}
});
return convertView;
}
@Override
public int getChildrenCount(int gPosition) {
return this.serverGroupItems.get(gPosition).getServers().size();
}
@Override
public Object getGroup(int gPosition) {
return this.serverGroupItems.get(gPosition);
}
@Override
public int getGroupCount() {
return this.serverGroupItems.size();
}
@Override
public long getGroupId(int gPosition) {
return gPosition;
}
public void updateEntries() {
this.serverGroupItems = SkwisshServerGroupContent.ITEMS;
this.notifyDataSetChanged();
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
final SkwisshServerGroupItem serverGroup = (SkwisshServerGroupItem) this.getGroup(groupPosition);
GroupViewHolder gholder;
if (convertView == null) {
gholder = new GroupViewHolder();
convertView = this.inflater.inflate(R.layout.activity_servers_list_servergroup_item, null);
gholder.serverGroupName = (TextView) convertView.findViewById(R.id.serverGroupName);
gholder.serversCount = (TextView) convertView.findViewById(R.id.serversCount);
convertView.setTag(gholder);
} else {
gholder = (GroupViewHolder) convertView.getTag();
}
gholder.serverGroupName.setText(serverGroup.getName());
gholder.serverGroupName.setTypeface(this.tf);
String label = " servers";
if (serverGroup.getServers().size() == 1) {
label = " server";
}
gholder.serversCount.setText(Integer.toString(serverGroup.getServers().size()) + label);
gholder.serversCount.setTypeface(this.tf);
return convertView;
}
@Override
public boolean hasStableIds() {
return true;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
class GroupViewHolder {
public TextView serverGroupName;
public TextView serversCount;
}
class ChildViewHolder {
public ImageView serverStatus;
public TextView serverName;
}
}