diff options
author | Fabian Henneke <FabianHenneke@users.noreply.github.com> | 2020-05-23 11:57:52 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-23 15:27:52 +0530 |
commit | a6eb4b4e218ef2f5fb2e956a39541c8fea1abd7b (patch) | |
tree | e5d0406e582da191c3c49c569519cda58319fc6e /app/src | |
parent | 3711bb9aa7cde62cd21f7db120bbed08f7f32159 (diff) |
Make connection mode a <= 1 toggle group to prevent UI overflow (#778)
Diffstat (limited to 'app/src')
-rw-r--r-- | app/src/main/java/com/zeapo/pwdstore/git/GitServerConfigActivity.kt | 34 | ||||
-rw-r--r-- | app/src/main/res/layout/activity_git_clone.xml | 30 |
2 files changed, 31 insertions, 33 deletions
diff --git a/app/src/main/java/com/zeapo/pwdstore/git/GitServerConfigActivity.kt b/app/src/main/java/com/zeapo/pwdstore/git/GitServerConfigActivity.kt index f8c67e51..f1d195ac 100644 --- a/app/src/main/java/com/zeapo/pwdstore/git/GitServerConfigActivity.kt +++ b/app/src/main/java/com/zeapo/pwdstore/git/GitServerConfigActivity.kt @@ -6,6 +6,7 @@ package com.zeapo.pwdstore.git import android.os.Bundle import android.os.Handler +import android.view.View import androidx.core.content.edit import androidx.core.os.postDelayed import androidx.core.widget.doOnTextChanged @@ -50,18 +51,20 @@ class GitServerConfigActivity : BaseGitActivity() { } } - binding.connectionModeGroup.check(when (connectionMode) { - ConnectionMode.SshKey -> R.id.connection_mode_ssh_key - ConnectionMode.Password -> R.id.connection_mode_password - ConnectionMode.OpenKeychain -> R.id.connection_mode_open_keychain - ConnectionMode.None -> R.id.connection_mode_none - }) - binding.connectionModeGroup.setOnCheckedChangeListener { group, _ -> - when (group.checkedRadioButtonId) { - R.id.connection_mode_ssh_key -> connectionMode = ConnectionMode.SshKey - R.id.connection_mode_open_keychain -> connectionMode = ConnectionMode.OpenKeychain - R.id.connection_mode_password -> connectionMode = ConnectionMode.Password - R.id.connection_mode_none -> connectionMode = ConnectionMode.None + binding.connectionModeGroup.apply { + when (connectionMode) { + ConnectionMode.SshKey -> check(R.id.connection_mode_ssh_key) + ConnectionMode.Password -> check(R.id.connection_mode_password) + ConnectionMode.OpenKeychain -> check(R.id.connection_mode_open_keychain) + ConnectionMode.None -> uncheck(checkedButtonId) + } + addOnButtonCheckedListener { group, _, _ -> + when (checkedButtonId) { + R.id.connection_mode_ssh_key -> connectionMode = ConnectionMode.SshKey + R.id.connection_mode_open_keychain -> connectionMode = ConnectionMode.OpenKeychain + R.id.connection_mode_password -> connectionMode = ConnectionMode.Password + View.NO_ID -> connectionMode = ConnectionMode.None + } } } updateConnectionModeToggleGroup() @@ -120,12 +123,14 @@ class GitServerConfigActivity : BaseGitActivity() { private fun updateConnectionModeToggleGroup() { if (protocol == Protocol.Ssh) { - if (binding.connectionModeNone.isChecked) + // Reset connection mode to SSH key if the current value (none) is not valid for SSH + if (binding.connectionModeGroup.checkedButtonIds.isEmpty()) binding.connectionModeGroup.check(R.id.connection_mode_ssh_key) binding.connectionModeSshKey.isEnabled = true binding.connectionModeOpenKeychain.isEnabled = true - binding.connectionModeNone.isEnabled = false + binding.connectionModeGroup.isSelectionRequired = true } else { + binding.connectionModeGroup.isSelectionRequired = false // Reset connection mode to password if the current value is not valid for HTTPS // Important note: This has to happen before disabling the other toggle buttons or they // won't uncheck. @@ -133,7 +138,6 @@ class GitServerConfigActivity : BaseGitActivity() { binding.connectionModeGroup.check(R.id.connection_mode_password) binding.connectionModeSshKey.isEnabled = false binding.connectionModeOpenKeychain.isEnabled = false - binding.connectionModeNone.isEnabled = true } } diff --git a/app/src/main/res/layout/activity_git_clone.xml b/app/src/main/res/layout/activity_git_clone.xml index 8fab27d5..cab9dc7b 100644 --- a/app/src/main/res/layout/activity_git_clone.xml +++ b/app/src/main/res/layout/activity_git_clone.xml @@ -145,43 +145,37 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/label_server_path" /> - <RadioGroup + <com.google.android.material.button.MaterialButtonToggleGroup android:id="@+id/connection_mode_group" + style="@style/TextAppearance.MaterialComponents.Headline1" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:orientation="horizontal" + android:layout_margin="8dp" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/label_connection_mode"> + app:layout_constraintTop_toBottomOf="@id/label_connection_mode" + app:singleSelection="true"> - <RadioButton + <com.google.android.material.button.MaterialButton android:id="@+id/connection_mode_ssh_key" + style="?attr/materialButtonOutlinedStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:padding="4dp" android:text="@string/connection_mode_ssh_key" /> - <RadioButton + <com.google.android.material.button.MaterialButton android:id="@+id/connection_mode_password" + style="?attr/materialButtonOutlinedStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:padding="4dp" android:text="@string/connection_mode_basic_authentication" /> - <RadioButton + <com.google.android.material.button.MaterialButton android:id="@+id/connection_mode_open_keychain" + style="?attr/materialButtonOutlinedStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:padding="4dp" android:text="@string/connection_mode_openkeychain" /> - - <RadioButton - android:id="@+id/connection_mode_none" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:padding="4dp" - android:text="@string/connection_mode_none" /> - - </RadioGroup> + </com.google.android.material.button.MaterialButtonToggleGroup> <com.google.android.material.button.MaterialButton android:id="@+id/save_button" |