aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/res
diff options
context:
space:
mode:
authorAditya Wasan <adityawasan55@gmail.com>2021-02-19 13:57:57 +0530
committerGitHub <noreply@github.com>2021-02-19 08:27:57 +0000
commitd17ff0d9251bd2ad84778535dabe4884a4cf9d76 (patch)
tree57c2cfd031632e8687c038bd35ff2b39f61f6d77 /app/src/main/res
parent92ece7dbb5607258bcf954963009bf1f9411ab07 (diff)
Parse extra content into key value pairs (#1321)
* ui: add skeleton recyclerview to parse extra content Signed-off-by: Aditya Wasan <adityawasan55@gmail.com> * ui: add recyclerview and update PasswordEntry to create map of key-value pairs Signed-off-by: Aditya Wasan <adityawasan55@gmail.com> * password-entry: When key-value pair is not correctly formed, display it as Extra Content Signed-off-by: Aditya Wasan <adityawasan55@gmail.com> * Fix formatting Signed-off-by: Aditya Wasan <adityawasan55@gmail.com> * bug: update otp code on main thread Signed-off-by: Aditya Wasan <adityawasan55@gmail.com> * Add complete string if key-value pair cannot be formed Signed-off-by: Aditya Wasan <adityawasan55@gmail.com> * test: add a few tests for key-value parsing logic Signed-off-by: Aditya Wasan <adityawasan55@gmail.com> * prefs: remove SHOW_EXTRA_CONTENT from shared preferences Signed-off-by: Aditya Wasan <adityawasan55@gmail.com> * Update CHANGELOG.md * Cleanup and refactor Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> * PasswordEntryTest: silence nullability warning Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> * PasswordEntry: simplify constructor Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> * PasswordEntry: annotate test-enablement visibility Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> * Reintroduce the catch-all field Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> * update parsing logic Signed-off-by: Aditya Wasan <adityawasan55@gmail.com> * add one more test case Signed-off-by: Aditya Wasan <adityawasan55@gmail.com> * Add missing newlines Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> * Remove unnecessary scrollview Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> * rv: do not return if hasExtraContent is false Signed-off-by: Aditya Wasan <adityawasan55@gmail.com> * Don't anchor RV to bottom Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>
Diffstat (limited to 'app/src/main/res')
-rw-r--r--app/src/main/res/layout/decrypt_layout.xml209
-rw-r--r--app/src/main/res/layout/item_field.xml27
2 files changed, 90 insertions, 146 deletions
diff --git a/app/src/main/res/layout/decrypt_layout.xml b/app/src/main/res/layout/decrypt_layout.xml
index 8d16ff77..e314b345 100644
--- a/app/src/main/res/layout/decrypt_layout.xml
+++ b/app/src/main/res/layout/decrypt_layout.xml
@@ -3,156 +3,73 @@
~ SPDX-License-Identifier: GPL-3.0-only
-->
-<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
android:orientation="vertical"
+ android:padding="16dp"
tools:context=".ui.crypto.DecryptActivity">
- <androidx.constraintlayout.widget.ConstraintLayout
- android:layout_width="fill_parent"
+ <androidx.appcompat.widget.AppCompatTextView
+ android:id="@+id/password_category"
+ android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:orientation="vertical"
- android:padding="16dp">
-
- <androidx.appcompat.widget.AppCompatTextView
- android:id="@+id/password_category"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center_vertical"
- android:layout_marginStart="16dp"
- android:textColor="?android:attr/textColor"
- android:textIsSelectable="false"
- android:textSize="18sp"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- tools:text="CATEGORY HERE" />
-
- <androidx.appcompat.widget.AppCompatTextView
- android:id="@+id/password_file"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginStart="@dimen/activity_horizontal_margin"
- android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium"
- android:textColor="?attr/colorSecondary"
- android:textSize="24sp"
- android:textStyle="bold"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@id/password_category"
- tools:text="PASSWORD FILE NAME HERE" />
-
- <androidx.appcompat.widget.AppCompatTextView
- android:id="@+id/password_last_changed"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center_vertical"
- android:layout_marginStart="16dp"
- android:textColor="?android:attr/textColor"
- android:textIsSelectable="false"
- android:textSize="18sp"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@id/password_file"
- tools:text="LAST CHANGED HERE" />
-
-
- <androidx.appcompat.widget.AppCompatImageView
- android:id="@+id/divider"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="16dp"
- android:layout_marginBottom="16dp"
- android:src="@drawable/divider"
- app:layout_constraintTop_toBottomOf="@id/password_last_changed"
- tools:ignore="ContentDescription" />
-
- <com.google.android.material.textfield.TextInputLayout
- android:id="@+id/password_text_container"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="16dp"
- android:hint="@string/password"
- android:visibility="gone"
- app:endIconMode="password_toggle"
- app:layout_constraintTop_toBottomOf="@id/divider"
- tools:visibility="visible">
-
- <com.google.android.material.textfield.TextInputEditText
- android:id="@+id/password_text"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:editable="false"
- android:fontFamily="@font/sourcecodepro"
- android:textIsSelectable="true"
- tools:text="p@55w0rd!" />
-
- </com.google.android.material.textfield.TextInputLayout>
-
- <com.google.android.material.textfield.TextInputLayout
- android:id="@+id/otp_text_container"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="16dp"
- android:hint="@string/otp"
- android:visibility="gone"
- app:endIconDrawable="@drawable/ic_content_copy"
- app:endIconMode="custom"
- app:layout_constraintTop_toBottomOf="@id/password_text_container"
- tools:visibility="visible">
-
- <com.google.android.material.textfield.TextInputEditText
- android:id="@+id/otp_text"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:editable="false"
- android:fontFamily="@font/sourcecodepro"
- android:textIsSelectable="true"
- tools:text="123456" />
-
- </com.google.android.material.textfield.TextInputLayout>
-
- <com.google.android.material.textfield.TextInputLayout
- android:id="@+id/username_text_container"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="16dp"
- android:hint="@string/username"
- android:visibility="gone"
- app:endIconDrawable="@drawable/ic_content_copy"
- app:endIconMode="custom"
- app:layout_constraintTop_toBottomOf="@id/otp_text_container"
- tools:visibility="visible">
-
- <com.google.android.material.textfield.TextInputEditText
- android:id="@+id/username_text"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:editable="false"
- android:textIsSelectable="true"
- tools:text="totally_real_user@example.com" />
- </com.google.android.material.textfield.TextInputLayout>
-
- <com.google.android.material.textfield.TextInputLayout
- android:id="@+id/extra_content_container"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="16dp"
- android:hint="@string/extra_content"
- android:visibility="gone"
- app:endIconMode="password_toggle"
- app:layout_constraintTop_toBottomOf="@id/username_text_container"
- tools:visibility="visible">
-
- <com.google.android.material.textfield.TextInputEditText
- android:id="@+id/extra_content"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:editable="false"
- android:textIsSelectable="true"
- tools:text="lots of extra content that will surely fill this \n up well" />
- </com.google.android.material.textfield.TextInputLayout>
-
- </androidx.constraintlayout.widget.ConstraintLayout>
+ android:layout_gravity="center_vertical"
+ android:layout_marginStart="16dp"
+ android:textColor="?android:attr/textColor"
+ android:textIsSelectable="false"
+ android:textSize="18sp"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ tools:text="CATEGORY HERE" />
+
+ <androidx.appcompat.widget.AppCompatTextView
+ android:id="@+id/password_file"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginStart="@dimen/activity_horizontal_margin"
+ android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium"
+ android:textColor="?attr/colorSecondary"
+ android:textSize="24sp"
+ android:textStyle="bold"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@id/password_category"
+ tools:text="PASSWORD FILE NAME HERE" />
+
+ <androidx.appcompat.widget.AppCompatTextView
+ android:id="@+id/password_last_changed"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:layout_marginStart="16dp"
+ android:textColor="?android:attr/textColor"
+ android:textIsSelectable="false"
+ android:textSize="18sp"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@id/password_file"
+ tools:text="LAST CHANGED HERE" />
+
+
+ <androidx.appcompat.widget.AppCompatImageView
+ android:id="@+id/divider"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="16dp"
+ android:layout_marginBottom="16dp"
+ android:src="@drawable/divider"
+ app:layout_constraintTop_toBottomOf="@id/password_last_changed"
+ tools:ignore="ContentDescription" />
+
+ <androidx.recyclerview.widget.RecyclerView
+ android:id="@+id/recycler_view"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
+ app:layout_constraintTop_toBottomOf="@id/divider"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ tools:listitem="@layout/item_field" />
-</ScrollView>
+</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/app/src/main/res/layout/item_field.xml b/app/src/main/res/layout/item_field.xml
new file mode 100644
index 00000000..8c98bd05
--- /dev/null
+++ b/app/src/main/res/layout/item_field.xml
@@ -0,0 +1,27 @@
+<?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">
+
+ <com.google.android.material.textfield.TextInputLayout
+ android:id="@+id/item_text_container"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="16dp"
+ tools:visibility="visible"
+ tools:hint="@string/password">
+
+ <com.google.android.material.textfield.TextInputEditText
+ android:id="@+id/item_text"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:editable="false"
+ android:fontFamily="@font/sourcecodepro"
+ android:textIsSelectable="true"
+ tools:text="p@55w0rd!" />
+
+ </com.google.android.material.textfield.TextInputLayout>
+
+</LinearLayout>