mirror of
https://github.com/SimpleMobileTools/Simple-Keyboard.git
synced 2025-02-18 12:50:36 +01:00
add a settings item at the top bar too
This commit is contained in:
parent
1f2b2b33c9
commit
97d9a28e9e
@ -1,9 +1,12 @@
|
|||||||
package com.simplemobiletools.keyboard.views
|
package com.simplemobiletools.keyboard.views
|
||||||
|
|
||||||
|
import android.animation.AnimatorSet
|
||||||
|
import android.animation.ObjectAnimator
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.content.ClipData
|
import android.content.ClipData
|
||||||
import android.content.ClipboardManager
|
import android.content.ClipboardManager
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.content.Intent
|
||||||
import android.graphics.*
|
import android.graphics.*
|
||||||
import android.graphics.Paint.Align
|
import android.graphics.Paint.Align
|
||||||
import android.graphics.drawable.ColorDrawable
|
import android.graphics.drawable.ColorDrawable
|
||||||
@ -20,9 +23,12 @@ import android.view.accessibility.AccessibilityManager
|
|||||||
import android.view.animation.AccelerateInterpolator
|
import android.view.animation.AccelerateInterpolator
|
||||||
import android.widget.PopupWindow
|
import android.widget.PopupWindow
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
|
import androidx.core.animation.doOnEnd
|
||||||
|
import androidx.core.animation.doOnStart
|
||||||
import com.simplemobiletools.commons.extensions.*
|
import com.simplemobiletools.commons.extensions.*
|
||||||
import com.simplemobiletools.commons.helpers.isPiePlus
|
import com.simplemobiletools.commons.helpers.isPiePlus
|
||||||
import com.simplemobiletools.keyboard.R
|
import com.simplemobiletools.keyboard.R
|
||||||
|
import com.simplemobiletools.keyboard.activities.SettingsActivity
|
||||||
import com.simplemobiletools.keyboard.extensions.config
|
import com.simplemobiletools.keyboard.extensions.config
|
||||||
import com.simplemobiletools.keyboard.helpers.*
|
import com.simplemobiletools.keyboard.helpers.*
|
||||||
import com.simplemobiletools.keyboard.helpers.MyKeyboard.Companion.KEYCODE_DELETE
|
import com.simplemobiletools.keyboard.helpers.MyKeyboard.Companion.KEYCODE_DELETE
|
||||||
@ -276,7 +282,8 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
|
|||||||
setLinkTextColor(mTextColor)
|
setLinkTextColor(mTextColor)
|
||||||
}
|
}
|
||||||
|
|
||||||
clipboard_delete.applyColorFilter(mTextColor)
|
settings_cog.applyColorFilter(mTextColor)
|
||||||
|
clipboard_clear.applyColorFilter(mTextColor)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -308,6 +315,16 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
|
|||||||
/** Sets the top row above the keyboard containing a couple buttons and the clipboard **/
|
/** Sets the top row above the keyboard containing a couple buttons and the clipboard **/
|
||||||
fun setToolbarHolder(toolbarHolder: View) {
|
fun setToolbarHolder(toolbarHolder: View) {
|
||||||
mToolbarHolder = toolbarHolder
|
mToolbarHolder = toolbarHolder
|
||||||
|
|
||||||
|
mToolbarHolder!!.apply {
|
||||||
|
settings_cog.setOnLongClickListener { context.toast(R.string.settings); true; }
|
||||||
|
settings_cog.setOnClickListener {
|
||||||
|
Intent(context, SettingsActivity::class.java).apply {
|
||||||
|
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||||
|
context.startActivity(this)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -530,18 +547,27 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
clipboard_delete.setOnLongClickListener { context.toast(R.string.clear_clipboard_data); true; }
|
clipboard_clear.setOnLongClickListener { context.toast(R.string.clear_clipboard_data); true; }
|
||||||
clipboard_delete.setOnClickListener {
|
clipboard_clear.setOnClickListener {
|
||||||
clearClipboardContent()
|
clearClipboardContent()
|
||||||
toggleClipboardVisibility(false)
|
toggleClipboardVisibility(false)
|
||||||
}
|
}
|
||||||
toggleClipboardVisibility(true)
|
toggleClipboardVisibility(true)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
mToolbarHolder?.clipboard_holder?.beGone()
|
hideClipboardViews()
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
mToolbarHolder?.clipboard_holder?.beGone()
|
hideClipboardViews()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun hideClipboardViews() {
|
||||||
|
mToolbarHolder?.apply {
|
||||||
|
clipboard_value_holder?.beGone()
|
||||||
|
clipboard_value_holder?.alpha = 0f
|
||||||
|
clipboard_clear?.beGone()
|
||||||
|
clipboard_clear?.alpha = 0f
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -556,26 +582,33 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun toggleClipboardVisibility(show: Boolean) {
|
private fun toggleClipboardVisibility(show: Boolean) {
|
||||||
val newAlpha = if (show) {
|
if ((show && mToolbarHolder?.clipboard_value_holder!!.alpha == 0f) || (!show && mToolbarHolder?.clipboard_value_holder!!.alpha == 1f)) {
|
||||||
1f
|
val newAlpha = if (show) 1f else 0f
|
||||||
} else {
|
val animations = ArrayList<ObjectAnimator>()
|
||||||
0f
|
val clipboardValueAnimation = ObjectAnimator.ofFloat(mToolbarHolder!!.clipboard_value_holder!!, "alpha", newAlpha)
|
||||||
}
|
animations.add(clipboardValueAnimation)
|
||||||
|
|
||||||
mToolbarHolder?.clipboard_holder!!.animate()!!
|
val clipboardClearAnimation = ObjectAnimator.ofFloat(mToolbarHolder!!.clipboard_clear!!, "alpha", newAlpha)
|
||||||
.alpha(newAlpha)
|
animations.add(clipboardClearAnimation)
|
||||||
.setInterpolator(AccelerateInterpolator())
|
|
||||||
.setDuration(150)
|
val animSet = AnimatorSet()
|
||||||
.withStartAction {
|
animSet.playTogether(*animations.toTypedArray())
|
||||||
|
animSet.duration = 150
|
||||||
|
animSet.interpolator = AccelerateInterpolator()
|
||||||
|
animSet.doOnStart {
|
||||||
if (show) {
|
if (show) {
|
||||||
mToolbarHolder?.clipboard_holder?.beVisible()
|
mToolbarHolder?.clipboard_value_holder?.beVisible()
|
||||||
|
mToolbarHolder?.clipboard_clear?.beVisible()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.withEndAction {
|
animSet.doOnEnd {
|
||||||
if (!show) {
|
if (!show) {
|
||||||
mToolbarHolder?.clipboard_holder?.beGone()
|
mToolbarHolder?.clipboard_value_holder?.beGone()
|
||||||
|
mToolbarHolder?.clipboard_clear?.beGone()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
animSet.start()
|
||||||
}
|
}
|
||||||
}.start()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getKeyIndices(x: Int, y: Int, allKeys: IntArray?): Int {
|
private fun getKeyIndices(x: Int, y: Int, allKeys: IntArray?): Int {
|
||||||
|
@ -13,23 +13,33 @@
|
|||||||
android:layout_height="@dimen/toolbar_height"
|
android:layout_height="@dimen/toolbar_height"
|
||||||
android:gravity="center_vertical">
|
android:gravity="center_vertical">
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<ImageView
|
||||||
android:id="@+id/clipboard_holder"
|
android:id="@+id/settings_cog"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="@dimen/list_avatar_size"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="@dimen/list_avatar_size"
|
||||||
android:gravity="center_vertical"
|
android:layout_marginStart="@dimen/medium_margin"
|
||||||
|
android:background="?android:attr/selectableItemBackgroundBorderless"
|
||||||
|
android:contentDescription="@string/settings"
|
||||||
|
android:padding="@dimen/medium_margin"
|
||||||
|
android:src="@drawable/ic_settings_cog_vector"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<RelativeLayout
|
||||||
|
android:id="@+id/clipboard_value_holder"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintEnd_toStartOf="@+id/clipboard_clear"
|
||||||
|
app:layout_constraintStart_toEndOf="@+id/settings_cog"
|
||||||
app:layout_constraintTop_toTopOf="parent">
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/clipboard_value"
|
android:id="@+id/clipboard_value"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="@dimen/activity_margin"
|
android:layout_centerInParent="true"
|
||||||
android:layout_marginEnd="@dimen/medium_margin"
|
|
||||||
android:layout_toStartOf="@+id/clipboard_delete"
|
|
||||||
android:autoLink="none"
|
android:autoLink="none"
|
||||||
android:background="@drawable/clipboard_background"
|
android:background="@drawable/clipboard_background"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
@ -40,14 +50,11 @@
|
|||||||
android:paddingEnd="@dimen/activity_margin"
|
android:paddingEnd="@dimen/activity_margin"
|
||||||
android:paddingBottom="@dimen/smaller_margin"
|
android:paddingBottom="@dimen/smaller_margin"
|
||||||
android:textSize="@dimen/label_text_size"
|
android:textSize="@dimen/label_text_size"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
app:layout_constraintEnd_toStartOf="@+id/clipboard_delete"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
tools:text="Clipboard content" />
|
tools:text="Clipboard content" />
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/clipboard_delete"
|
android:id="@+id/clipboard_clear"
|
||||||
android:layout_width="@dimen/list_avatar_size"
|
android:layout_width="@dimen/list_avatar_size"
|
||||||
android:layout_height="@dimen/list_avatar_size"
|
android:layout_height="@dimen/list_avatar_size"
|
||||||
android:layout_marginEnd="@dimen/medium_margin"
|
android:layout_marginEnd="@dimen/medium_margin"
|
||||||
@ -60,7 +67,6 @@
|
|||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
||||||
|
|
||||||
<com.simplemobiletools.keyboard.views.MyKeyboardView
|
<com.simplemobiletools.keyboard.views.MyKeyboardView
|
||||||
android:id="@+id/keyboard_view"
|
android:id="@+id/keyboard_view"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user