]> git.ktnx.net Git - mobile-ledger.git/blob - app/src/main/res/layout/activity_main.xml
offer to restore from backup when starting the app with no profiles
[mobile-ledger.git] / app / src / main / res / layout / activity_main.xml
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.
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 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
18     xmlns:tools="http://schemas.android.com/tools"
19     android:layout_width="match_parent"
20     android:layout_height="match_parent"
21     tools:context=".ui.activity.MainActivity"
22     >
23
24     <androidx.constraintlayout.widget.ConstraintLayout xmlns:app="http://schemas.android.com/apk/res-auto"
25         android:id="@+id/no_profiles_layout"
26         android:layout_width="match_parent"
27         android:layout_height="match_parent"
28         android:background="?table_row_dark_bg"
29         android:visibility="gone"
30         >
31
32         <FrameLayout
33             android:id="@+id/welcome_header"
34             android:layout_width="match_parent"
35             android:layout_height="wrap_content"
36             app:layout_constraintEnd_toEndOf="parent"
37             app:layout_constraintStart_toStartOf="parent"
38             app:layout_constraintTop_toTopOf="parent"
39             >
40
41             <include layout="@layout/nav_header_layout" />
42         </FrameLayout>
43
44         <androidx.constraintlayout.widget.ConstraintLayout
45             android:layout_width="0dp"
46             android:layout_height="0dp"
47             android:padding="@dimen/activity_horizontal_margin"
48             app:layout_constraintBottom_toBottomOf="parent"
49             app:layout_constraintEnd_toEndOf="parent"
50             app:layout_constraintStart_toStartOf="parent"
51             app:layout_constraintTop_toBottomOf="@id/welcome_header"
52             >
53
54             <TextView
55                 android:id="@+id/textView"
56                 android:layout_width="wrap_content"
57                 android:layout_height="wrap_content"
58                 android:layout_marginTop="48dp"
59                 android:text="@string/text_welcome"
60                 android:textColor="?textColor"
61                 android:textSize="48sp"
62                 app:layout_constraintEnd_toEndOf="parent"
63                 app:layout_constraintStart_toStartOf="parent"
64                 app:layout_constraintTop_toTopOf="parent"
65                 />
66
67             <TextView
68                 android:id="@+id/textView3"
69                 android:layout_width="wrap_content"
70                 android:layout_height="wrap_content"
71                 android:layout_marginStart="8dp"
72                 android:layout_marginTop="24dp"
73                 android:layout_marginEnd="8dp"
74                 android:text="@string/text_welcome_profile_needed"
75                 android:textColor="?textColor"
76                 android:textSize="20sp"
77                 app:layout_constraintEnd_toEndOf="parent"
78                 app:layout_constraintStart_toStartOf="parent"
79                 app:layout_constraintTop_toBottomOf="@+id/textView"
80                 />
81
82             <Button
83                 android:id="@+id/btn_no_profiles_add"
84                 android:layout_width="wrap_content"
85                 android:layout_height="wrap_content"
86                 android:layout_marginStart="8dp"
87                 android:layout_marginTop="24dp"
88                 android:layout_marginEnd="8dp"
89                 android:layout_marginBottom="8dp"
90                 android:backgroundTint="?colorSecondary"
91                 android:drawablePadding="16dp"
92                 android:text="@string/create_profile_label"
93                 android:textColor="@color/design_default_color_on_primary"
94                 app:layout_constraintBottom_toTopOf="@id/btn_restore"
95                 app:layout_constraintEnd_toEndOf="parent"
96                 app:layout_constraintStart_toStartOf="parent"
97                 app:layout_constraintTop_toBottomOf="@+id/textView3"
98                 />
99             <Button
100                 android:id="@+id/btn_restore"
101                 android:layout_width="wrap_content"
102                 android:layout_height="wrap_content"
103                 android:layout_marginHorizontal="8dp"
104                 android:layout_marginVertical="24dp"
105                 android:drawableStart="@drawable/ic_baseline_restore_24"
106                 android:drawablePadding="@dimen/text_margin"
107                 android:text="@string/restore_button_label"
108                 app:layout_constraintBottom_toBottomOf="parent"
109                 app:layout_constraintEnd_toEndOf="parent"
110                 app:layout_constraintStart_toStartOf="parent"
111                 app:layout_constraintTop_toBottomOf="@id/btn_no_profiles_add"
112                 />
113         </androidx.constraintlayout.widget.ConstraintLayout>
114     </androidx.constraintlayout.widget.ConstraintLayout>
115
116     <androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:app="http://schemas.android.com/apk/res-auto"
117         android:id="@+id/main_app_layout"
118         android:layout_width="match_parent"
119         android:layout_height="match_parent"
120         android:background="?android:attr/colorBackground"
121         android:orientation="vertical"
122         android:visibility="visible"
123         >
124
125         <com.google.android.material.floatingactionbutton.FloatingActionButton
126             android:id="@+id/btn_add_transaction"
127             android:layout_width="wrap_content"
128             android:layout_height="wrap_content"
129             android:layout_gravity="bottom|end"
130             android:layout_margin="@dimen/fab_margin"
131             android:contentDescription="@string/new_transaction_fab_description"
132             app:backgroundTint="?colorSecondary"
133             app:layout_constraintBottom_toBottomOf="parent"
134             app:layout_constraintEnd_toEndOf="parent"
135             app:maxImageSize="36dp"
136             app:srcCompat="@drawable/ic_add_white_24dp"
137             />
138
139         <androidx.drawerlayout.widget.DrawerLayout
140             android:id="@+id/drawer_layout"
141             android:layout_width="match_parent"
142             android:layout_height="match_parent"
143             tools:openDrawer="start"
144             >
145
146             <androidx.constraintlayout.widget.ConstraintLayout
147                 android:id="@+id/pager_layout"
148                 android:layout_width="match_parent"
149                 android:layout_height="match_parent"
150                 >
151
152                 <androidx.appcompat.widget.Toolbar
153                     android:id="@+id/toolbar"
154                     android:layout_width="match_parent"
155                     android:layout_height="wrap_content"
156                     android:background="?colorPrimary"
157                     android:theme="@style/AppTheme.AppBarOverlay"
158                     app:layout_constraintEnd_toEndOf="parent"
159                     app:layout_constraintStart_toStartOf="parent"
160                     app:layout_constraintTop_toTopOf="parent"
161                     app:popupTheme="@style/AppTheme.PopupOverlay"
162                     app:subtitleTextAppearance="@style/TextAppearance.AppCompat.Widget.ActionBar.Subtitle"
163                     app:titleTextAppearance="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
164                     />
165
166
167                 <LinearLayout
168                     android:id="@+id/transaction_progress_layout"
169                     android:layout_width="match_parent"
170                     android:layout_height="wrap_content"
171                     android:gravity="center_vertical"
172                     android:orientation="horizontal"
173                     android:visibility="gone"
174                     app:layout_constraintEnd_toEndOf="parent"
175                     app:layout_constraintStart_toStartOf="parent"
176                     app:layout_constraintTop_toBottomOf="@id/toolbar"
177                     >
178
179                     <ProgressBar
180                         android:id="@+id/transaction_list_progress_bar"
181                         style="?android:attr/progressBarStyleHorizontal"
182                         android:layout_width="0dp"
183                         android:layout_height="wrap_content"
184                         android:layout_marginTop="-8dp"
185                         android:layout_marginBottom="-7dp"
186                         android:layout_weight="1"
187                         android:indeterminate="true"
188                         android:min="0"
189                         android:padding="0dp"
190                         android:progressTint="?colorPrimary"
191                         app:layout_constraintEnd_toEndOf="parent"
192                         app:layout_constraintStart_toStartOf="parent"
193                         />
194
195                     <TextView
196                         android:id="@+id/transaction_list_cancel_download"
197                         android:layout_width="wrap_content"
198                         android:layout_height="wrap_content"
199                         android:background="@drawable/ic_clear_accent_24dp"
200                         android:clickable="true"
201                         android:focusable="true"
202                         />
203                 </LinearLayout>
204
205                 <androidx.viewpager2.widget.ViewPager2
206                     android:id="@+id/main_pager"
207                     android:layout_width="match_parent"
208                     android:layout_height="0dp"
209                     app:layout_constraintBottom_toBottomOf="parent"
210                     app:layout_constraintEnd_toEndOf="parent"
211                     app:layout_constraintStart_toStartOf="parent"
212                     app:layout_constraintTop_toBottomOf="@id/transaction_progress_layout"
213                     >
214
215                 </androidx.viewpager2.widget.ViewPager2>
216
217                 <View
218                     android:layout_width="0dp"
219                     android:layout_height="?attr/main_header_shadow_height"
220                     android:background="@drawable/drop_shadow"
221                     app:layout_constraintEnd_toEndOf="parent"
222                     app:layout_constraintStart_toStartOf="parent"
223                     app:layout_constraintTop_toBottomOf="@id/transaction_progress_layout"
224                     />
225
226
227             </androidx.constraintlayout.widget.ConstraintLayout>
228
229             <com.google.android.material.navigation.NavigationView xmlns:app="http://schemas.android.com/apk/res-auto"
230                 android:id="@+id/nav_view"
231                 android:layout_width="wrap_content"
232                 android:layout_height="match_parent"
233                 android:layout_gravity="start"
234                 android:fitsSystemWindows="true"
235                 >
236
237
238                 <androidx.constraintlayout.widget.ConstraintLayout
239                     android:layout_width="match_parent"
240                     android:layout_height="match_parent"
241                     android:layout_marginBottom="0dp"
242                     android:animateLayoutChanges="true"
243                     android:orientation="vertical"
244                     >
245
246                     <LinearLayout
247                         android:id="@+id/nav_fixed_items"
248                         android:layout_width="match_parent"
249                         android:layout_height="wrap_content"
250                         android:divider="@drawable/list_divider"
251                         android:elevation="2dp"
252                         android:orientation="vertical"
253                         android:showDividers="beginning"
254                         android:visibility="visible"
255                         app:layout_constraintBottom_toBottomOf="parent"
256                         >
257
258                         <TextView
259                             android:id="@+id/textView2"
260                             style="@style/nav_button"
261                             android:layout_weight="1"
262                             android:text="@string/action_settings"
263                             android:visibility="gone"
264                             app:drawableStartCompat="@drawable/ic_settings_black_24dp"
265                             />
266                         <TextView
267                             android:id="@+id/nav_backup_restore"
268                             style="@style/nav_button"
269                             android:layout_weight="1"
270                             android:text="@string/action_import_export"
271                             app:drawableStartCompat="@drawable/ic_baseline_backup_24"
272                             />
273
274                     </LinearLayout>
275
276                     <ScrollView
277                         android:layout_width="0dp"
278                         android:layout_height="0dp"
279                         app:layout_constraintBottom_toTopOf="@+id/nav_fixed_items"
280                         app:layout_constraintEnd_toEndOf="parent"
281                         app:layout_constraintLeft_toLeftOf="parent"
282                         app:layout_constraintStart_toStartOf="parent"
283                         app:layout_constraintTop_toTopOf="parent"
284                         >
285
286                         <LinearLayout
287                             android:id="@+id/nav_upper"
288                             android:layout_width="match_parent"
289                             android:layout_height="wrap_content"
290                             android:animateLayoutChanges="true"
291                             android:orientation="vertical"
292                             android:showDividers="beginning"
293                             app:layout_constraintBottom_toTopOf="@+id/nav_fixed_items"
294                             app:layout_constraintTop_toBottomOf="@+id/nav_header"
295                             >
296
297                             <include layout="@layout/nav_header_layout" />
298
299                             <LinearLayout
300                                 android:id="@+id/nav_actions"
301                                 android:layout_width="match_parent"
302                                 android:layout_height="match_parent"
303                                 android:orientation="vertical"
304                                 >
305
306                                 <TextView
307                                     android:id="@+id/nav_account_summary"
308                                     style="@style/nav_button"
309                                     android:text="@string/account_summary_title"
310                                     app:drawableStartCompat="@drawable/ic_home_black_24dp"
311                                     />
312
313                                 <TextView
314                                     android:id="@+id/nav_latest_transactions"
315                                     style="@style/nav_button"
316                                     android:text="@string/nav_transactions_title"
317                                     app:drawableStartCompat="@drawable/ic_event_note_black_24dp"
318                                     />
319
320                                 <TextView
321                                     android:id="@+id/textView5"
322                                     style="@style/nav_button"
323                                     android:text="@string/nav_reports_title"
324                                     android:visibility="gone"
325                                     app:drawableStartCompat="@drawable/ic_assignment_black_24dp"
326                                     />
327
328                                 <androidx.constraintlayout.widget.ConstraintLayout
329                                     android:id="@+id/nav_profile_list_head_layout"
330                                     android:layout_width="match_parent"
331                                     android:layout_height="@dimen/thumb_row_height"
332                                     >
333
334                                     <ImageView
335                                         android:id="@+id/nav_new_profile_button"
336                                         android:layout_width="wrap_content"
337                                         android:layout_height="wrap_content"
338                                         android:layout_gravity="center"
339                                         android:contentDescription="@string/icon"
340                                         android:paddingStart="8dp"
341                                         android:paddingEnd="8dp"
342                                         android:visibility="gone"
343                                         app:layout_constraintBottom_toBottomOf="parent"
344                                         app:layout_constraintEnd_toStartOf="@id/nav_profile_list_head_buttons"
345                                         app:layout_constraintStart_toEndOf="@id/nav_profiles_label"
346                                         app:layout_constraintTop_toTopOf="parent"
347                                         app:srcCompat="@drawable/ic_add_circle_white_24dp"
348                                         />
349
350                                     <LinearLayout
351                                         android:id="@+id/nav_profile_list_head_buttons"
352                                         android:layout_width="wrap_content"
353                                         android:layout_height="0dp"
354                                         android:gravity="center_vertical"
355                                         android:orientation="horizontal"
356                                         android:paddingStart="16dp"
357                                         android:paddingEnd="16dp"
358                                         app:layout_constraintBottom_toBottomOf="parent"
359                                         app:layout_constraintEnd_toEndOf="parent"
360                                         app:layout_constraintTop_toTopOf="parent"
361                                         >
362
363                                         <ImageView
364                                             android:id="@+id/nav_profiles_cancel_edit"
365                                             android:layout_width="wrap_content"
366                                             android:layout_height="wrap_content"
367                                             android:background="@drawable/ic_clear_accent_24dp"
368                                             android:contentDescription="@string/icon"
369                                             android:gravity="end|center_vertical"
370                                             android:paddingStart="8dp"
371                                             android:paddingEnd="8dp"
372                                             android:visibility="gone"
373                                             app:layout_constraintBottom_toBottomOf="parent"
374                                             app:layout_constraintEnd_toEndOf="parent"
375                                             app:layout_constraintTop_toTopOf="parent"
376                                             />
377
378                                         <ImageView
379                                             android:id="@+id/nav_profiles_start_edit"
380                                             android:layout_width="wrap_content"
381                                             android:layout_height="wrap_content"
382                                             android:background="@drawable/ic_settings_black_24dp"
383                                             android:contentDescription="@string/icon"
384                                             android:gravity="end|center_vertical"
385                                             android:paddingStart="8dp"
386                                             android:paddingEnd="8dp"
387                                             app:layout_constraintBottom_toBottomOf="parent"
388                                             app:layout_constraintEnd_toEndOf="parent"
389                                             app:layout_constraintTop_toTopOf="parent"
390                                             />
391
392                                     </LinearLayout>
393
394                                     <TextView
395                                         android:id="@+id/nav_profiles_label"
396                                         style="@style/nav_button"
397                                         android:layout_width="wrap_content"
398                                         android:layout_height="0dp"
399                                         android:gravity="start|center_vertical"
400                                         android:text="@string/profiles"
401                                         app:layout_constraintBottom_toBottomOf="parent"
402                                         app:layout_constraintStart_toStartOf="parent"
403                                         app:layout_constraintTop_toTopOf="parent"
404                                         />
405
406                                 </androidx.constraintlayout.widget.ConstraintLayout>
407                                 <LinearLayout
408                                     android:id="@+id/nav_profile_list_container"
409                                     android:layout_width="match_parent"
410                                     android:layout_height="wrap_content"
411                                     android:animateLayoutChanges="true"
412                                     android:nestedScrollingEnabled="false"
413                                     android:orientation="vertical"
414                                     >
415
416                                     <androidx.recyclerview.widget.RecyclerView
417                                         android:id="@+id/nav_profile_list"
418                                         android:layout_width="match_parent"
419                                         android:layout_height="wrap_content"
420                                         android:isScrollContainer="false"
421                                         android:nestedScrollingEnabled="false"
422                                         android:orientation="vertical"
423                                         >
424
425                                     </androidx.recyclerview.widget.RecyclerView>
426
427                                 </LinearLayout>
428
429                             </LinearLayout>
430                             <TextView
431                                 android:id="@+id/nav_patterns"
432                                 style="@style/nav_button"
433                                 android:text="@string/nav_templates"
434                                 app:drawableStartCompat="@drawable/ic_baseline_auto_graph_24"
435                                 />
436
437                         </LinearLayout>
438                     </ScrollView>
439
440                 </androidx.constraintlayout.widget.ConstraintLayout>
441
442             </com.google.android.material.navigation.NavigationView>
443         </androidx.drawerlayout.widget.DrawerLayout>
444     </androidx.coordinatorlayout.widget.CoordinatorLayout>
445 </FrameLayout>