/** * galaxy inc. * meetup client for android */ package com.galaxy.meetup.client.android.ui.activity; import java.io.Serializable; import java.util.LinkedList; import android.content.Intent; import android.database.Cursor; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.LoaderManager.LoaderCallbacks; import android.support.v4.content.Loader; import android.view.MenuItem; import com.galaxy.meetup.client.android.EsCursorLoader; import com.galaxy.meetup.client.android.R; import com.galaxy.meetup.client.android.analytics.OzViews; import com.galaxy.meetup.client.android.content.EsAccount; import com.galaxy.meetup.client.android.content.EsConversationsData; import com.galaxy.meetup.client.android.content.EsProvider; import com.galaxy.meetup.client.android.realtimechat.Data; import com.galaxy.meetup.client.android.realtimechat.RealTimeChatService; import com.galaxy.meetup.client.android.ui.fragments.BlockFragment; import com.galaxy.meetup.client.android.ui.fragments.EsFragmentActivity; import com.galaxy.meetup.client.android.ui.fragments.ParticipantsGalleryFragment; import com.galaxy.meetup.client.android.ui.fragments.BlockFragment.Listener; import com.galaxy.meetup.client.android.ui.fragments.BlockPersonDialog.PersonBlocker; import com.galaxy.meetup.client.android.ui.view.ParticipantsGalleryView; /** * * @author sihai * */ public class InvitationActivity extends EsFragmentActivity implements LoaderCallbacks, Listener, PersonBlocker { static final boolean $assertionsDisabled; EsAccount mAccount; String mConversationName; long mConversationRowId; String mInviterId; String mInviterName; boolean mIsGroup; private ParticipantsGalleryFragment mParticipantsGalleryFragment; static { boolean flag; if(!InvitationActivity.class.desiredAssertionStatus()) flag = true; else flag = false; $assertionsDisabled = flag; } public InvitationActivity() { } private void initialize(Intent intent) { mAccount = (EsAccount)intent.getParcelableExtra("account"); mConversationRowId = intent.getLongExtra("conversation_row_id", 0L); mInviterId = intent.getStringExtra("inviter_id"); mIsGroup = intent.getBooleanExtra("is_group", false); mParticipantsGalleryFragment.setAccount(mAccount); mParticipantsGalleryFragment.setCommandListener(new ParticipantsGalleryView.SimpleCommandListener(mParticipantsGalleryFragment.getParticipantsGalleryView(), mAccount)); mParticipantsGalleryFragment.setParticipantListButtonVisibility(false); getSupportLoaderManager().restartLoader(1, null, this); getSupportLoaderManager().restartLoader(2, null, this); mParticipantsGalleryFragment.getView().setVisibility(0); RealTimeChatService.markConversationNotificationsSeen(this, mAccount, mConversationRowId); } public final void blockPerson(Serializable serializable) { BlockFragment.getInstance(this, mAccount, mInviterId, mInviterName, false, true).show(this); } protected final EsAccount getAccount() { return mAccount; } public final OzViews getViewForLogging() { return OzViews.CONVERSATION_INVITE; } public final void onAttachFragment(Fragment fragment) { if(fragment instanceof ParticipantsGalleryFragment) { mParticipantsGalleryFragment = (ParticipantsGalleryFragment)fragment; if(!$assertionsDisabled && mAccount != null) throw new AssertionError(); } } public final void onBlockCompleted(boolean flag) { if(flag) { RealTimeChatService.leaveConversation(this, mAccount, mConversationRowId); finish(); } } public void onCreate(Bundle bundle) { super.onCreate(bundle); setContentView(R.layout.invitation_activity); initialize(getIntent()); } public final Loader onCreateLoader(int i, Bundle bundle) { EsCursorLoader escursorloader; if(i == 1) { android.net.Uri uri1 = EsProvider.appendAccountParameter(EsProvider.CONVERSATIONS_URI, mAccount); String as2[] = ConversationQuery.PROJECTION; String as3[] = new String[1]; as3[0] = String.valueOf(mConversationRowId); escursorloader = new EsCursorLoader(this, uri1, as2, "_id=?", as3, null); } else if(i == 2) { android.net.Uri uri = EsProvider.buildParticipantsUri(mAccount, mConversationRowId); String as[] = ConversationActivity.ParticipantsQuery.PROJECTION; String as1[] = new String[1]; as1[0] = mAccount.getRealTimeChatParticipantId(); escursorloader = new EsCursorLoader(this, uri, as, "participant_id!=?", as1, "first_name"); } else { escursorloader = null; } return escursorloader; } public final void onLoadFinished(Loader loader, Object obj) { Cursor cursor = (Cursor)obj; if(loader.getId() != 1) { if(loader.getId() == 2) { LinkedList linkedlist = new LinkedList(); Data.Participant.Builder builder; for(; cursor.moveToNext(); linkedlist.add(builder.setFullName(cursor.getString(2)).setParticipantId(cursor.getString(1)).setType(EsConversationsData.convertParticipantType(cursor.getInt(4))).build())) { builder = Data.Participant.newBuilder(); String s = cursor.getString(3); if(s != null) builder.setFirstName(s); } mParticipantsGalleryFragment.removeAllParticipants(); mParticipantsGalleryFragment.addParticipants(linkedlist); } } else { if(cursor != null && cursor.moveToFirst()) { mConversationName = cursor.getString(2); mInviterName = cursor.getString(3); String s1 = mInviterName; if(android.os.Build.VERSION.SDK_INT < 11) { showTitlebar(true); setTitlebarTitle(s1); } else { getActionBar().setTitle(s1); } } } } public final void onLoaderReset(Loader loader) { } public void onNewIntent(Intent intent) { super.onNewIntent(intent); initialize(intent); } public boolean onOptionsItemSelected(MenuItem menuitem) { boolean flag; if(menuitem.getItemId() == 0x102002c) { goHome(mAccount); flag = true; } else { flag = false; } return flag; } protected void onStart() { super.onStart(); if(android.os.Build.VERSION.SDK_INT >= 11) getActionBar().setDisplayHomeAsUpEnabled(true); } protected final void onTitlebarLabelClick() { goHome(mAccount); } //================================================================================================================== // Inner class //================================================================================================================== public static interface ConversationQuery { public static final String PROJECTION[] = { "_id", "is_group", "generated_name", "inviter_full_name" }; } }