com.money.manager.ex.budget.BudgetsActivity.java Source code

Java tutorial

Introduction

Here is the source code for com.money.manager.ex.budget.BudgetsActivity.java

Source

/*
 * Copyright (C) 2012-2016 The Android Money Manager Ex Project Team
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 3
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package com.money.manager.ex.budget;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.LinearLayout;

import com.crashlytics.android.answers.Answers;
import com.crashlytics.android.answers.CustomEvent;
import com.money.manager.ex.R;
import com.money.manager.ex.budget.events.BudgetSelectedEvent;
import com.money.manager.ex.common.MmxBaseFragmentActivity;
import com.money.manager.ex.core.AnswersEvents;
import com.money.manager.ex.core.Core;

import org.greenrobot.eventbus.Subscribe;

public class BudgetsActivity extends MmxBaseFragmentActivity {

    private boolean mIsDualPanel = false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // layout
        setContentView(R.layout.activity_budgets);

        setSupportActionBar(getToolbar());
        showStandardToolbarActions(getToolbar());
        // enable returning back from toolbar.
        setDisplayHomeAsUpEnabled(true);

        createFragments();

        Answers.getInstance().logCustom(new CustomEvent(AnswersEvents.Budget.name()));
    }

    // Menu / toolbar

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        //        getMenuInflater().inflate(R.menu.menu_budgets, menu);

        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically e clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    // Events

    @Subscribe
    public void onEvent(BudgetSelectedEvent event) {
        showBudgetDetails(event.yearId, event.name);
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);

        //        outState.putInt(KEY_TRANS_ID, mTransId);
    }

    // Public methods

    public void setDualPanel(boolean mIsDualPanel) {
        this.mIsDualPanel = mIsDualPanel;
    }

    public boolean isDualPanel() {
        return mIsDualPanel;
    }

    // Private methods

    private void createFragments() {
        LinearLayout fragmentDetail = (LinearLayout) findViewById(R.id.fragmentDetail);
        setDualPanel(fragmentDetail != null && fragmentDetail.getVisibility() == View.VISIBLE);

        Core core = new Core(getApplicationContext());

        // show navigation fragment
        BudgetListFragment fragment = (BudgetListFragment) getSupportFragmentManager()
                .findFragmentByTag(BudgetListFragment.class.getSimpleName());
        if (fragment == null) {
            // fragment create
            fragment = BudgetListFragment.newInstance();

            // add to stack
            getSupportFragmentManager().beginTransaction()
                    .replace(R.id.fragmentMain, fragment, BudgetListFragment.class.getSimpleName()).commit();
        } else {
            if (core.isTablet()) {
                getSupportFragmentManager().beginTransaction()
                        .replace(R.id.fragmentMain, fragment, BudgetListFragment.class.getSimpleName()).commit();
            }
        }
    }

    private void showBudgetDetails(long id, String budgetName) {
        String tag = BudgetDetailFragment.class.getName() + "_" + Long.toString(id);
        Fragment fragment = getSupportFragmentManager().findFragmentByTag(tag);

        if (fragment == null) {
            fragment = BudgetDetailFragment.newInstance(id, budgetName);
        }

        showFragment(fragment, tag);
    }

    /**
     * Displays the fragment and associate the tag
     *
     * @param fragment
     * @param tagFragment
     */
    public void showFragment(Fragment fragment, String tagFragment) {
        // In tablet layout, do not try to display the Home Fragment again. Show empty fragment.
        if (isDualPanel() && tagFragment.equalsIgnoreCase(BudgetListFragment.class.getName())) {
            fragment = new Fragment();
            tagFragment = "Empty";
        }

        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
        transaction.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left, R.anim.slide_in_right,
                R.anim.slide_out_left);
        // Replace whatever is in the fragment_container view with this fragment,
        // and add the transaction to the back stack.
        if (isDualPanel()) {
            transaction.replace(R.id.fragmentDetail, fragment, tagFragment);
        } else {
            // Single panel UI.
            transaction.replace(R.id.fragmentMain, fragment, tagFragment);

            // todo: enable going back only if showing the list.
            //            boolean showingList = tagFragment.equals(BudgetListFragment.class.getName());
            //            setDisplayHomeAsUpEnabled(showingList);
        }
        transaction.addToBackStack(null);
        // Commit the transaction
        transaction.commit();
    }

}