project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/TeamlistAdapter.java
changeset 7508 763d3961400b
child 7582 714310efad8f
equal deleted inserted replaced
7504:ed1d52c5aa94 7508:763d3961400b
       
     1 package org.hedgewars.hedgeroid;
       
     2 
       
     3 import java.util.Comparator;
       
     4 
       
     5 import org.hedgewars.hedgeroid.R;
       
     6 import org.hedgewars.hedgeroid.Datastructures.TeamInGame;
       
     7 import org.hedgewars.hedgeroid.Datastructures.TeamIngameAttributes;
       
     8 import org.hedgewars.hedgeroid.util.ObservableTreeMapAdapter;
       
     9 
       
    10 import android.graphics.drawable.ColorDrawable;
       
    11 import android.graphics.drawable.Drawable;
       
    12 import android.view.LayoutInflater;
       
    13 import android.view.View;
       
    14 import android.view.View.OnClickListener;
       
    15 import android.view.ViewGroup;
       
    16 import android.widget.ImageButton;
       
    17 import android.widget.TextView;
       
    18 
       
    19 public class TeamlistAdapter extends ObservableTreeMapAdapter<String, TeamInGame> {
       
    20 	private boolean colorHogcountEnabled = false;
       
    21 	private Listener listener;
       
    22 	
       
    23 	@Override
       
    24 	protected Comparator<TeamInGame> getEntryOrder() {
       
    25 		return TeamInGame.NAME_ORDER;
       
    26 	}
       
    27 
       
    28 	public void setColorHogcountEnabled(boolean colorHogcountEnabled) {
       
    29 		this.colorHogcountEnabled = colorHogcountEnabled;
       
    30 		notifyDataSetChanged();
       
    31 	}
       
    32 	
       
    33 	public void setListener(Listener listener) {
       
    34 		this.listener = listener;
       
    35 	}
       
    36 	
       
    37 	public View getView(int position, View convertView, ViewGroup parent) {
       
    38 		View v = convertView;
       
    39 		if (v == null) {
       
    40 			LayoutInflater vi = LayoutInflater.from(parent.getContext());
       
    41 			v = vi.inflate(R.layout.listview_team, null);
       
    42 		}
       
    43 
       
    44 		TeamInGame team = getItem(position);
       
    45 		TextView teamNameView = (TextView) v.findViewById(android.R.id.text1);
       
    46 		ImageButton colorButton = (ImageButton) v.findViewById(R.id.colorButton);
       
    47 		ImageButton hogCountButton = (ImageButton) v.findViewById(R.id.hogCountButton);
       
    48 		
       
    49 		teamNameView.setText(team.team.name);
       
    50 		int teamImage;
       
    51 		if(team.ingameAttribs.remoteDriven) {
       
    52 			teamImage = R.drawable.team_net_by_level;
       
    53 		} else {
       
    54 			teamImage = R.drawable.team_local_by_level;
       
    55 		}
       
    56 		
       
    57 		Drawable d = parent.getContext().getResources().getDrawable(teamImage).mutate();
       
    58 		d.setLevel(team.team.hogs.get(0).level);
       
    59 		teamNameView.setCompoundDrawablesWithIntrinsicBounds(d, null, null, null);
       
    60 		hogCountButton.getDrawable().setLevel(team.ingameAttribs.hogCount);
       
    61 		colorButton.setImageDrawable(new ColorDrawable(TeamIngameAttributes.TEAM_COLORS[team.ingameAttribs.colorIndex]));
       
    62 		
       
    63 		colorButton.setEnabled(colorHogcountEnabled);
       
    64 		hogCountButton.setEnabled(colorHogcountEnabled);
       
    65 		
       
    66 		colorButton.setOnClickListener(new ButtonClickListener(team, Type.COLOR_BUTTON));
       
    67 		hogCountButton.setOnClickListener(new ButtonClickListener(team, Type.HOGCOUNT_BUTTON));
       
    68 		
       
    69 		if(team.ingameAttribs.remoteDriven) {
       
    70 			teamNameView.setClickable(false);
       
    71 		} else {
       
    72 			teamNameView.setOnClickListener(new ButtonClickListener(team, Type.TEAM_VIEW));
       
    73 		}
       
    74 		
       
    75 		return v;
       
    76 	}
       
    77 	
       
    78 	private static enum Type {COLOR_BUTTON, HOGCOUNT_BUTTON, TEAM_VIEW}
       
    79 	private final class ButtonClickListener implements OnClickListener {
       
    80 		private final TeamInGame team;
       
    81 		private final Type type;
       
    82 		
       
    83 		public ButtonClickListener(TeamInGame team, Type type) {
       
    84 			this.team = team;
       
    85 			this.type = type;
       
    86 		}
       
    87 		
       
    88 		public void onClick(View v) {
       
    89 			if(listener != null) {
       
    90 				switch(type) {
       
    91 				case COLOR_BUTTON:
       
    92 					listener.onColorClicked(team);
       
    93 					break;
       
    94 				case HOGCOUNT_BUTTON:
       
    95 					listener.onHogcountClicked(team);
       
    96 					break;
       
    97 				case TEAM_VIEW:
       
    98 					listener.onTeamClicked(team);
       
    99 					break;
       
   100 				default:
       
   101 					throw new IllegalStateException();	
       
   102 				}
       
   103 			}
       
   104 		}
       
   105 	}
       
   106 	
       
   107 	public interface Listener {
       
   108 		void onTeamClicked(TeamInGame team);
       
   109 		void onColorClicked(TeamInGame team);
       
   110 		void onHogcountClicked(TeamInGame team);
       
   111 	}
       
   112 }