<?xml version="1.0" encoding="utf-8"?><!--
- ~ Copyright © 2019 Damyan Ivanov.
+ ~ Copyright © 2021 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
~ You should have received a copy of the GNU General Public License
~ along with MoLe. If not, see <https://www.gnu.org/licenses/>.
-->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:orientation="vertical"
- android:theme="@style/AppTheme.AppBarOverlay"
- tools:context=".ui.activity.MainActivity">
+ tools:context=".ui.activity.MainActivity"
+ >
- <androidx.appcompat.widget.Toolbar
- android:id="@+id/toolbar"
+ <androidx.constraintlayout.widget.ConstraintLayout xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:id="@+id/no_profiles_layout"
android:layout_width="match_parent"
- android:layout_height="?attr/actionBarSize"
- android:background="?colorPrimary"
- app:popupTheme="@style/AppTheme.PopupOverlay" />
+ android:layout_height="match_parent"
+ android:background="?table_row_dark_bg"
+ android:visibility="gone"
+ >
+
+ <FrameLayout
+ android:id="@+id/welcome_header"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ >
+
+ <include layout="@layout/nav_header_layout" />
+ </FrameLayout>
+
+ <androidx.constraintlayout.widget.ConstraintLayout
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:padding="@dimen/activity_horizontal_margin"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@id/welcome_header"
+ >
+
+ <TextView
+ android:id="@+id/textView"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="48dp"
+ android:text="@string/text_welcome"
+ android:textColor="?textColor"
+ android:textSize="48sp"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ />
+
+ <TextView
+ android:id="@+id/textView3"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginStart="8dp"
+ android:layout_marginTop="24dp"
+ android:layout_marginEnd="8dp"
+ android:text="@string/text_welcome_profile_needed"
+ android:textColor="?textColor"
+ android:textSize="20sp"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/textView"
+ />
+
+ <Button
+ android:id="@+id/btn_no_profiles_add"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginStart="8dp"
+ android:layout_marginTop="24dp"
+ android:layout_marginEnd="8dp"
+ android:layout_marginBottom="8dp"
+ android:backgroundTint="?colorSecondary"
+ android:drawablePadding="16dp"
+ android:text="@string/create_profile_label"
+ android:textColor="@color/design_default_color_on_primary"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/textView3"
+ />
+ </androidx.constraintlayout.widget.ConstraintLayout>
+ </androidx.constraintlayout.widget.ConstraintLayout>
- <androidx.drawerlayout.widget.DrawerLayout
- android:id="@+id/drawer_layout"
+ <androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:id="@+id/main_app_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
- tools:openDrawer="start">
+ android:background="?android:attr/colorBackground"
+ android:orientation="vertical"
+ android:visibility="visible"
+ >
- <androidx.constraintlayout.widget.ConstraintLayout
+ <com.google.android.material.floatingactionbutton.FloatingActionButton
+ android:id="@+id/btn_add_transaction"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="bottom|end"
+ android:layout_margin="@dimen/fab_margin"
+ android:contentDescription="@string/new_transaction_fab_description"
+ app:backgroundTint="?colorSecondary"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:maxImageSize="36dp"
+ app:srcCompat="@drawable/ic_add_white_24dp"
+ />
+
+ <androidx.drawerlayout.widget.DrawerLayout
+ android:id="@+id/drawer_layout"
android:layout_width="match_parent"
- android:layout_height="match_parent">
+ android:layout_height="match_parent"
+ tools:openDrawer="start"
+ >
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/pager_layout"
android:layout_width="match_parent"
- android:layout_height="match_parent">
+ android:layout_height="match_parent"
+ >
- <com.google.android.material.floatingactionbutton.FloatingActionButton
- android:id="@+id/btn_add_transaction"
- android:layout_width="wrap_content"
+ <androidx.appcompat.widget.Toolbar
+ android:id="@+id/toolbar"
+ android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_gravity="bottom|end"
- android:layout_margin="@dimen/fab_margin"
- app:backgroundTint="?colorAccent"
- app:layout_constraintBottom_toBottomOf="parent"
+ android:background="?colorPrimary"
+ android:theme="@style/AppTheme.AppBarOverlay"
app:layout_constraintEnd_toEndOf="parent"
- app:srcCompat="@drawable/svg_thick_plus_white" />
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ app:popupTheme="@style/AppTheme.PopupOverlay"
+ app:subtitleTextAppearance="@style/TextAppearance.AppCompat.Widget.ActionBar.Subtitle"
+ app:titleTextAppearance="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
+ />
+
<LinearLayout
- android:id="@+id/main_header"
+ android:id="@+id/transaction_progress_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:orientation="vertical"
- android:theme="@style/AppTheme"
+ android:gravity="center_vertical"
+ android:orientation="horizontal"
+ android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="parent">
+ app:layout_constraintTop_toBottomOf="@id/toolbar"
+ >
- <LinearLayout
- android:id="@+id/transaction_list_account_name_filter"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="horizontal"
- android:visibility="gone">
+ <ProgressBar
+ android:id="@+id/transaction_list_progress_bar"
+ style="?android:attr/progressBarStyleHorizontal"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="-8dp"
+ android:layout_marginBottom="-7dp"
+ android:layout_weight="1"
+ android:indeterminate="true"
+ android:min="0"
+ android:padding="0dp"
+ android:progressTint="?colorPrimary"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ />
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_filter_list_black_24dp" />
+ <TextView
+ android:id="@+id/transaction_list_cancel_download"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_clear_accent_24dp"
+ android:clickable="true"
+ android:focusable="true"
+ />
+ </LinearLayout>
- <AutoCompleteTextView
- android:id="@+id/transaction_filter_account_name"
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_weight="1" />
+ <androidx.viewpager2.widget.ViewPager2
+ android:id="@+id/main_pager"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@id/transaction_progress_layout"
+ >
- <TextView
- android:id="@+id/clearAccountNameFilter"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_clear_black_24dp"
- android:clickable="true"
- android:focusable="true" />
+ </androidx.viewpager2.widget.ViewPager2>
- </LinearLayout>
+ <View
+ android:layout_width="0dp"
+ android:layout_height="?attr/main_header_shadow_height"
+ android:background="@drawable/drop_shadow"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@id/transaction_progress_layout"
+ />
+
+
+ </androidx.constraintlayout.widget.ConstraintLayout>
+
+ <com.google.android.material.navigation.NavigationView xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:id="@+id/nav_view"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:layout_gravity="start"
+ android:fitsSystemWindows="true"
+ >
+
+
+ <androidx.constraintlayout.widget.ConstraintLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_marginBottom="0dp"
+ android:animateLayoutChanges="true"
+ android:orientation="vertical"
+ >
<LinearLayout
+ android:id="@+id/nav_fixed_items"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:elevation="24dp"
- android:orientation="horizontal">
+ android:divider="@drawable/list_divider"
+ android:elevation="2dp"
+ android:orientation="vertical"
+ android:showDividers="beginning"
+ android:visibility="gone"
+ app:layout_constraintBottom_toBottomOf="parent"
+ >
<TextView
- android:id="@+id/transaction_last_update_label"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:paddingStart="8dp"
- android:paddingEnd="8dp"
- android:text="@string/transactions_last_update_label"
- android:textColor="@android:color/tertiary_text_light" />
-
- <TextView
- android:id="@+id/transactions_last_update"
- style="@android:style/Widget.DeviceDefault.Light.TextView"
- android:layout_width="0dp"
- android:layout_height="wrap_content"
+ android:id="@+id/textView2"
+ style="@style/nav_button"
android:layout_weight="1"
- android:text="\?"
- android:textColor="@android:color/tertiary_text_light"
- tools:ignore="HardcodedText" />
+ android:text="@string/action_settings"
+ app:drawableStartCompat="@drawable/ic_settings_black_24dp"
+ />
+
</LinearLayout>
- <LinearLayout
- android:id="@+id/transaction_progress_layout"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="center_vertical"
- android:orientation="horizontal"
- android:visibility="gone">
-
- <ProgressBar
- android:id="@+id/transaction_list_progress_bar"
- style="?android:attr/progressBarStyleHorizontal"
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_marginTop="-8dp"
- android:layout_marginBottom="-7dp"
- android:layout_weight="1"
- android:indeterminate="true"
- android:padding="0dp"
- android:progressTint="?colorPrimary"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent" />
+ <ScrollView
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ app:layout_constraintBottom_toTopOf="@+id/nav_fixed_items"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintLeft_toLeftOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ >
- <TextView
- android:id="@+id/transaction_list_cancel_download"
- android:layout_width="wrap_content"
+ <LinearLayout
+ android:id="@+id/nav_upper"
+ android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:background="@drawable/ic_clear_black_24dp"
- android:clickable="true"
- android:focusable="true"
- android:onClick="onStopTransactionRefreshClick" />
- </LinearLayout>
+ android:animateLayoutChanges="true"
+ android:orientation="vertical"
+ android:showDividers="beginning"
+ app:layout_constraintBottom_toTopOf="@+id/nav_fixed_items"
+ app:layout_constraintTop_toBottomOf="@+id/nav_header"
+ >
- </LinearLayout>
+ <include layout="@layout/nav_header_layout" />
- <androidx.viewpager.widget.ViewPager
- android:id="@+id/root_frame"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- app:layout_behavior="@string/appbar_scrolling_view_behavior"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/main_header">
+ <LinearLayout
+ android:id="@+id/nav_actions"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ >
- </androidx.viewpager.widget.ViewPager>
+ <TextView
+ android:id="@+id/nav_account_summary"
+ style="@style/nav_button"
+ android:text="@string/account_summary_title"
+ app:drawableStartCompat="@drawable/ic_home_black_24dp"
+ />
- <View
- android:layout_width="0dp"
- android:layout_height="4dp"
- android:background="@drawable/drop_shadow"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@id/main_header" />
+ <TextView
+ android:id="@+id/nav_latest_transactions"
+ style="@style/nav_button"
+ android:text="@string/nav_transactions_title"
+ app:drawableStartCompat="@drawable/ic_event_note_black_24dp"
+ />
+ <TextView
+ android:id="@+id/textView5"
+ style="@style/nav_button"
+ android:text="@string/nav_reports_title"
+ android:visibility="gone"
+ app:drawableStartCompat="@drawable/ic_assignment_black_24dp"
+ />
- </androidx.constraintlayout.widget.ConstraintLayout>
+ <androidx.constraintlayout.widget.ConstraintLayout
+ android:id="@+id/nav_profile_list_head_layout"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/thumb_row_height"
+ >
- <include layout="@layout/no_profiles" />
- </androidx.constraintlayout.widget.ConstraintLayout>
+ <ImageView
+ android:id="@+id/nav_new_profile_button"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:contentDescription="@string/icon"
+ android:paddingStart="8dp"
+ android:paddingEnd="8dp"
+ android:visibility="gone"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toStartOf="@id/nav_profile_list_head_buttons"
+ app:layout_constraintStart_toEndOf="@id/nav_profiles_label"
+ app:layout_constraintTop_toTopOf="parent"
+ app:srcCompat="@drawable/ic_add_circle_white_24dp"
+ />
+
+ <LinearLayout
+ android:id="@+id/nav_profile_list_head_buttons"
+ android:layout_width="wrap_content"
+ android:layout_height="0dp"
+ android:gravity="center_vertical"
+ android:orientation="horizontal"
+ android:paddingStart="16dp"
+ android:paddingEnd="16dp"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ >
+
+ <ImageView
+ android:id="@+id/nav_profiles_cancel_edit"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_clear_accent_24dp"
+ android:contentDescription="@string/icon"
+ android:gravity="end|center_vertical"
+ android:paddingStart="8dp"
+ android:paddingEnd="8dp"
+ android:visibility="gone"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ />
+
+ <ImageView
+ android:id="@+id/nav_profiles_start_edit"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_settings_black_24dp"
+ android:contentDescription="@string/icon"
+ android:gravity="end|center_vertical"
+ android:paddingStart="8dp"
+ android:paddingEnd="8dp"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ />
+
+ </LinearLayout>
+
+ <TextView
+ android:id="@+id/nav_profiles_label"
+ style="@style/nav_button"
+ android:layout_width="wrap_content"
+ android:layout_height="0dp"
+ android:gravity="start|center_vertical"
+ android:text="@string/profiles"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ />
+
+ </androidx.constraintlayout.widget.ConstraintLayout>
+ <LinearLayout
+ android:id="@+id/nav_profile_list_container"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:animateLayoutChanges="true"
+ android:nestedScrollingEnabled="false"
+ android:orientation="vertical"
+ >
+
+ <androidx.recyclerview.widget.RecyclerView
+ android:id="@+id/nav_profile_list"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:isScrollContainer="false"
+ android:nestedScrollingEnabled="false"
+ android:orientation="vertical"
+ >
+
+ </androidx.recyclerview.widget.RecyclerView>
+
+ </LinearLayout>
+
+ </LinearLayout>
+ <TextView
+ android:id="@+id/nav_patterns"
+ style="@style/nav_button"
+ android:text="@string/nav_templates"
+ app:drawableStartCompat="@drawable/ic_baseline_auto_graph_24"
+ />
+
+ </LinearLayout>
+ </ScrollView>
- <include layout="@layout/main_navigation" />
+ </androidx.constraintlayout.widget.ConstraintLayout>
- </androidx.drawerlayout.widget.DrawerLayout>
-</LinearLayout>
+ </com.google.android.material.navigation.NavigationView>
+ </androidx.drawerlayout.widget.DrawerLayout>
+ </androidx.coordinatorlayout.widget.CoordinatorLayout>
+</FrameLayout>
\ No newline at end of file