mirror of
https://github.com/Kunzisoft/KeePassDX.git
synced 2025-12-04 15:49:33 +01:00
Add entry title in Magikeyboard
This commit is contained in:
@@ -34,11 +34,11 @@ import android.view.inputmethod.EditorInfo
|
|||||||
import android.view.inputmethod.InputMethodManager
|
import android.view.inputmethod.InputMethodManager
|
||||||
import android.widget.FrameLayout
|
import android.widget.FrameLayout
|
||||||
import android.widget.PopupWindow
|
import android.widget.PopupWindow
|
||||||
|
import android.widget.TextView
|
||||||
import com.kunzisoft.keepass.R
|
import com.kunzisoft.keepass.R
|
||||||
import com.kunzisoft.keepass.magikeyboard.adapter.FieldsAdapter
|
import com.kunzisoft.keepass.magikeyboard.adapter.FieldsAdapter
|
||||||
import com.kunzisoft.keepass.magikeyboard.receiver.LockBroadcastReceiver
|
import com.kunzisoft.keepass.magikeyboard.receiver.LockBroadcastReceiver
|
||||||
import com.kunzisoft.keepass.magikeyboard.receiver.LockBroadcastReceiver.Companion.LOCK_ACTION
|
import com.kunzisoft.keepass.magikeyboard.receiver.LockBroadcastReceiver.Companion.LOCK_ACTION
|
||||||
import com.kunzisoft.keepass.magikeyboard.view.MagikeyboardView
|
|
||||||
import com.kunzisoft.keepass.model.EntryInfo
|
import com.kunzisoft.keepass.model.EntryInfo
|
||||||
import com.kunzisoft.keepass.model.Field
|
import com.kunzisoft.keepass.model.Field
|
||||||
import com.kunzisoft.keepass.settings.PreferencesUtil
|
import com.kunzisoft.keepass.settings.PreferencesUtil
|
||||||
@@ -46,6 +46,7 @@ import com.kunzisoft.keepass.settings.PreferencesUtil
|
|||||||
class MagikIME : InputMethodService(), KeyboardView.OnKeyboardActionListener {
|
class MagikIME : InputMethodService(), KeyboardView.OnKeyboardActionListener {
|
||||||
|
|
||||||
private var keyboardView: KeyboardView? = null
|
private var keyboardView: KeyboardView? = null
|
||||||
|
private var entryText: TextView? = null
|
||||||
private var keyboard: Keyboard? = null
|
private var keyboard: Keyboard? = null
|
||||||
private var keyboardEntry: Keyboard? = null
|
private var keyboardEntry: Keyboard? = null
|
||||||
private var popupCustomKeys: PopupWindow? = null
|
private var popupCustomKeys: PopupWindow? = null
|
||||||
@@ -68,7 +69,10 @@ class MagikIME : InputMethodService(), KeyboardView.OnKeyboardActionListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateInputView(): View {
|
override fun onCreateInputView(): View {
|
||||||
keyboardView = layoutInflater.inflate(R.layout.keyboard_view, null) as MagikeyboardView
|
|
||||||
|
val rootKeyboardView = layoutInflater.inflate(R.layout.keyboard_container, null)
|
||||||
|
entryText = rootKeyboardView.findViewById(R.id.magikeyboard_entry_text)
|
||||||
|
keyboardView = rootKeyboardView.findViewById(R.id.magikeyboard_view)
|
||||||
|
|
||||||
if (keyboardView != null) {
|
if (keyboardView != null) {
|
||||||
keyboard = Keyboard(this, R.xml.keyboard_password)
|
keyboard = Keyboard(this, R.xml.keyboard_password)
|
||||||
@@ -104,7 +108,7 @@ class MagikIME : InputMethodService(), KeyboardView.OnKeyboardActionListener {
|
|||||||
val closeView = popupFieldsView.findViewById<View>(R.id.keyboard_popup_close)
|
val closeView = popupFieldsView.findViewById<View>(R.id.keyboard_popup_close)
|
||||||
closeView.setOnClickListener { popupCustomKeys?.dismiss() }
|
closeView.setOnClickListener { popupCustomKeys?.dismiss() }
|
||||||
|
|
||||||
return keyboardView!!
|
return rootKeyboardView
|
||||||
}
|
}
|
||||||
|
|
||||||
return super.onCreateInputView()
|
return super.onCreateInputView()
|
||||||
@@ -113,10 +117,13 @@ class MagikIME : InputMethodService(), KeyboardView.OnKeyboardActionListener {
|
|||||||
private fun assignKeyboardView() {
|
private fun assignKeyboardView() {
|
||||||
if (keyboardView != null) {
|
if (keyboardView != null) {
|
||||||
if (entryInfoKey != null) {
|
if (entryInfoKey != null) {
|
||||||
if (keyboardEntry != null)
|
if (keyboardEntry != null) {
|
||||||
|
populateEntryInfoInView()
|
||||||
keyboardView?.keyboard = keyboardEntry
|
keyboardView?.keyboard = keyboardEntry
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (keyboard != null) {
|
if (keyboard != null) {
|
||||||
|
hideEntryInfo()
|
||||||
dismissCustomKeys()
|
dismissCustomKeys()
|
||||||
keyboardView?.keyboard = keyboard
|
keyboardView?.keyboard = keyboard
|
||||||
}
|
}
|
||||||
@@ -128,6 +135,19 @@ class MagikIME : InputMethodService(), KeyboardView.OnKeyboardActionListener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun populateEntryInfoInView() {
|
||||||
|
entryText?.visibility = View.VISIBLE
|
||||||
|
if (entryInfoKey?.title?.isNotEmpty() == true) {
|
||||||
|
entryText?.text = entryInfoKey?.title
|
||||||
|
} else {
|
||||||
|
hideEntryInfo()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun hideEntryInfo() {
|
||||||
|
entryText?.visibility = View.GONE
|
||||||
|
}
|
||||||
|
|
||||||
override fun onStartInputView(info: EditorInfo, restarting: Boolean) {
|
override fun onStartInputView(info: EditorInfo, restarting: Boolean) {
|
||||||
super.onStartInputView(info, restarting)
|
super.onStartInputView(info, restarting)
|
||||||
assignKeyboardView()
|
assignKeyboardView()
|
||||||
|
|||||||
48
app/src/main/res/layout/keyboard_container.xml
Normal file
48
app/src/main/res/layout/keyboard_container.xml
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
Copyright 2018 Jeremy Jamet / Kunzisoft.
|
||||||
|
|
||||||
|
This file is part of KeePass DX.
|
||||||
|
|
||||||
|
KeePass DX is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
KeePass DX is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with KeePass DX. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
-->
|
||||||
|
<android.support.constraint.ConstraintLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:layout_alignParentBottom="true"
|
||||||
|
android:paddingTop="4dp"
|
||||||
|
android:paddingBottom="8dp"
|
||||||
|
android:background="@color/keyboard_background"
|
||||||
|
android:orientation="vertical">
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/magikeyboard_entry_text"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="0dp"
|
||||||
|
app:layout_constraintBottom_toTopOf="@+id/magikeyboard_view"
|
||||||
|
android:background="@color/keyboard_background"
|
||||||
|
android:gravity="center"
|
||||||
|
android:textColor="@color/white"/>
|
||||||
|
<com.kunzisoft.keepass.magikeyboard.view.MagikeyboardView
|
||||||
|
android:id="@+id/magikeyboard_view"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="0dp"
|
||||||
|
android:paddingTop="4dp"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
android:background="@color/keyboard_background"
|
||||||
|
android:keyBackground="@drawable/key_background"
|
||||||
|
android:keyTextColor="@color/white"
|
||||||
|
android:popupLayout="@layout/keyboard_popup_fields" />
|
||||||
|
</android.support.constraint.ConstraintLayout>
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!--
|
|
||||||
Copyright 2018 Jeremy Jamet / Kunzisoft.
|
|
||||||
|
|
||||||
This file is part of KeePass DX.
|
|
||||||
|
|
||||||
KeePass DX is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
KeePass DX is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with KeePass DX. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
-->
|
|
||||||
<com.kunzisoft.keepass.magikeyboard.view.MagikeyboardView
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:id="@+id/keyboard"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:layout_alignParentBottom="true"
|
|
||||||
android:background="@color/keyboard_background"
|
|
||||||
android:keyBackground="@drawable/key_background"
|
|
||||||
android:keyTextColor="#ffff"
|
|
||||||
android:paddingTop="8dp"
|
|
||||||
android:paddingBottom="8dp"
|
|
||||||
android:popupLayout="@layout/keyboard_popup_fields"
|
|
||||||
/>
|
|
||||||
Reference in New Issue
Block a user