X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2Fpatterns%2FPatternsActivity.java;h=945123d95e32c5990be4d6ae305f510623383db0;hb=0162f26f7b07bf2db15f5cb4026f94655f019618;hp=43a6227df1c8e20e951f59c964a1a4057f40aae1;hpb=a1d0db823989bbc210758351ff1d1bf0ea0ddffa;p=mobile-ledger.git diff --git a/app/src/main/java/net/ktnx/mobileledger/ui/patterns/PatternsActivity.java b/app/src/main/java/net/ktnx/mobileledger/ui/patterns/PatternsActivity.java index 43a6227d..945123d9 100644 --- a/app/src/main/java/net/ktnx/mobileledger/ui/patterns/PatternsActivity.java +++ b/app/src/main/java/net/ktnx/mobileledger/ui/patterns/PatternsActivity.java @@ -19,20 +19,24 @@ package net.ktnx.mobileledger.ui.patterns; import android.os.Bundle; import android.view.Menu; +import android.view.MenuItem; +import androidx.appcompat.app.ActionBar; +import androidx.lifecycle.ViewModelProvider; +import androidx.lifecycle.ViewModelStoreOwner; import androidx.navigation.NavController; import androidx.navigation.fragment.NavHostFragment; -import com.google.android.material.snackbar.Snackbar; - import net.ktnx.mobileledger.R; import net.ktnx.mobileledger.databinding.ActivityPatternsBinding; import net.ktnx.mobileledger.ui.activity.CrashReportingActivity; +import net.ktnx.mobileledger.utils.Logger; import java.util.Objects; public class PatternsActivity extends CrashReportingActivity implements PatternListFragment.OnPatternListFragmentInteractionListener { + public static final String ARG_ADD_PATTERN = "add-pattern"; private ActivityPatternsBinding b; private NavController navController; @Override @@ -46,27 +50,74 @@ public class PatternsActivity extends CrashReportingActivity protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); b = ActivityPatternsBinding.inflate(getLayoutInflater()); - setContentView(b.fragmentContainer); + setContentView(b.getRoot()); + setSupportActionBar(b.toolbar); + // Show the Up button in the action bar. + ActionBar actionBar = getSupportActionBar(); + if (actionBar != null) { + actionBar.setDisplayHomeAsUpEnabled(true); + } NavHostFragment navHostFragment = (NavHostFragment) Objects.requireNonNull( getSupportFragmentManager().findFragmentById(R.id.fragment_container)); navController = navHostFragment.getNavController(); + + navController.addOnDestinationChangedListener((controller, destination, arguments) -> { + if (destination.getId() == R.id.patternListFragment) { + b.fabAdd.show(); + b.fabSave.hide(); + b.toolbarLayout.setTitle(getString(R.string.title_activity_patterns)); + } + if (destination.getId() == R.id.patternDetailsFragment) { + b.fabAdd.hide(); + b.fabSave.show(); + } + }); + + b.toolbarLayout.setTitle(getString(R.string.title_activity_patterns)); + + b.fabAdd.setOnClickListener(v -> onEditPattern(null)); + b.fabSave.setOnClickListener(v -> onSavePattern()); } @Override - public void onNewPattern() { -// navController.navigate - final Snackbar snackbar = - Snackbar.make(b.fragmentContainer, "New pattern action coming up soon", - Snackbar.LENGTH_INDEFINITE); -// snackbar.setAction("Action", v -> snackbar.dismiss()); - snackbar.show(); + public boolean onOptionsItemSelected(MenuItem item) { + if (item.getItemId() == android.R.id.home) { + if (navController.getCurrentDestination() + .getId() == R.id.patternDetailsFragment) + navController.popBackStack(); + else + finish(); + + return true; + } + return super.onOptionsItemSelected(item); + } + + @Override + public void onEditPattern(Long id) { + if (id == null) { + navController.navigate(R.id.action_patternListFragment_to_patternDetailsFragment); + b.toolbarLayout.setTitle(getString(R.string.title_new_pattern)); + } + else { + Bundle bundle = new Bundle(); + bundle.putLong(PatternDetailsFragment.ARG_PATTERN_ID, id); + navController.navigate(R.id.action_patternListFragment_to_patternDetailsFragment, + bundle); + b.toolbarLayout.setTitle(getString(R.string.title_edit_pattern)); + } } @Override - public void onEditPattern(int id) { - final Snackbar snackbar = - Snackbar.make(b.fragmentContainer, "One Edit pattern action coming up soon", - Snackbar.LENGTH_INDEFINITE); -// snackbar.setAction("Action", v -> snackbar.dismiss()); - snackbar.show(); + public void onSavePattern() { + final ViewModelStoreOwner viewModelStoreOwner = + navController.getViewModelStoreOwner(R.id.pattern_list_navigation); + PatternDetailsViewModel model = + new ViewModelProvider(viewModelStoreOwner).get(PatternDetailsViewModel.class); + Logger.debug("flow", "PatternsActivity.onSavePattern(): model=" + model); + model.onSavePattern(); + navController.navigateUp(); + } + public NavController getNavController() { + return navController; } } \ No newline at end of file