X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2Ftemplates%2FTemplatesActivity.java;h=3f9535ceb6b97403fde821f38e5aeb6977741881;hb=HEAD;hp=e8668b0b05b86c50016f50548af119f25468767c;hpb=32ac06215a6010a0591645338513a035d074b4da;p=mobile-ledger.git diff --git a/app/src/main/java/net/ktnx/mobileledger/ui/templates/TemplatesActivity.java b/app/src/main/java/net/ktnx/mobileledger/ui/templates/TemplatesActivity.java index e8668b0b..3f9535ce 100644 --- a/app/src/main/java/net/ktnx/mobileledger/ui/templates/TemplatesActivity.java +++ b/app/src/main/java/net/ktnx/mobileledger/ui/templates/TemplatesActivity.java @@ -1,5 +1,5 @@ /* - * Copyright © 2021 Damyan Ivanov. + * Copyright © 2022 Damyan Ivanov. * This file is part of MoLe. * MoLe is free software: you can distribute it and/or modify it * under the term of the GNU General Public License as published by @@ -17,9 +17,11 @@ 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 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() + .duplicateTemplateWithAccounts(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