]> git.ktnx.net Git - mobile-ledger.git/blobdiff - app/src/main/java/net/ktnx/mobileledger/ui/templates/TemplatesActivity.java
template deletion, with undo
[mobile-ledger.git] / app / src / main / java / net / ktnx / mobileledger / ui / templates / TemplatesActivity.java
index 0f1d20f451debb3a6d6102dfb19224ecae8638f8..e8668b0b05b86c50016f50548af119f25468767c 100644 (file)
  * along with MoLe. If not, see <https://www.gnu.org/licenses/>.
  */
 
-package net.ktnx.mobileledger.ui.patterns;
+package net.ktnx.mobileledger.ui.templates;
 
 import android.os.Bundle;
-import android.view.Menu;
 import android.view.MenuItem;
 
+import androidx.annotation.NonNull;
 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.BaseTransientBottomBar;
+import com.google.android.material.snackbar.Snackbar;
+
 import net.ktnx.mobileledger.R;
-import net.ktnx.mobileledger.databinding.ActivityPatternsBinding;
+import net.ktnx.mobileledger.dao.TemplateHeaderDAO;
+import net.ktnx.mobileledger.databinding.ActivityTemplatesBinding;
+import net.ktnx.mobileledger.db.DB;
+import net.ktnx.mobileledger.db.TemplateWithAccounts;
 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;
+public class TemplatesActivity extends CrashReportingActivity
+        implements TemplateListFragment.OnTemplateListFragmentInteractionListener,
+        TemplateDetailsFragment.InteractionListener {
+    public static final String ARG_ADD_TEMPLATE = "add-template";
+    private ActivityTemplatesBinding b;
     private NavController navController;
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        super.onCreateOptionsMenu(menu);
-        getMenuInflater().inflate(R.menu.pattern_list_menu, menu);
-
-        return true;
-    }
+    //    @Override
+//    public boolean onCreateOptionsMenu(Menu menu) {
+//        super.onCreateOptionsMenu(menu);
+//        getMenuInflater().inflate(R.menu.template_list_menu, menu);
+//
+//        return true;
+//    }
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        b = ActivityPatternsBinding.inflate(getLayoutInflater());
+        b = ActivityTemplatesBinding.inflate(getLayoutInflater());
         setContentView(b.getRoot());
         setSupportActionBar(b.toolbar);
         // Show the Up button in the action bar.
@@ -63,28 +71,28 @@ public class PatternsActivity extends CrashReportingActivity
         navController = navHostFragment.getNavController();
 
         navController.addOnDestinationChangedListener((controller, destination, arguments) -> {
-            if (destination.getId() == R.id.patternListFragment) {
+            if (destination.getId() == R.id.templateListFragment) {
                 b.fabAdd.show();
                 b.fabSave.hide();
-                b.toolbarLayout.setTitle(getString(R.string.title_activity_patterns));
+                b.toolbarLayout.setTitle(getString(R.string.title_activity_templates));
             }
-            if (destination.getId() == R.id.patternDetailsFragment) {
+            if (destination.getId() == R.id.templateDetailsFragment) {
                 b.fabAdd.hide();
                 b.fabSave.show();
             }
         });
 
-        b.toolbarLayout.setTitle(getString(R.string.title_activity_patterns));
+        b.toolbarLayout.setTitle(getString(R.string.title_activity_templates));
 
-        b.fabAdd.setOnClickListener(v -> onEditPattern(null));
-        b.fabSave.setOnClickListener(v -> onSavePattern());
+        b.fabAdd.setOnClickListener(v -> onEditTemplate(null));
+        b.fabSave.setOnClickListener(v -> onSaveTemplate());
     }
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         if (item.getItemId() == android.R.id.home) {
             final NavDestination currentDestination = navController.getCurrentDestination();
             if (currentDestination != null &&
-                currentDestination.getId() == R.id.patternDetailsFragment)
+                currentDestination.getId() == R.id.templateDetailsFragment)
                 navController.popBackStack();
             else
                 finish();
@@ -95,30 +103,49 @@ public class PatternsActivity extends CrashReportingActivity
     }
 
     @Override
-    public void onEditPattern(Long id) {
+    public void onEditTemplate(Long id) {
         if (id == null) {
-            navController.navigate(R.id.action_patternListFragment_to_patternDetailsFragment);
-            b.toolbarLayout.setTitle(getString(R.string.title_new_pattern));
+            navController.navigate(R.id.action_templateListFragment_to_templateDetailsFragment);
+            b.toolbarLayout.setTitle(getString(R.string.title_new_template));
         }
         else {
             Bundle bundle = new Bundle();
-            bundle.putLong(PatternDetailsFragment.ARG_PATTERN_ID, id);
-            navController.navigate(R.id.action_patternListFragment_to_patternDetailsFragment,
+            bundle.putLong(TemplateDetailsFragment.ARG_TEMPLATE_ID, id);
+            navController.navigate(R.id.action_templateListFragment_to_templateDetailsFragment,
                     bundle);
-            b.toolbarLayout.setTitle(getString(R.string.title_edit_pattern));
+            b.toolbarLayout.setTitle(getString(R.string.title_edit_template));
         }
     }
     @Override
-    public void onSavePattern() {
+    public void onSaveTemplate() {
         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.getViewModelStoreOwner(R.id.template_list_navigation);
+        TemplateDetailsViewModel model =
+                new ViewModelProvider(viewModelStoreOwner).get(TemplateDetailsViewModel.class);
+        Logger.debug("flow", "TemplatesActivity.onSavePattern(): model=" + model);
+        model.onSaveTemplate();
         navController.navigateUp();
     }
     public NavController getNavController() {
         return navController;
     }
+    @Override
+    public void onDeleteTemplate(@NonNull Long templateId) {
+        Objects.requireNonNull(templateId);
+        TemplateHeaderDAO dao = DB.get()
+                                  .getTemplateDAO();
+
+        dao.getTemplateWitAccountsAsync(templateId, template -> {
+            TemplateWithAccounts copy = TemplateWithAccounts.from(template);
+            dao.deleteAsync(template.header, () -> {
+                navController.popBackStack(R.id.templateListFragment, false);
+
+                Snackbar.make(b.getRoot(), String.format(
+                        TemplatesActivity.this.getString(R.string.template_xxx_deleted),
+                        template.header.getName()), BaseTransientBottomBar.LENGTH_LONG)
+                        .setAction(R.string.action_undo, v -> dao.insertAsync(copy, null))
+                        .show();
+            });
+        });
+    }
 }
\ No newline at end of file