package com.nbs.client.assassins.views;
import java.util.List;
import com.nbs.client.assassins.controllers.MenuAdapter;
import com.nbs.client.assassins.models.Match;
import com.nbs.client.assassins.models.MatchMapper;
import com.nbs.client.assassins.models.Repository;
import com.nbs.client.assassins.utils.Bus;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.BaseAdapter;
import android.widget.ListView;
public class SideMenu extends ListView {
private static final String TAG = "SideMenu";
private Context context;
public SideMenu(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(context);
}
private void init(Context context) {
this.context = context;
registerFilterWithAction();
}
public SideMenu(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
public SideMenu(Context context) {
super(context);
init(context);
}
private void registerFilterWithAction() {
IntentFilter filter = new IntentFilter();
filter.addAction(Repository.NEW_MATCH);
Bus.register(context, rcvr, filter);
}
public void setMatches(List<Match> matches) {
this.setAdapter(new GameMenuAdapter(context, matches));
dirty();
}
private void addMatch(Match m) {
((GameMenuAdapter)this.getAdapter()).addMatch(m);
dirty();
}
private void dirty() {
((GameMenuAdapter) this.getAdapter()).notifyDataSetChanged();
}
private BroadcastReceiver rcvr = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "SideMenu.onReceive("+intent+")");
addMatch(MatchMapper.fromExtras(intent.getExtras()));
}
};
}