Vedroid36
3/18/2014 - 1:18 PM

gistfile1.java

package com.applikey.babybook.activity;

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.view.View;
import android.widget.ProgressBar;
import com.applikey.babybook.R;
import com.applikey.babybook.data.model.AlbumModel;
import com.applikey.babybook.database.Update;
import com.applikey.babybook.fragments.AlbumsFragment;
import com.applikey.babybook.fragments.CreateAlbumDialog;
import com.applikey.babybook.fragments.EditAlbumDialog;
import com.applikey.babybook.loaders.LoaderIdMap;
import com.applikey.babybook.utils.BitmapUtils;
import com.applikey.babybook.utils.Lo;

import java.util.ArrayList;


/**
 * Created by alex on 1/16/14.
 */
public class MainActivity extends FragmentActivity
        implements CreateAlbumDialog.createDialogListener, EditAlbumDialog.EditDialogListener, Update.UpdateListener{

    public static final String CURRENT_FRAGMENT_TAG = "CurrentFragment";
    public static int max_render_size;

    private final Lo lo = new Lo(MainActivity.this);
    private static LoaderIdMap loaderIdMap = new LoaderIdMap();

    private Fragment currentFragment = null;
    private ProgressBar progressBar;
    private Update update = null;
    private BitmapUtils bitmapUtils;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity);

        init();
        setCurrentFragment();

        update = new Update(this);
        update.setListener(this);

        if (bitmapUtils == null) {
            bitmapUtils = new BitmapUtils(this);
        }
        int maxScreedSideSize = bitmapUtils.getMaxSideSize();
        max_render_size = bitmapUtils.getMaxBitmapSize(maxScreedSideSize);
    }

    @Override
    public void onBackPressed() {
    	super.onBackPressed();
        currentFragment = getSupportFragmentManager().findFragmentByTag(CURRENT_FRAGMENT_TAG);
    }

    public void replaceFragment (Fragment fragment) {
    	lo.g("replaceFragment(fragment): " + fragment.getTag());

        currentFragment = fragment;
        getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer, currentFragment, CURRENT_FRAGMENT_TAG).addToBackStack(null).commit();
    }

    private void init() {
        progressBar = (ProgressBar) findViewById(R.id.progressBar);
    }

    private void setCurrentFragment () {
        FragmentManager fragmentManager = getSupportFragmentManager();
        currentFragment = fragmentManager.findFragmentByTag(CURRENT_FRAGMENT_TAG);

        if (currentFragment == null) {
            currentFragment = new AlbumsFragment();
            fragmentManager.beginTransaction().add(R.id.fragmentContainer, currentFragment, CURRENT_FRAGMENT_TAG).commit();
        }
    }

    public static LoaderIdMap getLoaderIdMap() {
        return loaderIdMap;
    }

    public Fragment getCurrentFragment() {
        return currentFragment;
    }


    /**    Database update callbacks    */

    @Override
    public void startUpdate() {
        lo.g("startUpdate");
        progressBar.setVisibility(View.VISIBLE);
    }

    @Override
    public void stopUpdate() {
        lo.g("stopUpdate");
        progressBar.setVisibility(View.GONE);

        if (currentFragment instanceof AlbumsFragment){
            ((AlbumsFragment) currentFragment).refresh();
        }
    }


    /**    Dialogs callbacks    */

    @Override
    protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        lo.g("onActivityResult");
    }

    @Override
    public void onEditSubmitListener(ArrayList<AlbumModel> albums) {
        lo.g("Dialog callback:  onEditSubmitListener");
        update.onAlbumsChanged(albums, null);
    }

    @Override
    public void onDeleteAlbumListener(ArrayList<AlbumModel> albums, Integer id) {
        lo.g("Dialog callback:  onDeleteAlbumListener");
        update.onAlbumsChanged(albums, id);
    }

    @Override
    public void onCreateSubmitListener(ArrayList<AlbumModel> albums) {
        lo.g("Dialog callback:  onCreateSubmitListener");
        update.onAlbumsChanged(albums, null);
    }

}