From c8772cea66d1f129ec00c604c1469f3135270946 Mon Sep 17 00:00:00 2001 From: Sebastian Kaspari Date: Fri, 5 Mar 2010 19:54:04 +0100 Subject: [PATCH] ServerActivity: Only handle broadcasts for the assigned server --- src/org/yaaic/receiver/ChannelReceiver.java | 21 +++++++++++++++++---- src/org/yaaic/view/ServerActivity.java | 12 +++++++++++- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/src/org/yaaic/receiver/ChannelReceiver.java b/src/org/yaaic/receiver/ChannelReceiver.java index ce3c943..2397276 100644 --- a/src/org/yaaic/receiver/ChannelReceiver.java +++ b/src/org/yaaic/receiver/ChannelReceiver.java @@ -20,25 +20,38 @@ along with Yaaic. If not, see . */ package org.yaaic.receiver; -import org.yaaic.listener.ChannelListener; -import org.yaaic.model.Broadcast; - import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; +import org.yaaic.listener.ChannelListener; +import org.yaaic.model.Broadcast; + public class ChannelReceiver extends BroadcastReceiver { private ChannelListener listener; + private int serverId; - public ChannelReceiver(ChannelListener listener) + /** + * Create a new channel reciever + * + * @param serverId Only listen on channels of this server + * @param listener + */ + public ChannelReceiver(int serverId, ChannelListener listener) { this.listener = listener; + this.serverId = serverId; } @Override public void onReceive(Context context, Intent intent) { + int serverId = intent.getExtras().getInt(Broadcast.EXTRA_SERVER); + if (serverId != this.serverId) { + return; + } + String action = intent.getAction(); if (action.equals(Broadcast.CHANNEL_MESSAGE)) { diff --git a/src/org/yaaic/view/ServerActivity.java b/src/org/yaaic/view/ServerActivity.java index a68577a..471b174 100644 --- a/src/org/yaaic/view/ServerActivity.java +++ b/src/org/yaaic/view/ServerActivity.java @@ -111,7 +111,7 @@ public class ServerActivity extends Activity implements ServiceConnection, Chann Intent intent = new Intent(this, IRCService.class); bindService(intent, this, 0); - receiver = new ChannelReceiver(this); + receiver = new ChannelReceiver(server.getId(), this); registerReceiver(receiver, new IntentFilter(Broadcast.CHANNEL_MESSAGE)); registerReceiver(receiver, new IntentFilter(Broadcast.CHANNEL_NEW)); registerReceiver(receiver, new IntentFilter(Broadcast.CHANNEL_REMOVE)); @@ -177,6 +177,16 @@ public class ServerActivity extends Activity implements ServiceConnection, Chann return true; } + + /** + * Get server object assigned to this activity + * + * @return the server object + */ + public Server getServer() + { + return server; + } /** * On channel message