/** * galaxy inc. * meetup client for android */ package com.galaxy.meetup.client.android.ui.activity; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.TaskStackBuilder; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import com.galaxy.meetup.client.android.Intents; import com.galaxy.meetup.client.android.R; import com.galaxy.meetup.client.android.content.EsAccount; import com.galaxy.meetup.client.android.service.EsService; import com.galaxy.meetup.client.android.ui.fragments.HostedFragment; import com.galaxy.meetup.client.android.ui.view.HostActionBar; import com.galaxy.meetup.client.android.ui.view.HostActionBar.HostActionBarListener; import com.galaxy.meetup.client.android.ui.view.HostActionBar.OnUpButtonClickListener; import com.galaxy.meetup.client.util.EsLog; /** * * @author sihai * */ public abstract class HostActivity extends BaseActivity implements HostActionBarListener, OnUpButtonClickListener { private HostActionBar mActionBar; private HostedFragment mHostedFragment; public HostActivity() { } private void attachActionBar() { if(mActionBar != null) { mActionBar.reset(); mHostedFragment.attachActionBar(mActionBar); onAttachActionBar(mActionBar); mActionBar.commit(); } } protected EsAccount getAccount() { return (EsAccount)getIntent().getExtras().getParcelable("account"); } protected int getContentView() { return R.layout.host_activity; } protected final int getDefaultFragmentContainerViewId() { return R.id.fragment_container; } protected final boolean isIntentAccountActive() { EsAccount esaccount = (EsAccount)getIntent().getParcelableExtra("account"); boolean flag = false; if(esaccount != null) if(!esaccount.equals(EsService.getActiveAccount(this))) { boolean flag1 = EsLog.isLoggable("HostActivity", 6); flag = false; if(flag1) Log.e("HostActivity", (new StringBuilder("Activity finished because it is associated with a signed-out account: ")).append(getClass().getName()).toString()); } else { flag = true; } return flag; } public final void onActionBarInvalidated() { attachActionBar(); } public final void onActionButtonClicked(int i) { if(mHostedFragment != null) mHostedFragment.onActionButtonClicked(i); } protected void onAttachActionBar(HostActionBar hostactionbar) { } public void onAttachFragment(Fragment fragment) { if(fragment instanceof HostedFragment) { mHostedFragment = (HostedFragment)fragment; attachActionBar(); } } protected void onCreate(Bundle bundle) { super.onCreate(bundle); setContentView(getContentView()); mActionBar = (HostActionBar)findViewById(R.id.title_bar); mActionBar.setOnUpButtonClickListener(this); mActionBar.setHostActionBarListener(this); mActionBar.setUpButtonContentDescription(getString(R.string.nav_up_content_description)); if(mHostedFragment != null) attachActionBar(); } public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.host_menu, menu); return true; } public boolean onOptionsItemSelected(MenuItem menuitem) { boolean flag; if(mHostedFragment != null && mHostedFragment.onOptionsItemSelected(menuitem)) flag = true; else flag = false; return flag; } public boolean onPrepareOptionsMenu(Menu menu) { HostedFragment hostedfragment = mHostedFragment; boolean flag = false; if(hostedfragment != null) { int i = menu.size(); for(int j = 0; j < i; j++) menu.getItem(j).setVisible(false); mHostedFragment.onPrepareOptionsMenu(menu); flag = true; } return flag; } public void onPrimarySpinnerSelectionChange(int i) { if(mHostedFragment != null) mHostedFragment.onPrimarySpinnerSelectionChange(i); } public final void onRefreshButtonClicked() { if(mHostedFragment != null) mHostedFragment.refresh(); } protected void onResume() { super.onResume(); if(!isIntentAccountActive()) finish(); } public void onUpButtonClick() { if(getIntent().getBooleanExtra("from_url_gateway", false) || getIntent().getBooleanExtra("com.google.plus.analytics.intent.extra.FROM_NOTIFICATION", false)) { onUpButtonLaunchNewTask(); finish(); } else { onBackPressed(); } } protected void onUpButtonLaunchNewTask() { TaskStackBuilder taskstackbuilder = TaskStackBuilder.create(this); taskstackbuilder.addNextIntent(Intents.getStreamActivityIntent(this, getAccount())); taskstackbuilder.startActivities(); } protected final void replaceFragment(Fragment fragment) { super.replaceFragment(fragment); if(mHostedFragment != null) mHostedFragment.recordNavigationAction(); } }