1 <?xml version="1.0" encoding="utf-8"?><!--
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.
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.
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/>.
18 <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
19 xmlns:app="http://schemas.android.com/apk/res-auto"
20 android:id="@+id/pattern_details_item_head"
21 android:layout_width="match_parent"
22 android:layout_height="wrap_content"
23 android:animateLayoutChanges="true"
24 android:padding="@dimen/text_margin"
26 <com.google.android.material.textfield.TextInputLayout
27 android:id="@+id/pattern_name_layout"
28 android:layout_width="0dp"
29 android:layout_height="wrap_content"
30 android:layout_marginBottom="@dimen/text_margin"
31 app:endIconMode="clear_text"
32 app:layout_constraintBottom_toTopOf="@id/pattern_layout"
33 app:layout_constraintEnd_toEndOf="parent"
34 app:layout_constraintStart_toStartOf="parent"
35 app:layout_constraintTop_toTopOf="parent"
37 <com.google.android.material.textfield.TextInputEditText
38 android:id="@+id/template_name"
39 android:layout_width="match_parent"
40 android:layout_height="wrap_content"
41 android:hint="@string/template_name_label"
42 android:inputType="text"
44 </com.google.android.material.textfield.TextInputLayout>
45 <com.google.android.material.textfield.TextInputLayout
46 android:id="@+id/pattern_layout"
47 android:layout_width="0dp"
48 android:layout_height="wrap_content"
49 android:layout_marginBottom="@dimen/text_margin"
50 android:textAppearance="?attr/textAppearanceListItem"
51 app:endIconMode="clear_text"
52 app:layout_constraintBottom_toTopOf="@id/pattern_hint_title"
53 app:layout_constraintEnd_toEndOf="parent"
54 app:layout_constraintStart_toStartOf="parent"
55 app:layout_constraintTop_toBottomOf="@id/pattern_name_layout"
57 <com.google.android.material.textfield.TextInputEditText
58 android:id="@+id/pattern"
59 android:layout_width="match_parent"
60 android:layout_height="wrap_content"
61 android:hint="@string/template_details_pattern_label"
62 android:inputType="text|textMultiLine"
64 </com.google.android.material.textfield.TextInputLayout>
66 android:id="@+id/pattern_hint_title"
67 android:layout_width="0dp"
68 android:layout_height="wrap_content"
69 android:text="@string/pattern_match_result"
70 android:textAppearance="@style/TextAppearance.MaterialComponents.Body2"
71 app:layout_constraintBottom_toTopOf="@+id/pattern_hint_text"
72 app:layout_constraintEnd_toEndOf="parent"
73 app:layout_constraintStart_toStartOf="parent"
74 app:layout_constraintTop_toBottomOf="@id/pattern_layout"
77 android:id="@+id/pattern_hint_text"
78 android:layout_width="0dp"
79 android:layout_height="match_parent"
80 android:layout_marginBottom="@dimen/text_margin"
81 android:textAppearance="@style/TextAppearance.MaterialComponents.Body1"
82 app:layout_constraintBottom_toTopOf="@+id/test_text_layout"
83 app:layout_constraintEnd_toEndOf="parent"
84 app:layout_constraintStart_toStartOf="parent"
85 app:layout_constraintTop_toBottomOf="@id/pattern_hint_title"
87 <com.google.android.material.textfield.TextInputLayout
88 android:id="@+id/test_text_layout"
89 android:layout_width="0dp"
90 android:layout_height="wrap_content"
91 android:layout_marginBottom="@dimen/text_margin"
92 android:textAppearance="?attr/textAppearanceListItem"
93 app:endIconMode="clear_text"
94 app:layout_constraintBottom_toTopOf="@id/transaction_parameters_label"
95 app:layout_constraintEnd_toStartOf="@id/template_details_head_scan_qr_button"
96 app:layout_constraintStart_toStartOf="parent"
97 app:layout_constraintTop_toBottomOf="@id/pattern_hint_text"
99 <com.google.android.material.textfield.TextInputEditText
100 android:id="@+id/test_text"
101 android:layout_width="match_parent"
102 android:layout_height="wrap_content"
103 android:hint="@string/template_details_test_text_label"
104 android:inputType="text|textMultiLine"
106 </com.google.android.material.textfield.TextInputLayout>
108 android:id="@+id/template_details_head_scan_qr_button"
109 android:layout_width="wrap_content"
110 android:layout_height="0dp"
111 android:background="@android:color/transparent"
112 android:contentDescription="@string/scan_qr"
113 android:minWidth="@dimen/thumb_row_height"
114 app:layout_constraintBottom_toBottomOf="@id/test_text_layout"
115 app:layout_constraintEnd_toEndOf="parent"
116 app:layout_constraintTop_toTopOf="@id/test_text_layout"
117 app:srcCompat="@drawable/ic_baseline_qr_code_scanner_24"
118 app:tint="?colorPrimary"
121 android:id="@+id/transaction_parameters_label"
122 android:layout_width="match_parent"
123 android:layout_height="wrap_content"
124 android:gravity="end"
125 android:text="@string/template_transaction_parameters_label"
126 android:textAppearance="?attr/textAppearanceListItem"
127 app:layout_constraintBottom_toTopOf="@+id/pattern_transaction_date_label"
128 app:layout_constraintEnd_toEndOf="parent"
129 app:layout_constraintStart_toStartOf="parent"
130 app:layout_constraintTop_toBottomOf="@id/test_text_layout"
133 android:id="@+id/pattern_transaction_date_label"
134 android:layout_width="match_parent"
135 android:layout_height="wrap_content"
136 android:text="@string/template_details_date_label"
137 android:textAppearance="?attr/textAppearanceListItem"
138 app:layout_constraintEnd_toEndOf="parent"
139 app:layout_constraintStart_toStartOf="parent"
140 app:layout_constraintTop_toBottomOf="@id/transaction_parameters_label"
143 android:id="@+id/template_details_year_source_label"
144 android:layout_width="0dp"
145 android:layout_height="wrap_content"
146 android:text="@string/template_details_date_year_source_label"
147 android:textAlignment="center"
148 android:textAppearance="?attr/textAppearanceListItem"
149 app:layout_constraintBottom_toTopOf="@+id/template_details_year_source"
150 app:layout_constraintEnd_toStartOf="@id/template_details_month_source_label"
151 app:layout_constraintStart_toStartOf="parent"
152 app:layout_constraintTop_toBottomOf="@id/pattern_transaction_date_label"
155 android:id="@+id/template_details_month_source_label"
156 android:layout_width="0dp"
157 android:layout_height="wrap_content"
158 android:text="@string/template_details_date_month_source_label"
159 android:textAlignment="center"
160 android:textAppearance="?attr/textAppearanceListItem"
161 app:layout_constraintBottom_toTopOf="@+id/template_details_month_source"
162 app:layout_constraintEnd_toStartOf="@id/template_details_day_source_label"
163 app:layout_constraintStart_toEndOf="@id/template_details_year_source_label"
164 app:layout_constraintTop_toBottomOf="@id/pattern_transaction_date_label"
167 android:id="@+id/template_details_day_source_label"
168 android:layout_width="0dp"
169 android:layout_height="wrap_content"
170 android:text="@string/template_details_date_day_source_label"
171 android:textAlignment="center"
172 android:textAppearance="?attr/textAppearanceListItem"
173 app:layout_constraintBottom_toTopOf="@+id/template_details_day_source"
174 app:layout_constraintEnd_toEndOf="parent"
175 app:layout_constraintStart_toEndOf="@id/template_details_month_source_label"
176 app:layout_constraintTop_toBottomOf="@id/pattern_transaction_date_label"
179 android:id="@+id/template_details_year_source"
180 android:layout_width="0dp"
181 android:layout_height="wrap_content"
182 android:text="@string/template_details_source_literal"
183 android:textAlignment="center"
184 android:textAppearance="?attr/textAppearanceListItemSecondary"
185 app:layout_constraintBottom_toTopOf="@+id/template_details_date_year_layout"
186 app:layout_constraintEnd_toStartOf="@id/template_details_month_source"
187 app:layout_constraintStart_toStartOf="parent"
188 app:layout_constraintTop_toBottomOf="@id/template_details_day_source_label"
191 android:id="@+id/template_details_month_source"
192 android:layout_width="0dp"
193 android:layout_height="wrap_content"
195 android:textAlignment="center"
196 android:textAppearance="?attr/textAppearanceListItemSecondary"
197 app:layout_constraintBottom_toTopOf="@+id/template_details_date_month_layout"
198 app:layout_constraintEnd_toStartOf="@id/template_details_day_source"
199 app:layout_constraintStart_toEndOf="@id/template_details_year_source"
200 app:layout_constraintTop_toBottomOf="@id/template_details_month_source_label"
203 android:id="@+id/template_details_day_source"
204 android:layout_width="0dp"
205 android:layout_height="wrap_content"
207 android:textAlignment="center"
208 android:textAppearance="?attr/textAppearanceListItemSecondary"
209 app:layout_constraintBottom_toTopOf="@+id/template_details_date_day_layout"
210 app:layout_constraintEnd_toEndOf="parent"
211 app:layout_constraintStart_toEndOf="@id/template_details_month_source"
212 app:layout_constraintTop_toBottomOf="@id/template_details_day_source_label"
214 <androidx.constraintlayout.widget.Barrier
215 android:id="@+id/barrier_before_date_inputs"
216 android:layout_width="match_parent"
217 android:layout_height="wrap_content"
218 app:barrierDirection="bottom"
219 app:constraint_referenced_ids="template_details_year_source,template_details_month_source,template_details_day_source"
221 <com.google.android.material.textfield.TextInputLayout
222 android:id="@+id/template_details_date_year_layout"
223 android:layout_width="0dp"
224 android:layout_height="wrap_content"
225 android:layout_marginBottom="@dimen/text_margin"
226 app:layout_constraintEnd_toEndOf="@id/template_details_year_source"
227 app:layout_constraintStart_toStartOf="parent"
228 app:layout_constraintTop_toBottomOf="@id/barrier_before_date_inputs"
230 <com.google.android.material.textfield.TextInputEditText
231 android:id="@+id/template_details_date_year"
232 android:layout_width="match_parent"
233 android:layout_height="wrap_content"
234 android:gravity="center_horizontal"
235 android:hint="@string/date_year_hint"
236 android:inputType="number"
238 </com.google.android.material.textfield.TextInputLayout>
239 <com.google.android.material.textfield.TextInputLayout
240 android:id="@+id/template_details_date_month_layout"
241 android:layout_width="0dp"
242 android:layout_height="wrap_content"
243 android:layout_marginBottom="@dimen/text_margin"
244 app:layout_constraintEnd_toEndOf="@id/template_details_month_source"
245 app:layout_constraintStart_toStartOf="@id/template_details_month_source"
246 app:layout_constraintTop_toBottomOf="@id/barrier_before_date_inputs"
248 <com.google.android.material.textfield.TextInputEditText
249 android:id="@+id/template_details_date_month"
250 android:layout_width="match_parent"
251 android:layout_height="wrap_content"
252 android:gravity="center_horizontal"
253 android:hint="@string/date_month_hint"
254 android:inputType="number"
256 </com.google.android.material.textfield.TextInputLayout>
257 <com.google.android.material.textfield.TextInputLayout
258 android:id="@+id/template_details_date_day_layout"
259 android:layout_width="0dp"
260 android:layout_height="wrap_content"
261 android:layout_marginBottom="@dimen/text_margin"
262 app:layout_constraintBottom_toTopOf="@id/barrier_before_description"
263 app:layout_constraintEnd_toEndOf="parent"
264 app:layout_constraintStart_toStartOf="@id/template_details_day_source"
265 app:layout_constraintTop_toBottomOf="@id/barrier_before_date_inputs"
267 <com.google.android.material.textfield.TextInputEditText
268 android:id="@+id/template_details_date_day"
269 android:layout_width="match_parent"
270 android:layout_height="wrap_content"
271 android:gravity="center_horizontal"
272 android:hint="@string/date_day_hint"
273 android:inputType="number"
275 </com.google.android.material.textfield.TextInputLayout>
276 <androidx.constraintlayout.widget.Barrier
277 android:id="@+id/barrier_before_description"
278 android:layout_width="match_parent"
279 android:layout_height="wrap_content"
280 android:orientation="horizontal"
281 app:barrierDirection="bottom"
282 app:constraint_referenced_ids="template_details_date_day_layout,template_details_date_month_layout,template_details_date_year_layout"
283 app:layout_constraintEnd_toEndOf="parent"
284 app:layout_constraintStart_toStartOf="parent"
287 android:id="@+id/template_transaction_description_source_label"
288 android:layout_width="0dp"
289 android:layout_height="match_parent"
290 android:text="@string/transaction_description_source_label"
291 android:textAppearance="?attr/textAppearanceListItem"
292 app:layout_constraintBottom_toTopOf="@+id/template_transaction_description_source"
293 app:layout_constraintEnd_toEndOf="parent"
294 app:layout_constraintStart_toStartOf="parent"
295 app:layout_constraintTop_toBottomOf="@id/barrier_before_description"
298 android:id="@+id/template_transaction_description_source"
299 android:layout_width="0dp"
300 android:layout_height="wrap_content"
301 android:minWidth="100dp"
302 android:textAppearance="?attr/textAppearanceListItemSecondary"
303 app:layout_constraintBottom_toTopOf="@+id/transaction_description_layout"
304 app:layout_constraintEnd_toEndOf="parent"
305 app:layout_constraintStart_toStartOf="parent"
306 app:layout_constraintTop_toBottomOf="@id/template_transaction_description_source_label"
308 <com.google.android.material.textfield.TextInputLayout
309 android:id="@+id/transaction_description_layout"
310 android:layout_width="match_parent"
311 android:layout_height="wrap_content"
312 android:layout_marginBottom="@dimen/text_margin"
313 app:endIconMode="clear_text"
314 app:layout_constraintBottom_toTopOf="@+id/template_transaction_comment_source_label"
315 app:layout_constraintEnd_toEndOf="parent"
316 app:layout_constraintStart_toStartOf="parent"
317 app:layout_constraintTop_toBottomOf="@id/template_transaction_description_source"
319 <com.google.android.material.textfield.TextInputEditText
320 android:id="@+id/transaction_description"
321 android:layout_width="match_parent"
322 android:layout_height="wrap_content"
323 android:hint="@string/template_transaction_description_hint"
325 </com.google.android.material.textfield.TextInputLayout>
327 android:id="@+id/template_transaction_comment_source_label"
328 android:layout_width="0dp"
329 android:layout_height="match_parent"
330 android:text="@string/transaction_comment_source_label"
331 android:textAppearance="?attr/textAppearanceListItem"
332 app:layout_constraintBottom_toTopOf="@+id/template_transaction_comment_source"
333 app:layout_constraintEnd_toEndOf="parent"
334 app:layout_constraintStart_toStartOf="parent"
335 app:layout_constraintTop_toBottomOf="@id/transaction_description_layout"
338 android:id="@+id/template_transaction_comment_source"
339 android:layout_width="0dp"
340 android:layout_height="wrap_content"
341 android:minWidth="100dp"
342 android:textAppearance="?attr/textAppearanceListItemSecondary"
343 app:layout_constraintBottom_toTopOf="@+id/transaction_comment_layout"
344 app:layout_constraintEnd_toEndOf="parent"
345 app:layout_constraintStart_toStartOf="parent"
346 app:layout_constraintTop_toBottomOf="@id/template_transaction_comment_source_label"
348 <com.google.android.material.textfield.TextInputLayout
349 android:id="@+id/transaction_comment_layout"
350 android:layout_width="match_parent"
351 android:layout_height="wrap_content"
352 android:layout_marginBottom="@dimen/text_margin"
353 app:endIconMode="clear_text"
354 app:layout_constraintBottom_toTopOf="@id/template_is_fallback_label"
355 app:layout_constraintEnd_toEndOf="parent"
356 app:layout_constraintStart_toStartOf="parent"
357 app:layout_constraintTop_toBottomOf="@id/template_transaction_comment_source"
359 <com.google.android.material.textfield.TextInputEditText
360 android:id="@+id/transaction_comment"
361 android:layout_width="match_parent"
362 android:layout_height="wrap_content"
363 android:hint="@string/template_transaction_comment_hint"
365 </com.google.android.material.textfield.TextInputLayout>
367 android:id="@+id/template_is_fallback_label"
368 android:layout_width="0dp"
369 android:layout_height="wrap_content"
370 android:text="@string/template_is_fallback_label"
371 android:textAppearance="?attr/textAppearanceListItem"
372 app:layout_constraintBottom_toTopOf="@+id/template_is_fallback_text"
373 app:layout_constraintEnd_toStartOf="@id/template_is_fallback_switch"
374 app:layout_constraintStart_toStartOf="parent"
375 app:layout_constraintTop_toBottomOf="@id/transaction_comment_layout"
378 android:id="@+id/template_is_fallback_text"
379 android:layout_width="0dp"
380 android:layout_height="wrap_content"
381 android:textAppearance="?attr/textAppearanceListItemSecondary"
382 app:layout_constraintBottom_toBottomOf="parent"
383 app:layout_constraintEnd_toStartOf="@id/template_is_fallback_switch"
384 app:layout_constraintStart_toStartOf="parent"
385 app:layout_constraintTop_toBottomOf="@id/template_is_fallback_label"
387 <com.google.android.material.switchmaterial.SwitchMaterial
388 android:id="@+id/template_is_fallback_switch"
389 android:layout_width="wrap_content"
390 android:layout_height="wrap_content"
391 app:layout_constraintBottom_toBottomOf="@id/template_is_fallback_text"
392 app:layout_constraintEnd_toEndOf="parent"
393 app:layout_constraintTop_toTopOf="@id/template_is_fallback_label"
397 </androidx.constraintlayout.widget.ConstraintLayout>