]> git.ktnx.net Git - mobile-ledger.git/blobdiff - app/src/main/java/net/ktnx/mobileledger/ui/patterns/PatternsActivity.java
drop large sample text
[mobile-ledger.git] / app / src / main / java / net / ktnx / mobileledger / ui / patterns / PatternsActivity.java
index 8e57a2e751730f506f3aebf41c07a17670832760..945123d95e32c5990be4d6ae305f510623383db0 100644 (file)
@@ -19,19 +19,26 @@ package net.ktnx.mobileledger.ui.patterns;
 
 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);
@@ -42,24 +49,75 @@ public class PatternsActivity extends CrashReportingActivity {
     @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