import android.os.Bundle;
import android.view.Menu;
-import android.view.View;
+import android.view.MenuItem;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.google.android.material.snackbar.Snackbar;
+import androidx.appcompat.app.ActionBar;
+import androidx.lifecycle.ViewModelProvider;
+import androidx.lifecycle.ViewModelStoreOwner;
+import androidx.navigation.NavController;
+import androidx.navigation.fragment.NavHostFragment;
import net.ktnx.mobileledger.R;
import net.ktnx.mobileledger.databinding.ActivityPatternsBinding;
import net.ktnx.mobileledger.ui.activity.CrashReportingActivity;
+import net.ktnx.mobileledger.utils.Logger;
-public class PatternsActivity extends CrashReportingActivity {
+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
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- ActivityPatternsBinding b = ActivityPatternsBinding.inflate(getLayoutInflater());
+ b = ActivityPatternsBinding.inflate(getLayoutInflater());
setContentView(b.getRoot());
setSupportActionBar(b.toolbar);
- b.toolbarLayout.setTitle(getTitle());
+ // 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.fab.setOnClickListener(this::fabClicked);
+ b.toolbarLayout.setTitle(getString(R.string.title_activity_patterns));
+
+ b.fabAdd.setOnClickListener(v -> onEditPattern(null));
+ b.fabSave.setOnClickListener(v -> onSavePattern());
+ }
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ if (item.getItemId() == android.R.id.home) {
+ if (navController.getCurrentDestination()
+ .getId() == R.id.patternDetailsFragment)
+ navController.popBackStack();
+ else
+ finish();
- PatternsRecyclerViewAdapter modelAdapter = new PatternsRecyclerViewAdapter();
+ return true;
+ }
+ return super.onOptionsItemSelected(item);
+ }
- b.patternList.setAdapter(modelAdapter);
- PatternsModel.retrievePatterns(modelAdapter);
- LinearLayoutManager llm = new LinearLayoutManager(this);
- llm.setOrientation(RecyclerView.VERTICAL);
- b.patternList.setLayoutManager(llm);
+ @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 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();
}
- private void fabClicked(View view) {
- Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_INDEFINITE)
- .setAction("Action", null)
- .show();
+ public NavController getNavController() {
+ return navController;
}
}
\ No newline at end of file