diff options
author | Aditya Wasan <adityawasan55@gmail.com> | 2021-02-19 13:57:57 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-19 08:27:57 +0000 |
commit | d17ff0d9251bd2ad84778535dabe4884a4cf9d76 (patch) | |
tree | 57c2cfd031632e8687c038bd35ff2b39f61f6d77 /app/src/main/res/layout | |
parent | 92ece7dbb5607258bcf954963009bf1f9411ab07 (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/layout')
-rw-r--r-- | app/src/main/res/layout/decrypt_layout.xml | 209 | ||||
-rw-r--r-- | app/src/main/res/layout/item_field.xml | 27 |
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> |