Implemented BankAccountSettingsDialog

This commit is contained in:
dankito 2020-09-28 04:09:49 +02:00
parent 85bf455c0c
commit 2c9c374ee1
5 changed files with 139 additions and 1 deletions

View File

@ -0,0 +1,59 @@
package net.dankito.banking.ui.android.dialogs.settings
import android.os.Bundle
import android.view.*
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.dialog_bank_account_settings.*
import kotlinx.android.synthetic.main.dialog_bank_account_settings.view.*
import kotlinx.android.synthetic.main.dialog_bank_settings.view.toolbar
import net.dankito.banking.ui.android.R
import net.dankito.banking.ui.model.TypedBankAccount
open class BankAccountSettingsDialog : SettingsDialogBase() {
companion object {
const val DialogTag = "BankAccountSettingsDialog"
}
protected lateinit var account: TypedBankAccount
fun show(account: TypedBankAccount, activity: AppCompatActivity) {
this.account = account
show(activity, DialogTag)
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val rootView = inflater.inflate(R.layout.dialog_bank_account_settings, container, false)
setupUI(rootView)
return rootView
}
protected open fun setupUI(rootView: View) {
rootView.apply {
toolbar.apply {
setupToolbar(this, account.displayName)
}
edtxtBankAccountName.text = account.displayName
}
}
override val hasUnsavedChanges: Boolean
get() = didChange(edtxtBankAccountName, account.displayName)
override fun saveChanges() {
account.userSetDisplayName = edtxtBankAccountName.text
presenter.accountUpdated(account)
}
}

View File

@ -45,7 +45,7 @@ open class BankSettingsDialog : SettingsDialogBase() {
protected open fun setupUI(rootView: View) {
rootView.apply {
toolbar.apply {
setupToolbar(this, bank.bankName)
setupToolbar(this, bank.displayName)
}
edtxtBankName.text = bank.displayName
@ -54,6 +54,7 @@ open class BankSettingsDialog : SettingsDialogBase() {
val items = bank.accountsSorted.map { DraggableBankAccountAdapterItem(it) }
val adapter = FastAdapterRecyclerView(rootView.rcyBankAccounts, items, true)
adapter.onClickListener = { navigationToBankAccountSettingsDialog(it.account) }
adapter.itemDropped = { oldPosition, oldItem, newPosition, newItem -> reorderedBankAccounts(oldPosition, oldItem.account, newPosition, newItem.account) }
btnDeleteAccount.setOnClickListener { askUserToDeleteAccount() }
@ -61,6 +62,10 @@ open class BankSettingsDialog : SettingsDialogBase() {
}
protected open fun navigationToBankAccountSettingsDialog(account: TypedBankAccount) {
BankAccountSettingsDialog().show(account, requireActivity() as AppCompatActivity)
}
protected open fun reorderedBankAccounts(oldPosition: Int, oldItem: TypedBankAccount, newPosition: Int, newItem: TypedBankAccount) {
oldItem.displayIndex = oldPosition
newItem.displayIndex = newPosition

View File

@ -0,0 +1,70 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay"
app:navigationIcon="@drawable/ic_baseline_close_24"
/>
</com.google.android.material.appbar.AppBarLayout>
<!-- dummy layout to fetch focus on start so that dialog doesn't start with keyboard displayed -->
<LinearLayout
android:orientation="vertical"
android:layout_width="0px"
android:layout_height="0px"
android:focusable="true"
android:focusableInTouchMode="true"
/>
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/form_padding"
>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<net.dankito.banking.ui.android.views.FormEditText
android:id="@+id/edtxtBankAccountName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/dialog_bank_account_settings_account_name"
android:inputType="text"
/>
</LinearLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>

View File

@ -106,6 +106,8 @@
<string name="dialog_bank_settings_bank_name">Name</string>
<string name="dialog_bank_settings_delete_account">Konto löschen</string>
<string name="dialog_bank_account_settings_account_name">Name</string>
<string name="alert_ask_discard_changes_title">Nicht gespeicherte Änderungen</string>
<string name="alert_ask_discard_changes_message">Es wurden nicht alle Änderungen gespeichert. Sind Sie sich sicher, dass Sie sie verwerfen möchten?\n\n(TODO: Oder einfach: Änderungen verwerfen?)</string>

View File

@ -106,6 +106,8 @@
<string name="dialog_bank_settings_bank_name">Name</string>
<string name="dialog_bank_settings_delete_account">Delete account</string>
<string name="dialog_bank_account_settings_account_name">Name</string>
<string name="alert_ask_discard_changes_title">Unsaved changed</string>
<string name="alert_ask_discard_changes_message">Changed data hasn\'t been saved. Are you sure you want to discard them?\n\n(TODO: Oder einfach: Discard changes?)</string>