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 } |