]> git.ktnx.net Git - mobile-ledger.git/blob - app/src/main/java/net/ktnx/mobileledger/ui/templates/TemplateDetailsFragment.java
b72272ebcfad42b39252afda1c734cb0af0c44ed
[mobile-ledger.git] / app / src / main / java / net / ktnx / mobileledger / ui / templates / TemplateDetailsFragment.java
1 /*
2  * Copyright © 2021 Damyan Ivanov.
3  * This file is part of MoLe.
4  * MoLe is free software: you can distribute it and/or modify it
5  * under the term of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your opinion), any later version.
8  *
9  * MoLe is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License terms for details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with MoLe. If not, see <https://www.gnu.org/licenses/>.
16  */
17
18 package net.ktnx.mobileledger.ui.templates;
19
20 import android.content.Context;
21 import android.os.Bundle;
22 import android.view.LayoutInflater;
23 import android.view.View;
24 import android.view.ViewGroup;
25
26 import androidx.annotation.NonNull;
27 import androidx.annotation.Nullable;
28 import androidx.lifecycle.ViewModelProvider;
29 import androidx.lifecycle.ViewModelStoreOwner;
30 import androidx.navigation.NavController;
31 import androidx.recyclerview.widget.GridLayoutManager;
32 import androidx.recyclerview.widget.LinearLayoutManager;
33
34 import com.google.android.material.snackbar.Snackbar;
35
36 import net.ktnx.mobileledger.R;
37 import net.ktnx.mobileledger.databinding.TemplateDetailsFragmentBinding;
38 import net.ktnx.mobileledger.ui.QRScanCapableFragment;
39 import net.ktnx.mobileledger.utils.Logger;
40
41 public class TemplateDetailsFragment extends QRScanCapableFragment {
42     static final String ARG_TEMPLATE_ID = "pattern-id";
43     private static final String ARG_COLUMN_COUNT = "column-count";
44     TemplateDetailsFragmentBinding b;
45     private TemplateDetailsViewModel mViewModel;
46     private int mColumnCount = 1;
47     private Long mPatternId;
48     public TemplateDetailsFragment() {
49     }
50     public static TemplateDetailsFragment newInstance(int columnCount, int patternId) {
51         final TemplateDetailsFragment fragment = new TemplateDetailsFragment();
52         Bundle args = new Bundle();
53         args.putInt(ARG_COLUMN_COUNT, columnCount);
54         if (patternId > 0)
55             args.putInt(ARG_TEMPLATE_ID, patternId);
56         fragment.setArguments(args);
57         return fragment;
58     }
59     @Override
60     public void onCreate(@Nullable Bundle savedInstanceState) {
61         super.onCreate(savedInstanceState);
62
63         final Bundle args = getArguments();
64         if (args != null) {
65             mColumnCount = args.getInt(ARG_COLUMN_COUNT, 1);
66             mPatternId = args.getLong(ARG_TEMPLATE_ID, -1);
67             if (mPatternId == -1)
68                 mPatternId = null;
69         }
70     }
71     @Override
72     public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
73                              @Nullable Bundle savedInstanceState) {
74         NavController controller = ((TemplatesActivity) requireActivity()).getNavController();
75         final ViewModelStoreOwner viewModelStoreOwner =
76                 controller.getViewModelStoreOwner(R.id.template_list_navigation);
77         mViewModel = new ViewModelProvider(viewModelStoreOwner).get(TemplateDetailsViewModel.class);
78         mViewModel.setDefaultPatternName(getString(R.string.unnamed_template));
79         Logger.debug("flow", "PatternDetailsFragment.onCreateView(): model=" + mViewModel);
80
81         b = TemplateDetailsFragmentBinding.inflate(inflater);
82         Context context = b.patternDetailsRecyclerView.getContext();
83         if (mColumnCount <= 1) {
84             b.patternDetailsRecyclerView.setLayoutManager(new LinearLayoutManager(context));
85         }
86         else {
87             b.patternDetailsRecyclerView.setLayoutManager(
88                     new GridLayoutManager(context, mColumnCount));
89         }
90
91
92         TemplateDetailsAdapter adapter = new TemplateDetailsAdapter();
93         b.patternDetailsRecyclerView.setAdapter(adapter);
94         mViewModel.getItems(mPatternId)
95                   .observe(getViewLifecycleOwner(), adapter::setItems);
96
97         return b.getRoot();
98     }
99     @Override
100     protected void onQrScanned(String text) {
101         Logger.debug("PatDet_fr", String.format("Got scanned text '%s'", text));
102         if (text != null)
103             mViewModel.setTestText(text);
104     }
105 }