package <%= package %>.ui;

import android.os.Bundle;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.Loader;

import butterknife.ButterKnife;
import <%= package %>.R;
import <%= package %>.base.BaseActivity;
import <%= package %>.loaders.MainPresenterLoader;
import timber.log.Timber;

public class <%= name %>Activity extends BaseActivity implements <%= name %>ViewInterface,
        LoaderManager.LoaderCallbacks<<%= name %>Presenter> {

    private <%= name %>Presenter presenter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        unbinder = ButterKnife.bind(this);
        getSupportLoaderManager().initLoader(99, null, this);
    }

    /*
        * Loader functions
        * */
    @Override
    public Loader<<%= name %>Presenter> onCreateLoader(int id, Bundle args) {
        return new MainPresenterLoader(this, new <%= name %>Presenter());
    }

    @Override
    public void onLoadFinished(Loader<<%= name %>Presenter> loader, <%= name %>Presenter presenter) {
        this.presenter = presenter;
    }

    @Override
    public void onLoaderReset(Loader<<%= name %>Presenter> loader) {
        this.presenter = null;
    }

    /*
    * Activity Lifecycle functions
    * */

    @Override
    protected void onResume() {
        super.onResume();
        presenter.attachView(this);
    }

    @Override
    protected void onStop() {
        super.onStop();
        presenter.detachView();
    }

    @Override
    protected void onDestroy() {
        this.presenter.onDestroy();
        super.onDestroy();
    }

    /*
    * UI Update functions
    * */

    @Override
    public void updateUI(<%= name %>ViewState state) {
        //Use the state values and variables to update the UI
        Timber.d(String.valueOf(state.currentProcessState));
    }
}
