summaryrefslogtreecommitdiff
path: root/ui/preferences/src/main/res/layout
diff options
context:
space:
mode:
authorByteHamster <ByteHamster@users.noreply.github.com>2024-03-23 09:40:40 +0100
committerGitHub <noreply@github.com>2024-03-23 09:40:40 +0100
commitf20ce1fc690788273bb779663a4f3211f47a0973 (patch)
treea1192a00bc1b5153d143fa579b8c6f977111c847 /ui/preferences/src/main/res/layout
parent376c83d200859ef562d6e3de02602ef18de3e7de (diff)
downloadAntennaPod-f20ce1fc690788273bb779663a4f3211f47a0973.zip
Move first batch of preferences code to :ui:preferences (#7010)
Diffstat (limited to 'ui/preferences/src/main/res/layout')
-rw-r--r--ui/preferences/src/main/res/layout/about_teaser.xml9
-rw-r--r--ui/preferences/src/main/res/layout/alertdialog_sync_provider_chooser.xml24
-rw-r--r--ui/preferences/src/main/res/layout/authentication_dialog.xml61
-rw-r--r--ui/preferences/src/main/res/layout/choose_data_folder_dialog.xml12
-rw-r--r--ui/preferences/src/main/res/layout/choose_data_folder_dialog_entry.xml46
-rw-r--r--ui/preferences/src/main/res/layout/dialog_switch_preference.xml15
-rw-r--r--ui/preferences/src/main/res/layout/gpodnetauth_credentials.xml83
-rw-r--r--ui/preferences/src/main/res/layout/gpodnetauth_device.xml67
-rw-r--r--ui/preferences/src/main/res/layout/gpodnetauth_device_row.xml13
-rw-r--r--ui/preferences/src/main/res/layout/gpodnetauth_dialog.xml31
-rw-r--r--ui/preferences/src/main/res/layout/gpodnetauth_finish.xml29
-rw-r--r--ui/preferences/src/main/res/layout/gpodnetauth_host.xml38
-rw-r--r--ui/preferences/src/main/res/layout/nextcloud_auth_dialog.xml75
-rw-r--r--ui/preferences/src/main/res/layout/proxy_settings.xml90
-rw-r--r--ui/preferences/src/main/res/layout/simple_icon_list_item.xml41
-rw-r--r--ui/preferences/src/main/res/layout/theme_preference.xml123
16 files changed, 757 insertions, 0 deletions
diff --git a/ui/preferences/src/main/res/layout/about_teaser.xml b/ui/preferences/src/main/res/layout/about_teaser.xml
new file mode 100644
index 000000000..4e7f0454f
--- /dev/null
+++ b/ui/preferences/src/main/res/layout/about_teaser.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ImageView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_width="match_parent"
+ android:adjustViewBounds="true"
+ android:layout_height="wrap_content"
+ app:srcCompat="@drawable/teaser"
+ android:importantForAccessibility="no"/> \ No newline at end of file
diff --git a/ui/preferences/src/main/res/layout/alertdialog_sync_provider_chooser.xml b/ui/preferences/src/main/res/layout/alertdialog_sync_provider_chooser.xml
new file mode 100644
index 000000000..9b4d62804
--- /dev/null
+++ b/ui/preferences/src/main/res/layout/alertdialog_sync_provider_chooser.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:padding="16dp">
+
+ <ImageView
+ android:id="@+id/icon"
+ android:layout_width="48dp"
+ android:layout_height="48dp"
+ android:layout_marginRight="16dip"
+ android:layout_marginEnd="16dip"
+ android:layout_gravity="center_vertical" />
+
+ <TextView
+ android:id="@+id/title"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text=""
+ android:layout_gravity="center" />
+
+</LinearLayout>
diff --git a/ui/preferences/src/main/res/layout/authentication_dialog.xml b/ui/preferences/src/main/res/layout/authentication_dialog.xml
new file mode 100644
index 000000000..0d54420d4
--- /dev/null
+++ b/ui/preferences/src/main/res/layout/authentication_dialog.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:padding="16dp">
+
+ <com.google.android.material.textfield.TextInputLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginBottom="8dp"
+ style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox">
+
+ <com.google.android.material.textfield.TextInputEditText
+ android:id="@+id/usernameEditText"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:hint="@string/username_label"
+ android:lines="1" />
+
+ </com.google.android.material.textfield.TextInputLayout>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal">
+
+ <com.google.android.material.textfield.TextInputLayout
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox">
+
+ <com.google.android.material.textfield.TextInputEditText
+ android:id="@+id/passwordEditText"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:hint="@string/password_label"
+ android:inputType="textPassword"
+ android:lines="1" />
+
+ </com.google.android.material.textfield.TextInputLayout>
+
+ <ImageView
+ android:id="@+id/showPasswordButton"
+ android:layout_width="40dp"
+ android:layout_height="40dp"
+ android:src="@drawable/ic_eye"
+ android:layout_gravity="center_vertical"
+ android:padding="8dp"
+ android:textColor="?android:attr/textColorPrimary"
+ android:background="?attr/selectableItemBackgroundBorderless"
+ android:alpha="0.6"
+ android:textSize="20sp"
+ android:layout_marginLeft="8dp"
+ android:layout_marginStart="8dp" />
+
+ </LinearLayout>
+
+</LinearLayout>
diff --git a/ui/preferences/src/main/res/layout/choose_data_folder_dialog.xml b/ui/preferences/src/main/res/layout/choose_data_folder_dialog.xml
new file mode 100644
index 000000000..bac14a108
--- /dev/null
+++ b/ui/preferences/src/main/res/layout/choose_data_folder_dialog.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+
+ <androidx.recyclerview.widget.RecyclerView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:id="@+id/recyclerView" />
+
+</LinearLayout>
diff --git a/ui/preferences/src/main/res/layout/choose_data_folder_dialog_entry.xml b/ui/preferences/src/main/res/layout/choose_data_folder_dialog_entry.xml
new file mode 100644
index 000000000..addc63f4d
--- /dev/null
+++ b/ui/preferences/src/main/res/layout/choose_data_folder_dialog_entry.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:id="@+id/root"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_margin="16dp"
+ android:background="?attr/selectableItemBackground">
+
+ <RadioButton
+ android:id="@+id/radio_button"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentStart="true"
+ android:layout_alignParentLeft="true"
+ android:layout_centerVertical="true"
+ android:padding="4dp" />
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_centerInParent="true"
+ android:layout_toEndOf="@+id/radio_button"
+ android:layout_toRightOf="@+id/radio_button"
+ android:orientation="vertical">
+
+ <TextView
+ android:id="@+id/path"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ tools:text="/storage/sdcard0" />
+
+ <TextView
+ android:id="@+id/size"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ tools:text="2 GB" />
+
+ <ProgressBar
+ android:id="@+id/used_space"
+ style="?android:attr/progressBarStyleHorizontal"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content" />
+ </LinearLayout>
+
+</RelativeLayout>
diff --git a/ui/preferences/src/main/res/layout/dialog_switch_preference.xml b/ui/preferences/src/main/res/layout/dialog_switch_preference.xml
new file mode 100644
index 000000000..45fe21a90
--- /dev/null
+++ b/ui/preferences/src/main/res/layout/dialog_switch_preference.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+ 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:padding="24dp">
+
+ <com.google.android.material.materialswitch.MaterialSwitch
+ android:id="@+id/dialogSwitch"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ tools:text="Switch" />
+
+</LinearLayout>
diff --git a/ui/preferences/src/main/res/layout/gpodnetauth_credentials.xml b/ui/preferences/src/main/res/layout/gpodnetauth_credentials.xml
new file mode 100644
index 000000000..a5b8c594d
--- /dev/null
+++ b/ui/preferences/src/main/res/layout/gpodnetauth_credentials.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical">
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginBottom="16dp"
+ android:text="@string/synchronization_credentials_explanation" />
+
+ <TextView
+ android:id="@+id/createAccountWarning"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/gpodnetauth_encryption_warning"
+ android:textColor="?attr/icon_red"
+ android:textStyle="bold"
+ android:visibility="invisible" />
+
+ <com.google.android.material.textfield.TextInputLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox">
+
+ <com.google.android.material.textfield.TextInputEditText
+ android:id="@+id/etxtUsername"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:hint="@string/username_label"
+ android:inputType="textNoSuggestions"
+ android:lines="1"
+ android:imeOptions="actionNext|flagNoFullscreen" />
+
+ </com.google.android.material.textfield.TextInputLayout>
+
+ <com.google.android.material.textfield.TextInputLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginBottom="16dp"
+ style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox">
+
+ <com.google.android.material.textfield.TextInputEditText
+ android:id="@+id/etxtPassword"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:hint="@string/password_label"
+ android:inputType="textPassword"
+ android:lines="1"
+ android:imeOptions="actionNext|flagNoFullscreen"
+ android:imeActionLabel="@string/synchronization_login_butLabel" />
+
+ </com.google.android.material.textfield.TextInputLayout>
+
+ <ProgressBar
+ android:id="@+id/progBarLogin"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:visibility="gone"
+ android:layout_gravity="right" />
+
+ <TextView
+ android:id="@+id/credentialsError"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:textColor="?attr/icon_red"
+ android:textSize="@dimen/text_size_small"
+ android:maxLines="2"
+ android:ellipsize="end"
+ android:gravity="center"
+ android:visibility="gone"
+ tools:text=" message" />
+
+ <Button
+ android:id="@+id/butLogin"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/synchronization_login_butLabel" />
+
+</LinearLayout>
diff --git a/ui/preferences/src/main/res/layout/gpodnetauth_device.xml b/ui/preferences/src/main/res/layout/gpodnetauth_device.xml
new file mode 100644
index 000000000..6e051ecf3
--- /dev/null
+++ b/ui/preferences/src/main/res/layout/gpodnetauth_device.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical">
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginBottom="16dp"
+ android:text="@string/synchronization_selectDevice_explanation" />
+
+ <com.google.android.material.textfield.TextInputLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox">
+
+ <com.google.android.material.textfield.TextInputEditText
+ android:id="@+id/deviceName"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:hint="@string/gpodnetauth_device_name"
+ android:lines="1"
+ android:imeOptions="actionNext|flagNoFullscreen" />
+
+ </com.google.android.material.textfield.TextInputLayout>
+
+ <Button
+ android:id="@+id/createDeviceButton"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="right|end"
+ android:text="@string/gpodnetauth_create_device" />
+
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="16dp"
+ android:text="@string/gpodnetauth_existing_devices"
+ style="@style/AntennaPod.TextView.Heading" />
+
+ <TextView
+ android:id="@+id/deviceSelectError"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:textColor="?attr/icon_red"
+ android:textSize="@dimen/text_size_small"
+ android:visibility="gone"
+ tools:text="Error message"
+ tools:background="@android:color/holo_green_dark" />
+
+ <LinearLayout
+ android:id="@+id/devicesContainer"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical" />
+
+ <ProgressBar
+ android:id="@+id/progbarCreateDevice"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textColor="?attr/icon_red"
+ android:visibility="gone" />
+
+</LinearLayout>
diff --git a/ui/preferences/src/main/res/layout/gpodnetauth_device_row.xml b/ui/preferences/src/main/res/layout/gpodnetauth_device_row.xml
new file mode 100644
index 000000000..d39c00571
--- /dev/null
+++ b/ui/preferences/src/main/res/layout/gpodnetauth_device_row.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingTop="8dp">
+
+ <Button
+ android:id="@+id/selectDeviceButton"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ style="?attr/materialButtonOutlinedStyle" />
+</FrameLayout> \ No newline at end of file
diff --git a/ui/preferences/src/main/res/layout/gpodnetauth_dialog.xml b/ui/preferences/src/main/res/layout/gpodnetauth_dialog.xml
new file mode 100644
index 000000000..b5814a4e5
--- /dev/null
+++ b/ui/preferences/src/main/res/layout/gpodnetauth_dialog.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ScrollView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:padding="16dp"
+ android:clipToPadding="false">
+
+ <ViewFlipper
+ android:id="@+id/viewflipper"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:measureAllChildren="false"
+ android:inAnimation="@anim/slide_right_in"
+ android:outAnimation="@anim/slide_left_out">
+
+ <include
+ layout="@layout/gpodnetauth_host" />
+
+ <include
+ layout="@layout/gpodnetauth_credentials" />
+
+ <include
+ layout="@layout/gpodnetauth_device" />
+
+ <include
+ layout="@layout/gpodnetauth_finish" />
+
+ </ViewFlipper>
+
+</ScrollView>
diff --git a/ui/preferences/src/main/res/layout/gpodnetauth_finish.xml b/ui/preferences/src/main/res/layout/gpodnetauth_finish.xml
new file mode 100644
index 000000000..8eced7304
--- /dev/null
+++ b/ui/preferences/src/main/res/layout/gpodnetauth_finish.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical">
+
+ <ImageView
+ android:id="@id/icon"
+ android:layout_width="64dp"
+ android:layout_height="64dp"
+ app:srcCompat="@drawable/gpodder_icon" />
+
+ <TextView
+ android:id="@+id/txtvDescription"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/gpodnetauth_finish_descr"
+ android:textColor="?android:attr/textColorPrimary" />
+
+ <Button
+ android:id="@+id/butSyncNow"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="8dp"
+ android:text="@string/gpodnetauth_finish_butsyncnow"/>
+
+</LinearLayout> \ No newline at end of file
diff --git a/ui/preferences/src/main/res/layout/gpodnetauth_host.xml b/ui/preferences/src/main/res/layout/gpodnetauth_host.xml
new file mode 100644
index 000000000..7f2d16f11
--- /dev/null
+++ b/ui/preferences/src/main/res/layout/gpodnetauth_host.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:clipToPadding="false">
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginBottom="16dp"
+ android:text="@string/synchronization_host_explanation" />
+
+ <com.google.android.material.textfield.TextInputLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginBottom="16dp"
+ style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox">
+
+ <com.google.android.material.textfield.TextInputEditText
+ android:id="@+id/serverUrlText"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:hint="@string/synchronization_host_label"
+ android:inputType="textNoSuggestions"
+ android:lines="1"
+ android:imeOptions="actionNext|flagNoFullscreen" />
+
+ </com.google.android.material.textfield.TextInputLayout>
+
+ <Button
+ android:id="@+id/chooseHostButton"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/proceed_to_login_butLabel" />
+
+</LinearLayout>
diff --git a/ui/preferences/src/main/res/layout/nextcloud_auth_dialog.xml b/ui/preferences/src/main/res/layout/nextcloud_auth_dialog.xml
new file mode 100644
index 000000000..0f25a271f
--- /dev/null
+++ b/ui/preferences/src/main/res/layout/nextcloud_auth_dialog.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ScrollView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:padding="16dp"
+ android:orientation="vertical"
+ android:clipToPadding="false">
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginBottom="16dp"
+ android:text="@string/synchronization_host_explanation" />
+
+ <com.google.android.material.textfield.TextInputLayout
+ android:id="@+id/serverUrlTextInput"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginBottom="16dp"
+ style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox">
+
+ <com.google.android.material.textfield.TextInputEditText
+ android:id="@+id/serverUrlText"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:hint="@string/synchronization_host_label"
+ android:inputType="textNoSuggestions"
+ android:lines="1"
+ android:imeOptions="actionNext|flagNoFullscreen" />
+
+ </com.google.android.material.textfield.TextInputLayout>
+
+ <LinearLayout
+ android:id="@+id/loginProgressContainer"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:visibility="gone"
+ android:orientation="horizontal"
+ android:layout_gravity="center_vertical">
+
+ <ProgressBar
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginEnd="8dp"
+ android:layout_marginRight="8dp" />
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/synchronization_nextcloud_authenticate_browser" />
+
+ </LinearLayout>
+
+ <TextView
+ android:id="@+id/errorText"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:visibility="gone"
+ android:textColor="?attr/icon_red"
+ android:layout_marginBottom="16dp" />
+
+ <Button
+ android:id="@+id/chooseHostButton"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/proceed_to_login_butLabel" />
+
+ </LinearLayout>
+
+</ScrollView>
diff --git a/ui/preferences/src/main/res/layout/proxy_settings.xml b/ui/preferences/src/main/res/layout/proxy_settings.xml
new file mode 100644
index 000000000..3467291eb
--- /dev/null
+++ b/ui/preferences/src/main/res/layout/proxy_settings.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:padding="16dp">
+
+ <TextView
+ android:id="@+id/txtvType"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/proxy_type_label"
+ android:textColor="?android:attr/textColorSecondary" />
+
+ <Spinner
+ android:id="@+id/spType"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content" />
+
+ <TextView
+ android:id="@+id/txtvHost"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="8dp"
+ android:text="@string/host_label"
+ android:textColor="?android:attr/textColorSecondary" />
+
+ <EditText
+ android:id="@+id/etHost"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:singleLine="true"
+ android:inputType="textUri"
+ android:hint="www.example.com" />
+
+ <TextView
+ android:id="@+id/txtvPort"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="8dp"
+ android:text="@string/port_label"
+ android:textColor="?android:attr/textColorSecondary" />
+
+ <EditText
+ android:id="@+id/etPort"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:hint="8080"
+ android:inputType="number" />
+
+ <TextView
+ android:id="@+id/txtvUsername"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="8dp"
+ android:singleLine="true"
+ android:text="@string/username_label"
+ android:textColor="?android:attr/textColorSecondary" />
+
+ <EditText
+ android:id="@+id/etUsername"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:hint="@string/optional_hint" />
+
+ <TextView
+ android:id="@+id/txtvPassword"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="8dp"
+ android:text="@string/password_label"
+ android:textColor="?android:attr/textColorSecondary" />
+
+ <EditText
+ android:id="@+id/etPassword"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:hint="@string/optional_hint"
+ android:inputType="textPassword" />
+
+ <TextView
+ android:id="@+id/txtvMessage"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="8dp"
+ android:visibility="invisible"
+ android:gravity="center" />
+
+</LinearLayout>
diff --git a/ui/preferences/src/main/res/layout/simple_icon_list_item.xml b/ui/preferences/src/main/res/layout/simple_icon_list_item.xml
new file mode 100644
index 000000000..7ed129204
--- /dev/null
+++ b/ui/preferences/src/main/res/layout/simple_icon_list_item.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:padding="16dp">
+
+ <ImageView
+ android:layout_width="40dp"
+ android:layout_height="40dp"
+ android:id="@+id/icon"/>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:layout_marginLeft="16dp"
+ android:layout_gravity="center_vertical"
+ android:layout_marginStart="16dp">
+
+ <TextView
+ tools:text="Title"
+ android:textColor="?android:attr/textColorPrimary"
+ android:textSize="16sp"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:id="@+id/title"/>
+
+ <TextView
+ tools:text="Subtitle"
+ android:textColor="?android:attr/textColorSecondary"
+ android:textSize="14sp"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:id="@+id/subtitle"/>
+
+ </LinearLayout>
+
+</LinearLayout>
diff --git a/ui/preferences/src/main/res/layout/theme_preference.xml b/ui/preferences/src/main/res/layout/theme_preference.xml
new file mode 100644
index 000000000..27335fbd3
--- /dev/null
+++ b/ui/preferences/src/main/res/layout/theme_preference.xml
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:background="?android:attr/colorBackground"
+ android:gravity="top"
+ android:padding="8dp">
+
+ <androidx.cardview.widget.CardView
+ android:id="@+id/themeSystemCard"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_margin="4dp"
+ android:clickable="true"
+ android:foreground="?android:attr/selectableItemBackground"
+ android:layout_weight="1"
+ app:cardElevation="0dp"
+ app:cardCornerRadius="16dp"
+ app:contentPadding="16dp">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:gravity="center">
+
+ <ImageView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:adjustViewBounds="true"
+ android:src="@drawable/theme_preview_system" />
+
+ <TextView
+ android:id="@+id/themeSystemRadio"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="4dp"
+ android:textColor="?android:attr/textColorPrimary"
+ android:text="@string/pref_theme_title_automatic"
+ android:clickable="false" />
+
+ </LinearLayout>
+
+ </androidx.cardview.widget.CardView>
+
+ <androidx.cardview.widget.CardView
+ android:id="@+id/themeLightCard"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_margin="4dp"
+ android:clickable="true"
+ android:foreground="?android:attr/selectableItemBackground"
+ android:layout_weight="1"
+ app:cardElevation="0dp"
+ app:cardCornerRadius="16dp"
+ app:contentPadding="16dp">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:gravity="center">
+
+ <ImageView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:adjustViewBounds="true"
+ android:src="@drawable/theme_preview_light" />
+
+ <TextView
+ android:id="@+id/themeLightRadio"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="4dp"
+ android:textColor="?android:attr/textColorPrimary"
+ android:text="@string/pref_theme_title_light"
+ android:clickable="false" />
+
+ </LinearLayout>
+
+ </androidx.cardview.widget.CardView>
+
+ <androidx.cardview.widget.CardView
+ android:id="@+id/themeDarkCard"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_margin="4dp"
+ android:clickable="true"
+ android:foreground="?android:attr/selectableItemBackground"
+ android:layout_weight="1"
+ app:cardElevation="0dp"
+ app:cardCornerRadius="16dp"
+ app:contentPadding="16dp">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:gravity="center">
+
+ <ImageView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:adjustViewBounds="true"
+ android:src="@drawable/theme_preview_dark" />
+
+ <TextView
+ android:id="@+id/themeDarkCardRadio"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="4dp"
+ android:textColor="?android:attr/textColorPrimary"
+ android:text="@string/pref_theme_title_dark"
+ android:clickable="false" />
+
+ </LinearLayout>
+
+ </androidx.cardview.widget.CardView>
+
+</LinearLayout>