Skip to content
This repository has been archived by the owner on Oct 15, 2024. It is now read-only.

Commit

Permalink
Make connection mode a <= 1 toggle group to prevent UI overflow (#778)
Browse files Browse the repository at this point in the history
  • Loading branch information
FabianHenneke authored May 23, 2020
1 parent 3711bb9 commit a6eb4b4
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 33 deletions.
34 changes: 19 additions & 15 deletions app/src/main/java/com/zeapo/pwdstore/git/GitServerConfigActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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()
Expand Down Expand Up @@ -120,20 +123,21 @@ 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.
if (connectionMode !in listOf(ConnectionMode.None, ConnectionMode.Password))
binding.connectionModeGroup.check(R.id.connection_mode_password)
binding.connectionModeSshKey.isEnabled = false
binding.connectionModeOpenKeychain.isEnabled = false
binding.connectionModeNone.isEnabled = true
}
}

Expand Down
30 changes: 12 additions & 18 deletions app/src/main/res/layout/activity_git_clone.xml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down

0 comments on commit a6eb4b4

Please sign in to comment.