]> git.ktnx.net Git - mobile-ledger.git/blobdiff - app/src/main/java/net/ktnx/mobileledger/ui/patterns/PatternsActivity.java
somewhat working pattern list/editor
[mobile-ledger.git] / app / src / main / java / net / ktnx / mobileledger / ui / patterns / PatternsActivity.java
index 43a6227df1c8e20e951f59c964a1a4057f40aae1..da258d48a7a0ec12425802c1d61b26f0f8f766fc 100644 (file)
@@ -20,14 +20,19 @@ package net.ktnx.mobileledger.ui.patterns;
 import android.os.Bundle;
 import android.view.Menu;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.ActionBar;
+import androidx.lifecycle.ViewModelProvider;
+import androidx.lifecycle.ViewModelStoreOwner;
 import androidx.navigation.NavController;
+import androidx.navigation.NavDestination;
 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;
 
@@ -46,27 +51,66 @@ 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(
+                new NavController.OnDestinationChangedListener() {
+                    @Override
+                    public void onDestinationChanged(@NonNull NavController controller,
+                                                     @NonNull NavDestination destination,
+                                                     @Nullable Bundle arguments) {
+                        if (destination.getId() == R.id.patternListFragment) {
+                            b.fabAdd.show();
+                            b.fabSave.hide();
+                        }
+                        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 -> onNewPattern());
+        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);
+        navController.navigate(R.id.action_patternListFragment_to_patternDetailsFragment);
+//        final Snackbar snackbar =
+//                Snackbar.make(b.fragmentContainer, "New pattern action coming up soon",
+//                        Snackbar.LENGTH_INDEFINITE);
 //        snackbar.setAction("Action", v -> snackbar.dismiss());
-        snackbar.show();
+//        snackbar.show();
     }
     @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();
+        Bundle bundle = new Bundle();
+        bundle.putInt(PatternDetailsFragment.ARG_PATTERN_ID, id);
+        navController.navigate(R.id.action_patternListFragment_to_patternDetailsFragment, bundle);
+    }
+    @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.navigate(R.id.patternListFragment);
+    }
+    public NavController getNavController() {
+        return navController;
     }
 }
\ No newline at end of file