package com.jpardogo.android.listbuddies.ui;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import com.jpardogo.android.listbuddies.R;
import com.jpardogo.android.listbuddies.Utils.SharePreferences;
import com.jpardogo.android.listbuddies.provider.FragmentTags;
import com.jpardogo.android.listbuddies.ui.fragments.CustomizeFragment;
import com.jpardogo.android.listbuddies.ui.fragments.ListBuddiesFragment;
public class MainActivity extends ActionBarActivity implements CustomizeFragment.OnCustomizeListener {
private boolean isOpenActivitiesActivated = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
manageFragment(ListBuddiesFragment.newInstance(isOpenActivitiesActivated), FragmentTags.LIST_BUDDIES, false);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater menuInflater = new MenuInflater(this);
menuInflater.inflate(R.menu.main, menu);
MenuItem openActivities = menu.findItem(R.id.action_open_activities);
openActivities.setChecked(isOpenActivitiesActivated);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_open_activities:
onOpenActivitiesClick(item);
break;
case R.id.action_reset:
resetLayout();
break;
case R.id.action_customize:
manageFragment(CustomizeFragment.newInstance(), FragmentTags.CUSTOMIZE, true);
break;
case R.id.action_about:
startActivityWith(AboutActivity.class);
break;
}
return super.onOptionsItemSelected(item);
}
private void startActivityWith(Class clazz) {
Intent intent = new Intent(this, clazz);
startActivity(intent);
}
private void manageFragment(Fragment newInstanceFragment, FragmentTags tag, boolean addToBackStack) {
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
Fragment currentIntanceFragment = findFragmentByTag(tag);
if (currentIntanceFragment == null || (currentIntanceFragment != null && currentIntanceFragment.isHidden())) {
if (currentIntanceFragment != null) {
ft.show(currentIntanceFragment);
} else {
currentIntanceFragment = newInstanceFragment;
ft.add(R.id.container, currentIntanceFragment, tag.toString());
if (addToBackStack) {
ft.addToBackStack(null);
}
}
} else {
ft.hide(currentIntanceFragment);
fm.popBackStack();
}
ft.commit();
}
private Fragment findFragmentByTag(FragmentTags tag) {
return getSupportFragmentManager().findFragmentByTag(tag.toString());
}
@Override
public void setSpeed(int value) {
ListBuddiesFragment fragment = getListBuddiesFragment();
if (fragment != null) {
fragment.setSpeed(value);
}
}
@Override
public void setGap(int value) {
ListBuddiesFragment fragment = getListBuddiesFragment();
if (fragment != null) {
fragment.setGap(value);
}
}
@Override
public void setGapColor(int color) {
ListBuddiesFragment fragment = getListBuddiesFragment();
if (fragment != null) {
fragment.setGapColor(color);
}
}
@Override
public void setDivider(Drawable drawable) {
ListBuddiesFragment fragment = getListBuddiesFragment();
if (fragment != null) {
fragment.setDivider(drawable);
}
}
@Override
public void setDividerHeight(int value) {
ListBuddiesFragment fragment = getListBuddiesFragment();
if (fragment != null) {
fragment.setDividerHeight(value);
}
}
@Override
public void setAutoScrollFaster(int option) {
ListBuddiesFragment fragment = getListBuddiesFragment();
if (fragment != null) {
fragment.setAutoScrollFaster(option);
}
}
@Override
public void setScrollFaster(int option) {
ListBuddiesFragment fragment = getListBuddiesFragment();
if (fragment != null) {
fragment.setScrollFaster(option);
}
}
@Override
protected void onDestroy() {
super.onDestroy();
reset();
}
private void resetLayout() {
ListBuddiesFragment fragment = getListBuddiesFragment();
if (fragment != null) {
fragment.resetLayout();
reset();
CustomizeFragment customizeFragment = (CustomizeFragment) findFragmentByTag(FragmentTags.CUSTOMIZE);
if (customizeFragment != null) {
customizeFragment.reset();
}
}
}
private void reset() {
SharePreferences.reset();
}
public boolean onOpenActivitiesClick(MenuItem menuItem) {
isOpenActivitiesActivated = !menuItem.isChecked();
menuItem.setChecked(isOpenActivitiesActivated);
ListBuddiesFragment fragment = getListBuddiesFragment();
if (fragment != null) {
fragment.setOpenActivities(isOpenActivitiesActivated);
}
return false;
}
private ListBuddiesFragment getListBuddiesFragment() {
return (ListBuddiesFragment) findFragmentByTag(FragmentTags.LIST_BUDDIES);
}
@Override
protected void onPause() {
super.onPause();
overridePendingTransition(0, 0);
}
}