package com.codepath.apps.tumblrsnap.activities;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.Menu;
import android.view.MenuItem;
import com.codepath.apps.tumblrsnap.R;
import com.codepath.apps.tumblrsnap.fragments.LoginFragment;
import com.codepath.apps.tumblrsnap.fragments.LoginFragment.OnLoginHandler;
import com.codepath.apps.tumblrsnap.fragments.PhotosFragment;
import com.codepath.apps.tumblrsnap.models.User;
public class MainActivity extends FragmentActivity implements OnLoginHandler {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onResume() {
super.onResume();
updateFragments();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
MenuItem settings = menu.findItem(R.id.action_settings);
if (User.currentUser() == null) {
settings.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
} else {
settings.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
}
return true;
}
public void onSettingsButton(MenuItem menuItem) {
Intent i = new Intent(this, SettingsActivity.class);
startActivity(i);
}
@Override
public void onLogin() {
updateFragments();
}
private void updateFragments() {
if (User.currentUser() == null) {
showLoginFragment();
} else {
showPhotosFragment();
}
invalidateOptionsMenu();
}
private void showPhotosFragment() {
showFragment(PhotosFragment.class);
}
private void showLoginFragment() {
showFragment(LoginFragment.class);
}
@SuppressWarnings("rawtypes")
private void showFragment(Class activeFragmentClass) {
Class[] fragmentClasses = new Class[] { LoginFragment.class,
PhotosFragment.class };
FragmentManager mgr = getSupportFragmentManager();
FragmentTransaction transaction = mgr.beginTransaction();
try {
for (Class klass : fragmentClasses) {
Fragment fragment = mgr.findFragmentByTag(klass.getName());
if (klass == activeFragmentClass) {
if (fragment != null) {
transaction.show(fragment);
} else {
transaction.add(R.id.frmContent, (Fragment) klass.newInstance(), klass.getName());
}
} else {
if (fragment != null) {
transaction.hide(fragment);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
transaction.commit();
}
}