project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/netplay/RoomlistFragment.java
changeset 7342 0e29eec2df5c
parent 7330 867e4fda496e
child 7346 b0f67c5b4215
equal deleted inserted replaced
7340:62043f5f7c67 7342:0e29eec2df5c
     1 package org.hedgewars.hedgeroid.netplay;
     1 package org.hedgewars.hedgeroid.netplay;
     2 
     2 
     3 import org.hedgewars.hedgeroid.R;
     3 import org.hedgewars.hedgeroid.R;
       
     4 import org.hedgewars.hedgeroid.netplay.NetplayService.NetplayBinder;
     4 
     5 
       
     6 import android.content.ComponentName;
       
     7 import android.content.Context;
       
     8 import android.content.Intent;
       
     9 import android.content.ServiceConnection;
     5 import android.os.Bundle;
    10 import android.os.Bundle;
       
    11 import android.os.CountDownTimer;
       
    12 import android.os.IBinder;
     6 import android.support.v4.app.ListFragment;
    13 import android.support.v4.app.ListFragment;
     7 import android.view.LayoutInflater;
    14 import android.view.LayoutInflater;
     8 import android.view.View;
    15 import android.view.View;
     9 import android.view.ViewGroup;
    16 import android.view.ViewGroup;
    10 
    17 
    11 public class RoomlistFragment extends ListFragment {
    18 public class RoomlistFragment extends ListFragment {
    12 	//List<Player> roomList;
    19 	private static final int AUTO_REFRESH_INTERVAL_MS = 10000;
       
    20 	
       
    21 	private Netconn netconn;
       
    22 	private RoomListAdapter adapter;
       
    23 	private CountDownTimer autoRefreshTimer = new CountDownTimer(Long.MAX_VALUE, AUTO_REFRESH_INTERVAL_MS) {
       
    24 		@Override
       
    25 		public void onTick(long millisUntilFinished) {
       
    26 			if(netconn != null && netconn.isConnected()) {
       
    27 				netconn.sendRoomlistRequest();
       
    28 			}
       
    29 		}
       
    30 		
       
    31 		@Override
       
    32 		public void onFinish() { }
       
    33 	};
    13 
    34 
    14 	@Override
    35 	@Override
    15 	public void onCreate(Bundle savedInstanceState) {
    36 	public void onCreate(Bundle savedInstanceState) {
    16 		super.onCreate(savedInstanceState);
    37 		super.onCreate(savedInstanceState);
    17 		/*playerList = new ArrayList<Player>();
    38 		getActivity().bindService(new Intent(getActivity(), NetplayService.class), serviceConnection,
    18 		PlayerListAdapter playerListAdapter = new PlayerListAdapter(getActivity());
    39 	            Context.BIND_AUTO_CREATE);
    19 		playerListAdapter.setPlayerList(playerList);
    40 		adapter = new RoomListAdapter(getActivity());
    20 		setListAdapter(playerListAdapter);*/
    41 		setListAdapter(adapter);
    21 	}
    42 	}
    22 
    43 
    23 	@Override
    44 	@Override
    24 	public View onCreateView(LayoutInflater inflater, ViewGroup container,
    45 	public View onCreateView(LayoutInflater inflater, ViewGroup container,
    25 			Bundle savedInstanceState) {
    46 			Bundle savedInstanceState) {
    26 		return inflater.inflate(R.layout.lobby_rooms_fragment, container, false);
    47 		return inflater.inflate(R.layout.lobby_rooms_fragment, container, false);
    27 	}
    48 	}
       
    49 	
       
    50 	@Override
       
    51 	public void onPause() {
       
    52 		super.onPause();
       
    53 		autoRefreshTimer.cancel();
       
    54 	}
       
    55 	
       
    56 	@Override
       
    57 	public void onResume() {
       
    58 		super.onResume();
       
    59 		if(netconn != null) {
       
    60 			netconn.sendRoomlistRequest();
       
    61 			autoRefreshTimer.start();
       
    62 		}
       
    63 	}
       
    64 	
       
    65     private ServiceConnection serviceConnection = new ServiceConnection() {
       
    66         public void onServiceConnected(ComponentName className, IBinder binder) {
       
    67         	netconn = ((NetplayBinder) binder).getNetconn();
       
    68         	adapter.setList(netconn.roomList.getValues());
       
    69         	netconn.roomList.observe(adapter);
       
    70         }
       
    71 
       
    72         public void onServiceDisconnected(ComponentName className) {
       
    73         	// TODO navigate away
       
    74         	netconn.roomList.unobserve(adapter);
       
    75         	netconn = null;
       
    76         }
       
    77     };
    28 }
    78 }