/**
* galaxy inc.
* meetup client for android
*/
package com.galaxy.meetup.client.android.ui.view;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import android.content.Context;
import android.os.Bundle;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.RelativeLayout;
import com.galaxy.meetup.client.android.R;
import com.galaxy.meetup.client.android.realtimechat.RealTimeChatService;
import com.galaxy.meetup.client.android.realtimechat.RealTimeChatServiceListener;
import com.galaxy.meetup.client.android.ui.activity.ConversationActivity;
/**
*
* @author sihai
*
*/
public class ConversationTile extends RelativeLayout implements Tile {
List listeners;
private HashSet mActiveParticipantIds;
private Long mConversationRowId;
private EditText mEditText;
private RealTimeChatServiceListener rtcListener;
public ConversationTile(Context context)
{
this(context, null);
}
public ConversationTile(Context context, AttributeSet attributeset)
{
super(context, attributeset);
mConversationRowId = null;
rtcListener = new RTCServiceListener();
mActiveParticipantIds = new HashSet();
addView(((LayoutInflater)context.getSystemService("layout_inflater")).inflate(R.layout.conversation_tile, null));
mEditText = (EditText)findViewById(R.id.message_text);
}
public final void addParticipantPresenceListener(Tile.ParticipantPresenceListener participantpresencelistener)
{
if(listeners == null)
listeners = new LinkedList();
listeners.add(participantpresencelistener);
}
public final HashSet getActiveParticipantIds()
{
return mActiveParticipantIds;
}
public final void onCreate(Bundle bundle)
{
}
public final void onPause()
{
RealTimeChatService.unregisterListener(rtcListener);
}
public final void onResume()
{
RealTimeChatService.registerListener(rtcListener);
}
public final void onSaveInstanceState(Bundle bundle)
{
}
public final void onStart()
{
}
public final void onStop()
{
}
public final void onTilePause()
{
if(mConversationRowId != null)
RealTimeChatService.sendPresenceRequest(getContext(), ((ConversationActivity)getContext()).getAccount(), mConversationRowId.longValue(), false, false);
((InputMethodManager)getContext().getSystemService("input_method")).hideSoftInputFromWindow(mEditText.getWindowToken(), 0);
}
public final void onTileResume()
{
if(mConversationRowId != null)
RealTimeChatService.sendPresenceRequest(getContext(), ((ConversationActivity)getContext()).getAccount(), mConversationRowId.longValue(), true, true);
}
public final void onTileStart()
{
}
public final void onTileStop()
{
}
public void setConversationRowId(Long long1)
{
mConversationRowId = long1;
}
//==================================================================================================================
// Inner class
//==================================================================================================================
private final class RTCServiceListener extends RealTimeChatServiceListener
{
public final void onUserPresenceChanged(long l, String s, boolean flag)
{
if(flag)
mActiveParticipantIds.add(s);
else
mActiveParticipantIds.remove(s);
if(mConversationRowId != null && l == mConversationRowId.longValue())
{
for(Iterator iterator = listeners.iterator(); iterator.hasNext(); ((Tile.ParticipantPresenceListener)iterator.next()).onParticipantPresenceChanged());
}
}
}
}