]> git.ktnx.net Git - mobile-ledger.git/blobdiff - app/src/main/java/net/ktnx/mobileledger/ui/templates/TemplatesActivity.java
separate FAB management in a helper class
[mobile-ledger.git] / app / src / main / java / net / ktnx / mobileledger / ui / templates / TemplatesActivity.java
index 62a005ffb437950f0de0e330cd9c93c0c1a3a550..7bc722203fa405eec10572791e111102123106d7 100644 (file)
 
 package net.ktnx.mobileledger.ui.templates;
 
+import android.content.Context;
 import android.os.Bundle;
 import android.view.MenuItem;
 
+import androidx.activity.result.ActivityResultLauncher;
 import androidx.annotation.NonNull;
 import androidx.appcompat.app.ActionBar;
 import androidx.lifecycle.ViewModelProvider;
@@ -36,6 +38,8 @@ 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.FabManager;
+import net.ktnx.mobileledger.ui.QR;
 import net.ktnx.mobileledger.ui.activity.CrashReportingActivity;
 import net.ktnx.mobileledger.utils.Logger;
 
@@ -43,10 +47,13 @@ import java.util.Objects;
 
 public class TemplatesActivity extends CrashReportingActivity
         implements TemplateListFragment.OnTemplateListFragmentInteractionListener,
-        TemplateDetailsFragment.InteractionListener {
+        TemplateDetailsFragment.InteractionListener, QR.QRScanResultReceiver, QR.QRScanTrigger,
+        FabManager.FabHandler {
     public static final String ARG_ADD_TEMPLATE = "add-template";
     private ActivityTemplatesBinding b;
     private NavController navController;
+    private ActivityResultLauncher<Void> qrScanLauncher;
+    private FabManager fabManager;
     //    @Override
 //    public boolean onCreateOptionsMenu(Menu menu) {
 //        super.onCreateOptionsMenu(menu);
@@ -72,20 +79,27 @@ public class TemplatesActivity extends CrashReportingActivity
 
         navController.addOnDestinationChangedListener((controller, destination, arguments) -> {
             if (destination.getId() == R.id.templateListFragment) {
-                b.fabAdd.show();
-                b.fabSave.hide();
                 b.toolbarLayout.setTitle(getString(R.string.title_activity_templates));
+                b.fab.setImageResource(R.drawable.ic_add_white_24dp);
             }
-            if (destination.getId() == R.id.templateDetailsFragment) {
-                b.fabAdd.hide();
-                b.fabSave.show();
+            else {
+                b.fab.setImageResource(R.drawable.ic_save_white_24dp);
             }
         });
 
         b.toolbarLayout.setTitle(getString(R.string.title_activity_templates));
 
-        b.fabAdd.setOnClickListener(v -> onEditTemplate(null));
-        b.fabSave.setOnClickListener(v -> onSaveTemplate());
+        b.fab.setOnClickListener(v -> {
+            if (navController.getCurrentDestination()
+                             .getId() == R.id.templateListFragment)
+                onEditTemplate(null);
+            else
+                onSaveTemplate();
+        });
+
+        qrScanLauncher = QR.registerLauncher(this, this);
+
+        fabManager = new FabManager(b.fab);
     }
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
@@ -140,7 +154,7 @@ public class TemplatesActivity extends CrashReportingActivity
         TemplateHeaderDAO dao = DB.get()
                                   .getTemplateDAO();
 
-        dao.getTemplateWitAccountsAsync(templateId, template -> {
+        dao.getTemplateWithAccountsAsync(templateId, template -> {
             TemplateWithAccounts copy = TemplateWithAccounts.from(template);
             dao.deleteAsync(template.header, () -> {
                 navController.popBackStack(R.id.templateListFragment, false);
@@ -153,4 +167,28 @@ public class TemplatesActivity extends CrashReportingActivity
             });
         });
     }
+    @Override
+    public void onQRScanResult(String scanned) {
+        Logger.debug("PatDet_fr", String.format("Got scanned text '%s'", scanned));
+        TemplateDetailsViewModel model = new ViewModelProvider(
+                navController.getViewModelStoreOwner(R.id.template_list_navigation)).get(
+                TemplateDetailsViewModel.class);
+        model.setTestText(scanned);
+    }
+    @Override
+    public void triggerQRScan() {
+        qrScanLauncher.launch(null);
+    }
+    @Override
+    public Context getContext() {
+        return this;
+    }
+    @Override
+    public void showManagedFab() {
+        fabManager.showFab();
+    }
+    @Override
+    public void hideManagedFab() {
+        fabManager.hideFab();
+    }
 }
\ No newline at end of file