import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentActivity;
import androidx.lifecycle.ViewModelProvider;
import androidx.lifecycle.ViewModelStoreOwner;
import androidx.navigation.NavController;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
-import com.google.android.material.snackbar.Snackbar;
-
import net.ktnx.mobileledger.R;
import net.ktnx.mobileledger.databinding.TemplateDetailsFragmentBinding;
-import net.ktnx.mobileledger.ui.QRScanCapableFragment;
+import net.ktnx.mobileledger.ui.FabManager;
import net.ktnx.mobileledger.utils.Logger;
-public class TemplateDetailsFragment extends QRScanCapableFragment {
+public class TemplateDetailsFragment extends Fragment {
static final String ARG_TEMPLATE_ID = "pattern-id";
private static final String ARG_COLUMN_COUNT = "column-count";
- TemplateDetailsFragmentBinding b;
+ private TemplateDetailsFragmentBinding b;
private TemplateDetailsViewModel mViewModel;
private int mColumnCount = 1;
private Long mPatternId;
+ private InteractionListener interactionListener;
public TemplateDetailsFragment() {
}
public static TemplateDetailsFragment newInstance(int columnCount, int patternId) {
return fragment;
}
@Override
+ public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
+ super.onCreateOptionsMenu(menu, inflater);
+ inflater.inflate(R.menu.template_details_menu, menu);
+ }
+ @Override
+ public boolean onOptionsItemSelected(@NonNull MenuItem item) {
+ if (item.getItemId() == R.id.delete_template) {
+ signalDeleteTemplateInteraction();
+ return true;
+ }
+
+ return super.onOptionsItemSelected(item);
+ }
+ private void signalDeleteTemplateInteraction() {
+ if (interactionListener != null)
+ interactionListener.onDeleteTemplate(mPatternId);
+ }
+ @Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (mPatternId == -1)
mPatternId = null;
}
+
+ setHasOptionsMenu(mPatternId != null);
}
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
+ if (!(getActivity() instanceof InteractionListener))
+ throw new IllegalStateException(
+ "Containing activity must implement TemplateDetailsFragment" +
+ ".InteractionListener");
+ interactionListener = (InteractionListener) getActivity();
+
NavController controller = ((TemplatesActivity) requireActivity()).getNavController();
final ViewModelStoreOwner viewModelStoreOwner =
controller.getViewModelStoreOwner(R.id.template_list_navigation);
}
- TemplateDetailsAdapter adapter = new TemplateDetailsAdapter();
+ TemplateDetailsAdapter adapter = new TemplateDetailsAdapter(mViewModel);
b.patternDetailsRecyclerView.setAdapter(adapter);
mViewModel.getItems(mPatternId)
.observe(getViewLifecycleOwner(), adapter::setItems);
+ FragmentActivity activity = requireActivity();
+ if (activity instanceof FabManager.FabHandler)
+ FabManager.handle((FabManager.FabHandler) activity, b.patternDetailsRecyclerView);
+
return b.getRoot();
}
- @Override
- protected void onQrScanned(String text) {
- Logger.debug("PatDet_fr", String.format("Got scanned text '%s'", text));
- if (text != null)
- mViewModel.setTestText(text);
- }
- public void onSavePattern() {
- mViewModel.onSaveTemplate();
- final Snackbar snackbar = Snackbar.make(b.getRoot(),
- "One Save pattern action coming up soon in a fragment near you",
- Snackbar.LENGTH_INDEFINITE);
-// snackbar.setAction("Action", v -> snackbar.dismiss());
- snackbar.show();
+ interface InteractionListener {
+ void onDeleteTemplate(@NonNull Long templateId);
}
}
\ No newline at end of file