/* * 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.assetallocation; import android.content.Intent; import android.os.Bundle; import android.app.Activity; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.view.Menu; import android.view.MenuItem; import com.money.manager.ex.Constants; import com.money.manager.ex.R; import com.money.manager.ex.common.MmxBaseFragmentActivity; import com.money.manager.ex.core.MenuHelper; import com.money.manager.ex.core.UIHelper; import com.money.manager.ex.datalayer.AssetClassRepository; import com.money.manager.ex.domainmodel.AssetClass; import timber.log.Timber; /** * Editor for a single Asset Class. */ public class AssetClassEditActivity extends MmxBaseFragmentActivity { public static final String KEY_ASSET_CLASS_ID = "AssetClassEditActivity:AssetClassId"; public static final String KEY_PARENT_ID = "AssetClassEditActivity:parentId"; private Integer assetClassId; private String mAction; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_asset_class_edit); // showStandardToolbarActions(); setDisplayHomeAsUpEnabled(true); if (savedInstanceState != null) { restoreInstanceState(savedInstanceState); } else { loadIntent(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); MenuHelper menuHelper = new MenuHelper(this, menu); menuHelper.addSaveToolbarIcon(); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: // cancel clicked. Prompt to confirm? Timber.d("going back"); break; case MenuHelper.save: return onActionDoneClick(); } return super.onOptionsItemSelected(item); } @Override public boolean onActionCancelClick() { setResult(Activity.RESULT_CANCELED); finish(); return true; } @Override public boolean onActionDoneClick() { if (save()) { // set result ok and finish activity setResult(RESULT_OK); finish(); return true; } else { return false; } } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); if (this.assetClassId != null) { outState.putInt(KEY_ASSET_CLASS_ID, this.assetClassId); } } private void restoreInstanceState(Bundle savedInstanceState) { this.assetClassId = savedInstanceState.getInt(KEY_ASSET_CLASS_ID); } private boolean save() { // todo: validate boolean result; AssetClassEditFragment fragment = getFragment(); AssetClass assetClass = fragment.assetClass; AssetClassRepository repo = new AssetClassRepository(this); switch (getIntent().getAction()) { case Intent.ACTION_INSERT: result = repo.insert(assetClass); break; case Intent.ACTION_EDIT: result = repo.update(assetClass); break; default: result = false; } return result; } private AssetClassEditFragment getFragment() { FragmentManager fm = getSupportFragmentManager(); Fragment fragment = fm.findFragmentById(R.id.fragment); if (fragment == null) return null; return (AssetClassEditFragment) fragment; } private void loadIntent() { Intent intent = getIntent(); if (intent == null) return; // Insert or Edit? mAction = intent.getAction(); if (mAction == null) return; AssetClass assetClass = null; switch (mAction) { case Intent.ACTION_INSERT: assetClass = AssetClass.create(""); int parentId = intent.getIntExtra(KEY_PARENT_ID, Constants.NOT_SET); assetClass.setParentId(parentId); break; case Intent.ACTION_EDIT: int id = intent.getIntExtra(Intent.EXTRA_UID, Constants.NOT_SET); this.assetClassId = id; // load class AssetClassRepository repo = new AssetClassRepository(this); assetClass = repo.load(id); if (assetClass == null) { new UIHelper(this).showToast("No asset class found in the database!"); // todo: show error message and return (close edit activity) return; } break; } AssetClassEditFragment fragment = getFragment(); fragment.assetClass = assetClass; } }