package xmpp.client.ui.provider; import xmpp.client.Constants; import xmpp.client.service.chat.multi.MultiChatInfoList; import xmpp.client.service.handlers.SimpleMessageHandler; import xmpp.client.service.handlers.SimpleMessageHandlerClient; import android.os.Bundle; import android.os.Message; import android.os.Messenger; import android.util.Log; public class ConferenceProvider implements SimpleMessageHandlerClient, Constants { private static final String TAG = ConferenceProvider.class.getName(); private final Messenger mMessenger; private final Messenger mService; private MultiChatInfoList mMultiUserChatInfoList; public ConferenceProvider(Messenger localMessenger, Messenger serviceMessenger) { mMessenger = localMessenger; mService = serviceMessenger; mMultiUserChatInfoList = new MultiChatInfoList(); } public ConferenceProvider(Messenger localMessenger, Messenger serviceMessenger, SimpleMessageHandler handler) { this(localMessenger, serviceMessenger); handler.addClient(this); } public MultiChatInfoList getList() { return mMultiUserChatInfoList; } @Override public void handleMessage(Message msg) { try { final Bundle b = msg.getData(); switch (msg.what) { case SIG_IS_ONLINE: msg = Message.obtain(null, SIG_GET_MUCS); msg.replyTo = mMessenger; mService.send(msg); break; case SIG_GET_MUCS: b.setClassLoader(MultiChatInfoList.class.getClassLoader()); mMultiUserChatInfoList = b .getParcelable(FIELD_MULTI_USER_CHAT_INFO_LIST); break; } } catch (final Exception e) { Log.w(TAG, "handleMessage", e); } } @Override public boolean isReady() { return true; } public int size() { if (mMultiUserChatInfoList != null) { return mMultiUserChatInfoList.size(); } return 0; } }