project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/TeamlistFragment.java
changeset 10017 de822cd3df3a
parent 7584 7831c84cc644
equal deleted inserted replaced
10015:4feced261c68 10017:de822cd3df3a
    35 import android.view.View.OnClickListener;
    35 import android.view.View.OnClickListener;
    36 import android.view.ViewGroup;
    36 import android.view.ViewGroup;
    37 import android.widget.Button;
    37 import android.widget.Button;
    38 
    38 
    39 public class TeamlistFragment extends ListFragment implements TeamlistAdapter.Listener {
    39 public class TeamlistFragment extends ListFragment implements TeamlistAdapter.Listener {
    40 	private TeamlistAdapter adapter;
    40     private TeamlistAdapter adapter;
    41 	private Button addTeamButton;
    41     private Button addTeamButton;
    42 	private RoomStateManager stateManager;
    42     private RoomStateManager stateManager;
    43 	
       
    44 	@Override
       
    45 	public void onCreate(Bundle savedInstanceState) {
       
    46 		super.onCreate(savedInstanceState);
       
    47 		try {
       
    48 			stateManager = ((RoomStateManager.Provider)getActivity()).getRoomStateManager();
       
    49 		} catch(ClassCastException e) {
       
    50 			throw new RuntimeException("Hosting activity must implement RoomStateManager.Provider.", e);
       
    51 		}
       
    52 		adapter = new TeamlistAdapter();
       
    53 		adapter.updateTeamlist(stateManager.getTeams().values());
       
    54 		adapter.setColorHogcountEnabled(stateManager.getChiefStatus());
       
    55 		adapter.setListener(this);
       
    56 		setListAdapter(adapter);
       
    57 		stateManager.addListener(roomStateChangeListener);
       
    58 	}
       
    59 
    43 
    60 	@Override
    44     @Override
    61 	public View onCreateView(LayoutInflater inflater, ViewGroup container,
    45     public void onCreate(Bundle savedInstanceState) {
    62 			Bundle savedInstanceState) {
    46         super.onCreate(savedInstanceState);
    63 		View v = inflater.inflate(R.layout.fragment_teamlist, container, false);
    47         try {
    64 		addTeamButton = (Button)v.findViewById(R.id.addTeamButton);
    48             stateManager = ((RoomStateManager.Provider)getActivity()).getRoomStateManager();
    65 		addTeamButton.setOnClickListener(new OnClickListener() {
    49         } catch(ClassCastException e) {
    66 			public void onClick(View v) {
    50             throw new RuntimeException("Hosting activity must implement RoomStateManager.Provider.", e);
    67 				new TeamAddDialog(getCurrentTeamNames()).show(getFragmentManager(), "team_add_dialog");
    51         }
    68 			}
    52         adapter = new TeamlistAdapter();
    69 		});
    53         adapter.updateTeamlist(stateManager.getTeams().values());
    70 		
    54         adapter.setColorHogcountEnabled(stateManager.getChiefStatus());
    71 		addTeamButton.setEnabled(stateManager.getTeams().size() < Team.maxNumberOfTeams);
    55         adapter.setListener(this);
    72 		
    56         setListAdapter(adapter);
    73 		return v;
    57         stateManager.addListener(roomStateChangeListener);
    74 	}
    58     }
    75 	
       
    76 	@Override
       
    77 	public void onDestroy() {
       
    78 		super.onDestroy();
       
    79 		adapter.setListener(null);
       
    80 		stateManager.removeListener(roomStateChangeListener);
       
    81 	}
       
    82 
    59 
    83 	private Collection<String> getCurrentTeamNames() {
    60     @Override
    84 		List<String> names = new ArrayList<String>();
    61     public View onCreateView(LayoutInflater inflater, ViewGroup container,
    85 		for(TeamInGame team : stateManager.getTeams().values()) {
    62             Bundle savedInstanceState) {
    86 			names.add(team.team.name);
    63         View v = inflater.inflate(R.layout.fragment_teamlist, container, false);
    87 		}
    64         addTeamButton = (Button)v.findViewById(R.id.addTeamButton);
    88 		return names;
    65         addTeamButton.setOnClickListener(new OnClickListener() {
    89 	}
    66             public void onClick(View v) {
    90 	
    67                 new TeamAddDialog(getCurrentTeamNames()).show(getFragmentManager(), "team_add_dialog");
    91 	public void onColorClicked(TeamInGame team) {
    68             }
    92 		stateManager.changeTeamColorIndex(team.team.name, (team.ingameAttribs.colorIndex+1)%TeamIngameAttributes.TEAM_COLORS.length);
    69         });
    93 	}
    70 
    94 	
    71         addTeamButton.setEnabled(stateManager.getTeams().size() < Team.maxNumberOfTeams);
    95 	public void onHogcountClicked(TeamInGame team) {
    72 
    96 		int newHogCount = team.ingameAttribs.hogCount+1;
    73         return v;
    97 		if(newHogCount>Team.HEDGEHOGS_PER_TEAM) {
    74     }
    98 			newHogCount = 1;
    75 
    99 		}
    76     @Override
   100 		stateManager.changeTeamHogCount(team.team.name, newHogCount);
    77     public void onDestroy() {
   101 	}
    78         super.onDestroy();
   102 	
    79         adapter.setListener(null);
   103 	public void onTeamClicked(TeamInGame team) {
    80         stateManager.removeListener(roomStateChangeListener);
   104 		stateManager.requestRemoveTeam(team.team.name);
    81     }
   105 	}
    82 
   106 	
    83     private Collection<String> getCurrentTeamNames() {
   107 	private final RoomStateManager.Listener roomStateChangeListener = new RoomStateManager.ListenerAdapter() {
    84         List<String> names = new ArrayList<String>();
   108 		@Override
    85         for(TeamInGame team : stateManager.getTeams().values()) {
   109 		public void onChiefStatusChanged(boolean isChief) {
    86             names.add(team.team.name);
   110 			adapter.setColorHogcountEnabled(isChief);
    87         }
   111 		};
    88         return names;
   112 		
    89     }
   113 		@Override
    90 
   114 		public void onTeamsChanged(Map<String, TeamInGame> teams) {
    91     public void onColorClicked(TeamInGame team) {
   115 			adapter.updateTeamlist(teams.values());
    92         stateManager.changeTeamColorIndex(team.team.name, (team.ingameAttribs.colorIndex+1)%TeamIngameAttributes.TEAM_COLORS.length);
   116 			addTeamButton.setEnabled(teams.size() < Team.maxNumberOfTeams);
    93     }
   117 		};
    94 
   118 	};
    95     public void onHogcountClicked(TeamInGame team) {
       
    96         int newHogCount = team.ingameAttribs.hogCount+1;
       
    97         if(newHogCount>Team.HEDGEHOGS_PER_TEAM) {
       
    98             newHogCount = 1;
       
    99         }
       
   100         stateManager.changeTeamHogCount(team.team.name, newHogCount);
       
   101     }
       
   102 
       
   103     public void onTeamClicked(TeamInGame team) {
       
   104         stateManager.requestRemoveTeam(team.team.name);
       
   105     }
       
   106 
       
   107     private final RoomStateManager.Listener roomStateChangeListener = new RoomStateManager.ListenerAdapter() {
       
   108         @Override
       
   109         public void onChiefStatusChanged(boolean isChief) {
       
   110             adapter.setColorHogcountEnabled(isChief);
       
   111         };
       
   112 
       
   113         @Override
       
   114         public void onTeamsChanged(Map<String, TeamInGame> teams) {
       
   115             adapter.updateTeamlist(teams.values());
       
   116             addTeamButton.setEnabled(teams.size() < Team.maxNumberOfTeams);
       
   117         };
       
   118     };
   119 }
   119 }