package com.darkrockstudios.apps.tminus.experiences.agency.browse;
import android.app.FragmentManager;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import com.darkrockstudios.apps.tminus.R;
import com.darkrockstudios.apps.tminus.base.activities.NavigationDatabaseActivity;
import com.darkrockstudios.apps.tminus.experiences.agency.browse.fragments.AgencyBrowserFragment;
import com.darkrockstudios.apps.tminus.experiences.agency.detail.AgencyDetailActivity;
import com.darkrockstudios.apps.tminus.experiences.agency.detail.fragments.AgencyDetailFragment;
import com.darkrockstudios.apps.tminus.launchlibrary.Agency;
import com.darkrockstudios.apps.tminus.misc.CommonMenuHandler;
import com.darkrockstudios.apps.tminus.misc.TminusUri;
/**
* Created by Adam on 2/10/14.
*/
public class AgencyBrowserActivity extends NavigationDatabaseActivity implements AgencyBrowserFragment.Callbacks
{
private static final String FRAGMENT_TAG = "AgencyBrowser";
private static final String DETAIL_FRAGMENT_TAG = "AgencyDetail";
private boolean m_twoPane;
@Override
protected void onCreate( final Bundle savedInstanceState )
{
super.onCreate( savedInstanceState );
requestWindowFeature( Window.FEATURE_INDETERMINATE_PROGRESS );
setContentView( R.layout.activity_common_list );
FragmentManager fragmentManager = getFragmentManager();
AgencyBrowserFragment agencyBrowserFragment = AgencyBrowserFragment.newInstance();
fragmentManager.beginTransaction()
.replace( R.id.COMMON_list_fragment_container, agencyBrowserFragment, FRAGMENT_TAG )
.commit();
initNavDrawer();
}
private int getAgencyDetailId()
{
final int agencyId;
Intent intent = getIntent();
if( intent != null && intent.getData() != null )
{
agencyId = TminusUri.extractAgencyId( intent.getData() );
}
else
{
agencyId = -1;
}
return agencyId;
}
@Override
public void onResume()
{
super.onResume();
if( findViewById( R.id.COMMON_detail_fragment_container ) != null )
{
// The detail container view will be present only in the
// large-screen layouts (res/values-large and
// res/values-sw600dp). If this view is present, then the
// activity should be in two-pane mode.
m_twoPane = true;
// In two-pane mode, list items should be given the
// 'activated' state when touched.
AgencyBrowserFragment agencyBrowserFragment =
(AgencyBrowserFragment) getFragmentManager().findFragmentByTag( FRAGMENT_TAG );
agencyBrowserFragment.setActivateOnItemClick( true );
}
final int agencyId = getAgencyDetailId();
if( agencyId >= 0 )
{
selectAgency( agencyId );
}
}
@Override
public boolean onCreateOptionsMenu( final Menu menu )
{
final MenuInflater inflater = getMenuInflater();
inflater.inflate( R.menu.settings, menu );
inflater.inflate( R.menu.refresh, menu );
return true;
}
@Override
public boolean onOptionsItemSelected( final MenuItem item )
{
final boolean handled;
if( !CommonMenuHandler.onOptionsItemSelected( item, this ) )
{
switch( item.getItemId() )
{
case R.id.action_refresh:
refreshAgencyList();
handled = true;
break;
default:
handled = super.onOptionsItemSelected( item );
break;
}
}
else
{
handled = true;
}
return handled;
}
private void refreshAgencyList()
{
AgencyBrowserFragment fragment = (AgencyBrowserFragment) getFragmentManager().findFragmentByTag( FRAGMENT_TAG );
fragment.refresh();
}
public void agencyImageClicked( final View view )
{
AgencyDetailFragment fragment =
(AgencyDetailFragment) getFragmentManager().findFragmentByTag( DETAIL_FRAGMENT_TAG );
if( fragment != null )
{
fragment.zoomAgencyImage();
}
}
@Override
public void onItemSelected( final Agency agency )
{
selectAgency( agency.id );
}
private void selectAgency( final int agencyId )
{
if( m_twoPane )
{
// In two-pane mode, show the detail view in this activity by
// adding or replacing the detail fragment using a
// fragment transaction.
AgencyDetailFragment fragment = AgencyDetailFragment.newInstance( agencyId );
getFragmentManager().beginTransaction()
.replace( R.id.COMMON_detail_fragment_container, fragment, DETAIL_FRAGMENT_TAG )
.commit();
}
else
{
// In single-pane mode, simply start the detail activity
// for the selected item ID.
Intent intent = new Intent( this, AgencyDetailActivity.class );
intent.setData( TminusUri.buildAgencyUri( agencyId ) );
startActivity( intent );
}
}
}