package com.florianmski.tracktoid.ui.activities;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.view.View;
import android.view.animation.DecelerateInterpolator;
import com.florianmski.tracktoid.R;
import com.florianmski.tracktoid.TraktoidConstants;
import com.florianmski.tracktoid.TraktoidTheme;
import com.florianmski.tracktoid.utils.Utils;
public abstract class BaseActivity extends ActionBarActivity
{
private Toolbar toolbar;
protected boolean actionBarShown = true;
protected abstract View getContentView();
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(getContentView());
// setup toolbar after layout
toolbar = (Toolbar) findViewById(R.id.toolbar);
if (toolbar != null)
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(false);
String title = getIntent().getStringExtra(TraktoidConstants.BUNDLE_TITLE);
String subtitle = getIntent().getStringExtra(TraktoidConstants.BUNDLE_SUBTITLE);
if(title != null && !title.isEmpty())
getSupportActionBar().setTitle(title);
if(subtitle != null && !subtitle.isEmpty())
getSupportActionBar().setSubtitle(subtitle);
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch(item.getItemId())
{
// This is temporary, this is a naive implementation of the up navigation.
// It's in fact the back navigation.
// Did this so I don't have the up button not working at all
// I need to figure out how to handle complex situation such as activities with multiple parents
// or parents which need data.
case android.R.id.home:
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
protected void onPostCreate(Bundle savedInstanceState)
{
super.onPostCreate(savedInstanceState);
}
@Override
public void setContentView(int layoutResID)
{
super.setContentView(layoutResID);
}
public void setPrincipalFragment(Fragment fragment)
{
getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, fragment).commit();
}
protected static Intent makeIntent(Activity a, Class<?> activityToLaunch, Bundle args)
{
Intent i = new Intent(a, activityToLaunch);
if(args != null)
i.putExtras(args);
return i;
}
public static void launchActivity(Activity a, Class<?> activityToLaunch)
{
launchActivity(a, activityToLaunch, null);
}
public static void launchActivity(Activity a, Class<?> activityToLaunch, Bundle args)
{
a.startActivity(makeIntent(a, activityToLaunch, args));
}
public static void launchActivityForResult(FragmentActivity a, Class<?> activityToLaunch, int requestCode, Bundle args)
{
a.startActivityForResult(makeIntent(a, activityToLaunch, args), requestCode);
}
public void setTheme(TraktoidTheme theme)
{
//set actionbar color
Utils.changeColor(toolbar.getBackground(), theme.getColor(this), toolbar);
}
public Toolbar getToolbar()
{
return (Toolbar)findViewById(R.id.toolbar);
}
public void showActionBar(boolean show)
{
if(show == actionBarShown)
return;
actionBarShown = show;
getToolbar().animate()
.translationY(show ? 0 : -getToolbar().getBottom())
.alpha(show ? 1 : 0)
.setInterpolator(new DecelerateInterpolator());
}
}