]> git.ktnx.net Git - mobile-ledger.git/blobdiff - app/src/main/java/net/ktnx/mobileledger/ui/templates/TemplatesActivity.java
drop collapsing toolbar layout, plain toolbar is fine
[mobile-ledger.git] / app / src / main / java / net / ktnx / mobileledger / ui / templates / TemplatesActivity.java
index e8668b0b05b86c50016f50548af119f25468767c..ed652879e633bc53d536586479a99b9d0c656370 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.toolbar.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.toolbar.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) {
@@ -101,19 +115,24 @@ public class TemplatesActivity extends CrashReportingActivity
         }
         return super.onOptionsItemSelected(item);
     }
-
+    @Override
+    public void onDuplicateTemplate(long id) {
+        DB.get()
+          .getTemplateDAO()
+          .duplicateTemplateWitAccounts(id, null);
+    }
     @Override
     public void onEditTemplate(Long id) {
         if (id == null) {
             navController.navigate(R.id.action_templateListFragment_to_templateDetailsFragment);
-            b.toolbarLayout.setTitle(getString(R.string.title_new_template));
+            b.toolbar.setTitle(getString(R.string.title_new_template));
         }
         else {
             Bundle bundle = new Bundle();
             bundle.putLong(TemplateDetailsFragment.ARG_TEMPLATE_ID, id);
             navController.navigate(R.id.action_templateListFragment_to_templateDetailsFragment,
                     bundle);
-            b.toolbarLayout.setTitle(getString(R.string.title_edit_template));
+            b.toolbar.setTitle(getString(R.string.title_edit_template));
         }
     }
     @Override
@@ -135,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);
@@ -148,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