diff options
| author | Harsh Shandilya <msfjarvis@gmail.com> | 2020-04-17 18:36:07 +0530 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-04-17 18:36:07 +0530 |
| commit | b94b52a42ddc2325b539d0956fd0adcf35308b52 (patch) | |
| tree | 21f35526cfc444db82e1b4b08d083e49a3c1843b /app/src/main/res/layout/activity_git_clone.xml | |
| parent | 4ffd7ed9bffa5139277ffb91de5a69f2b714222c (diff) | |
| download | HardenedPass-b94b52a42ddc2325b539d0956fd0adcf35308b52.tar.gz HardenedPass-b94b52a42ddc2325b539d0956fd0adcf35308b52.zip | |
Refactor Git related activities (#685)
* Refactor git logic into separate parts
* Extract hardcoded strings
* Add KDoc to updateHostname, remove unused field
* Cleanups
* Fix dialog message
* Wire in repository clone flow
* spotless
* Remove unused method
* Cleanup GitActivity
- Rename to GitOperationActivity.
- Ensure identityBuilder is always closed regardless of what fragment uses it.
- Remove hardcoded "Operation" strings and replace with REQUEST_ARG_OP.
- Apply a transparent theme to GitOperationActivity make the UI less jarring.
* Tweak some stupidly worded dialog messages
As pointed out in #629, these strings are shoddily worded and do not express any clear intent to the
user, leaving them confused and angry.
* GitOperationActivity: wrap Context to ensure right theme is used
* spotless
* undo build.gradle change
* Use correct parent theme, remove now useless wrapping
* GitServerConfigActivity: fix repository clone flow
* temp: disable leakcanary
framework leaks on Samsung are pissing me off
* Make system bars transparent in git activity
* Tweak HTTPS password layout
* Unhardcode wrong passphrase string
* Store SSH passphrase in EncryptedSharedPreferences
Also revamp the dialog to look a bit better
* Implement support for remembering HTTPS password
Fixes #521
* Try to patch HTTPS remote creation logic
* Update security-crypto
* Clear saved passphrase/password on auth failure
* Revert "Update security-crypto"
Broken on R DP2.1
This reverts commit 4b20371dd42c512a3dd3b759859abb6c1ffd2961.
* Revert "temp: disable leakcanary"
This reverts commit 2db7d41bd67b79c6dc8c5b359a7b27100379f45f.
* Update CHANGELOG
* Remove spacer
* Remove useless override
* Wrap git server activity in a ScrollView
* GitOperation: always finish calling activity when dialogs are dismissed
* Wipe saved password/passphrase when hostname changes
* Don't commit prefs updates
* Don't call listFiles excessively
* Finish activity after saving configuration
* Make ConnectionMode and Protocol enum classes
* Change SSH key passphrase key, don't wipe on host change
* Reimplement BaseGitActivity.updateUrl (was updateHostname)
* Use SharedPreferences.edit KTX extension
* Disable inapplicable connection modes depending on scheme
* BaseGitActivity: annotate onDestroy with CallSuper
We'll leak the identityBuilder connection otherwise
* Move input hack for AlertDialog into an extension function
We re-use this in many places
* Fix protocol/mode toggle issue and consistenly name options
* Fix a crash when opening GitServerConfigActivity without a repo
* Fix OpenKeychain callbacks by moving onActivityResult to BaseGitActivity
* Run spotlessApply
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
Co-authored-by: Fabian Henneke <fabian@henneke.me>
Diffstat (limited to 'app/src/main/res/layout/activity_git_clone.xml')
| -rw-r--r-- | app/src/main/res/layout/activity_git_clone.xml | 362 |
1 files changed, 200 insertions, 162 deletions
diff --git a/app/src/main/res/layout/activity_git_clone.xml b/app/src/main/res/layout/activity_git_clone.xml index 05d9a557..de9a240e 100644 --- a/app/src/main/res/layout/activity_git_clone.xml +++ b/app/src/main/res/layout/activity_git_clone.xml @@ -1,178 +1,216 @@ -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" +<ScrollView 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" - xmlns:app="http://schemas.android.com/apk/res-auto" android:padding="@dimen/activity_horizontal_margin" - tools:context="com.zeapo.pwdstore.git.GitActivity" + tools:context="com.zeapo.pwdstore.git.GitOperationActivity" android:background="?android:attr/windowBackground"> - <androidx.appcompat.widget.AppCompatTextView - style="@style/TextAppearance.MaterialComponents.Headline5" - android:id="@+id/server_label" - android:textStyle="bold" - android:textSize="24sp" - android:text="@string/server_name" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_margin="8dp" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> - - <androidx.appcompat.widget.AppCompatTextView - android:id="@+id/label_server_protocol" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="@string/server_protocol" - android:layout_margin="8dp" - app:layout_constraintTop_toBottomOf="@id/server_label" - app:layout_constraintStart_toStartOf="parent" /> - - <Spinner - android:id="@+id/clone_protocol" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_margin="8dp" - app:layout_constraintTop_toBottomOf="@id/server_label" - app:layout_constraintStart_toEndOf="@id/label_server_protocol" /> - - <com.google.android.material.textfield.TextInputLayout - android:id="@+id/server_user_layout" - android:hint="@string/server_user" + <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_margin="8dp" - app:layout_constraintTop_toBottomOf="@id/label_server_protocol"> - <com.google.android.material.textfield.TextInputEditText - android:id="@+id/server_user" + android:layout_height="wrap_content"> + + <androidx.appcompat.widget.AppCompatTextView + style="@style/TextAppearance.MaterialComponents.Headline5" + android:id="@+id/server_label" + android:textStyle="bold" + android:textSize="24sp" + android:text="@string/server_name" android:layout_width="match_parent" android:layout_height="wrap_content" - android:inputType="textWebEmailAddress" /> - </com.google.android.material.textfield.TextInputLayout> - - <com.google.android.material.textfield.TextInputLayout - android:id="@+id/label_server_url" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_margin="8dp" - android:hint="@string/server_url" - app:layout_constraintTop_toBottomOf="@id/server_user_layout" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toStartOf="@id/label_server_port"> - - <com.google.android.material.textfield.TextInputEditText - android:layout_width="match_parent" + android:layout_margin="8dp" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <androidx.appcompat.widget.AppCompatTextView + style="@style/TextAppearance.MaterialComponents.Headline6" + android:id="@+id/label_server_protocol" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/server_protocol" + android:layout_margin="8dp" + app:layout_constraintTop_toBottomOf="@id/server_label" + app:layout_constraintStart_toStartOf="parent" /> + + <Spinner + android:id="@+id/clone_protocol" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_margin="8dp" + android:visibility="gone" + app:layout_constraintTop_toBottomOf="@id/server_label" + app:layout_constraintStart_toEndOf="@id/label_server_protocol" /> + + <com.google.android.material.button.MaterialButtonToggleGroup + style="@style/TextAppearance.MaterialComponents.Headline1" + android:id="@+id/clone_protocol_group" + android:layout_width="wrap_content" android:layout_height="wrap_content" - android:id="@+id/server_url" - android:inputType="textWebEmailAddress" /> - - </com.google.android.material.textfield.TextInputLayout> - - <com.google.android.material.textfield.TextInputLayout - android:id="@+id/label_server_port" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_margin="8dp" - android:hint="@string/server_port_hint" - app:layout_constraintStart_toEndOf="@id/label_server_url" - app:layout_constraintTop_toBottomOf="@id/server_user_layout" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintDimensionRatio="1:0.8"> - - <com.google.android.material.textfield.TextInputEditText - android:id="@+id/server_port" + android:layout_margin="8dp" + app:layout_constraintTop_toBottomOf="@id/label_server_protocol" + app:layout_constraintStart_toStartOf="parent" + app:selectionRequired="true" + app:singleSelection="true"> + + <com.google.android.material.button.MaterialButton + style="?attr/materialButtonOutlinedStyle" + android:id="@+id/clone_protocol_ssh" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/clone_protocol_ssh" + android:textColor="?android:attr/textColorPrimary" + app:rippleColor="@color/ripple_color" + app:strokeColor="?attr/colorSecondary" + app:backgroundTint="@color/toggle_button_selector" /> + + <com.google.android.material.button.MaterialButton + style="?attr/materialButtonOutlinedStyle" + android:id="@+id/clone_protocol_https" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/clone_protocol_https" + android:textColor="?android:attr/textColorPrimary" + app:rippleColor="@color/ripple_color" + app:strokeColor="?attr/colorSecondary" + app:backgroundTint="@color/toggle_button_selector" /> + </com.google.android.material.button.MaterialButtonToggleGroup> + + <com.google.android.material.textfield.TextInputLayout + android:id="@+id/server_user_layout" + android:hint="@string/server_user" android:layout_width="match_parent" android:layout_height="wrap_content" - android:inputType="number" /> - - </com.google.android.material.textfield.TextInputLayout> - - <com.google.android.material.textfield.TextInputLayout - android:id="@+id/label_server_path" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_margin="8dp" - android:hint="@string/server_path" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/label_server_url"> - - <com.google.android.material.textfield.TextInputEditText - android:id="@+id/server_path" + android:layout_margin="8dp" + app:layout_constraintTop_toBottomOf="@id/clone_protocol_group"> + <com.google.android.material.textfield.TextInputEditText + android:id="@+id/server_user" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="textWebEmailAddress" /> + </com.google.android.material.textfield.TextInputLayout> + + <com.google.android.material.textfield.TextInputLayout + android:id="@+id/label_server_url" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_margin="8dp" + android:hint="@string/server_url" + app:layout_constraintTop_toBottomOf="@id/server_user_layout" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toStartOf="@id/label_server_port"> + + <com.google.android.material.textfield.TextInputEditText + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:id="@+id/server_url" + android:inputType="textWebEmailAddress" /> + + </com.google.android.material.textfield.TextInputLayout> + + <com.google.android.material.textfield.TextInputLayout + android:id="@+id/label_server_port" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_margin="8dp" + android:hint="@string/server_port_hint" + app:layout_constraintStart_toEndOf="@id/label_server_url" + app:layout_constraintTop_toBottomOf="@id/server_user_layout" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintDimensionRatio="1:0.8"> + + <com.google.android.material.textfield.TextInputEditText + android:id="@+id/server_port" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="number" /> + + </com.google.android.material.textfield.TextInputLayout> + + <com.google.android.material.textfield.TextInputLayout + android:id="@+id/label_server_path" android:layout_width="match_parent" android:layout_height="wrap_content" - android:inputType="textWebEmailAddress"/> - - </com.google.android.material.textfield.TextInputLayout> - - <com.google.android.material.textfield.TextInputLayout - android:id="@+id/label_clone_uri" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:hint="@string/repository_uri" - android:editable="false" - android:layout_margin="8dp" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/label_server_path"> - - <com.google.android.material.textfield.TextInputEditText - android:id="@+id/clone_uri" + android:layout_margin="8dp" + android:hint="@string/server_path" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/label_server_url"> + + <com.google.android.material.textfield.TextInputEditText + android:id="@+id/server_path" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="textWebEmailAddress"/> + + </com.google.android.material.textfield.TextInputLayout> + + <androidx.appcompat.widget.AppCompatTextView + style="@style/TextAppearance.MaterialComponents.Headline6" + android:id="@+id/label_connection_mode" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/connection_mode" + android:layout_margin="8dp" + android:layout_marginTop="16dp" + android:layout_marginBottom="16dp" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/label_server_path" /> + + <com.google.android.material.button.MaterialButtonToggleGroup + android:id="@+id/connection_mode_group" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_margin="8dp" + app:layout_constraintTop_toBottomOf="@id/label_connection_mode" + app:layout_constraintStart_toStartOf="parent" + app:selectionRequired="true" + app:singleSelection="true" > + + <com.google.android.material.button.MaterialButton + style="?attr/materialButtonOutlinedStyle" + android:id="@+id/connection_mode_ssh_key" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/connection_mode_ssh_key" + android:textColor="?android:attr/textColorPrimary" + app:rippleColor="@color/ripple_color" + app:strokeColor="?attr/colorSecondary" + app:backgroundTint="@color/toggle_button_selector" /> + + <com.google.android.material.button.MaterialButton + style="?attr/materialButtonOutlinedStyle" + android:id="@+id/connection_mode_password" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/connection_mode_basic_authentication" + android:textColor="?android:attr/textColorPrimary" + app:rippleColor="@color/ripple_color" + app:strokeColor="?attr/colorSecondary" + app:backgroundTint="@color/toggle_button_selector" /> + + <com.google.android.material.button.MaterialButton + style="?attr/materialButtonOutlinedStyle" + android:id="@+id/connection_mode_open_keychain" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/connection_mode_openkeychain" + android:textColor="?android:attr/textColorPrimary" + app:rippleColor="@color/ripple_color" + app:strokeColor="?attr/colorSecondary" + app:backgroundTint="@color/toggle_button_selector" /> + + </com.google.android.material.button.MaterialButtonToggleGroup> + + <com.google.android.material.button.MaterialButton + style="@style/Widget.MaterialComponents.Button" + android:id="@+id/save_button" + android:text="@string/crypto_save" android:layout_width="match_parent" android:layout_height="wrap_content" - android:inputType="textWebEmailAddress"/> - - </com.google.android.material.textfield.TextInputLayout> - - <androidx.appcompat.widget.AppCompatTextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:background="@drawable/red_rectangle" - android:textColor="@android:color/white" - android:visibility="gone" - android:id="@+id/warn_url" - android:layout_margin="8dp" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/label_clone_uri"/> - - <androidx.appcompat.widget.AppCompatTextView - android:id="@+id/label_connection_mode" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="@string/connection_mode" - android:layout_margin="16dp" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/warn_url" /> - - <Spinner - android:id="@+id/connection_mode" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_margin="16dp" - app:layout_constraintTop_toBottomOf="@id/warn_url" - app:layout_constraintStart_toEndOf="@id/label_connection_mode" /> - - <com.google.android.material.button.MaterialButton - style="@style/Widget.MaterialComponents.Button" - android:id="@+id/clone_button" - android:text="@string/clone_button" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:onClick="cloneRepository" - android:textColor="?android:attr/windowBackground" - android:layout_marginTop="8dp" - app:backgroundTint="?attr/colorSecondary" - app:layout_constraintTop_toBottomOf="@id/label_connection_mode" - app:layout_constraintStart_toStartOf="parent" /> - - <com.google.android.material.button.MaterialButton - style="@style/Widget.MaterialComponents.Button" - android:id="@+id/save_button" - android:text="@string/crypto_save" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:onClick="saveConfiguration" - android:textColor="?android:attr/windowBackground" - android:layout_marginTop="8dp" - app:backgroundTint="?attr/colorSecondary" - app:layout_constraintTop_toBottomOf="@id/label_connection_mode" - app:layout_constraintStart_toStartOf="parent" /> -</androidx.constraintlayout.widget.ConstraintLayout> + android:textColor="?android:attr/windowBackground" + android:layout_marginTop="8dp" + app:backgroundTint="?attr/colorSecondary" + app:layout_constraintTop_toBottomOf="@id/connection_mode_group" + app:layout_constraintStart_toStartOf="parent" /> + </androidx.constraintlayout.widget.ConstraintLayout> +</ScrollView> |
