diff -r 45b9f25ff611 -r 2fb781bbdd51 project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/netplay/RoomList.java --- a/project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/netplay/RoomList.java Mon Aug 06 22:33:07 2012 +0200 +++ b/project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/netplay/RoomList.java Mon Aug 06 22:39:36 2012 +0200 @@ -1,64 +1,39 @@ package org.hedgewars.hedgeroid.netplay; -import java.util.Collections; import java.util.Map; import java.util.TreeMap; -import android.database.DataSetObservable; -import android.util.Log; +import org.hedgewars.hedgeroid.Datastructures.RoomlistRoom; + import android.util.Pair; -public class Roomlist extends DataSetObservable { +public class Roomlist extends ObservableTreeMap> { private long nextId = 1; - private Map> rooms = new TreeMap>(); - public void updateList(Room[] newRooms) { - Map> newMap = new TreeMap>(); - for(Room room : newRooms) { - Pair oldEntry = rooms.get(room.name); + public void updateList(RoomlistRoom[] newRooms) { + Map> newMap = new TreeMap>(); + for(RoomlistRoom room : newRooms) { + Pair oldEntry = get(room.name); if(oldEntry == null) { newMap.put(room.name, Pair.create(room, nextId++)); } else { newMap.put(room.name, Pair.create(room, oldEntry.second)); } } - rooms = newMap; - notifyChanged(); + replaceContent(newMap); } - public void addRoomWithNewId(Room room) { - rooms.put(room.name, Pair.create(room, nextId++)); - notifyChanged(); + public void addRoomWithNewId(RoomlistRoom room) { + put(room.name, Pair.create(room, nextId++)); } - public void updateRoom(String name, Room room) { - Pair oldEntry = rooms.get(name); + public void updateRoom(String name, RoomlistRoom room) { + Pair oldEntry = get(name); if(oldEntry == null) { - Log.e("RoomList", "Received update for unknown room: "+name); - rooms.put(room.name, Pair.create(room, nextId++)); + addRoomWithNewId(room); } else { - if(!name.equals(room.name)) { - rooms.remove(name); - } - rooms.put(room.name, Pair.create(room, oldEntry.second)); - } - notifyChanged(); - } - - public void removeRoom(String name) { - if(rooms.remove(name) != null) { - notifyChanged(); + remove(name); + put(room.name, Pair.create(room, oldEntry.second)); } } - - public void clear() { - if(!rooms.isEmpty()) { - rooms.clear(); - notifyChanged(); - } - } - - public Map> getMap() { - return Collections.unmodifiableMap(rooms); - } }