package eu.hgross.blaubot.android.views;
import android.content.Context;
import android.os.Handler;
import android.os.Looper;
import android.text.Html;
import android.util.AttributeSet;
import android.widget.LinearLayout;
import android.widget.TextView;
import java.util.Collection;
import eu.hgross.blaubot.android.R;
import eu.hgross.blaubot.messaging.IBlaubotChannel;
import eu.hgross.blaubot.util.PingMeasurerResult;
/**
* Android view to display results of the Subscribers of a channel
*
* @author Henning Gross {@literal (mail.to@henning-gross.de)}
*/
public class SubscribersView extends LinearLayout {
private static final String LOG_TAG = "PingMeasureResultView";
private Handler mUiHandler;
/**
* Contains the whole view and all sub elements.
*/
private LinearLayout mMainView;
public SubscribersView(Context context) {
this(context, null);
}
public SubscribersView(Context context, AttributeSet attrs) {
super(context, attrs);
initView();
}
public SubscribersView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initView();
}
private void initView() {
mUiHandler = new Handler(Looper.getMainLooper());
mMainView = (LinearLayout) inflate(getContext(), R.layout.blaubot_channel_subscribers, this);
}
/**
* Updates the whole ui
* @param subscribers the channel to visualize subscribers for
*/
private void updateUI(final Collection<String> subscribers) {
mUiHandler.post(new Runnable() {
@Override
public void run() {
LinearLayout s = (LinearLayout) mMainView.findViewById(R.id.subscriberContainer);
for (String subscriber : subscribers) {
TextView tv = new TextView(getContext());
tv.setText(subscriber);
s.addView(tv);
}
}
});
}
/**
* Applies a list of unique device ids to this view
*
* @param subscribers the subscribers
*/
public void setPingMeasureResult(Collection<String> subscribers) {
updateUI(subscribers);
}
}