Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions app/src/main/java/com/urik/keyboard/UrikInputMethodService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -680,6 +680,9 @@ class UrikInputMethodService :
},
onDeleteAll = {
handleClipboardDeleteAll()
},
onClose = {
dismissClipboardPanel()
}
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package com.urik.keyboard.ui.keyboard.components

import android.content.Context
import android.graphics.drawable.GradientDrawable
import android.util.TypedValue
import android.view.Gravity
import android.view.View
import android.widget.Button
Expand Down Expand Up @@ -29,6 +30,8 @@ class ClipboardPanel(context: Context, private val themeManager: ThemeManager) :
private var onItemDeleted: ((ClipboardItem) -> Unit)? = null
private var onDeleteAllUnpinned: (() -> Unit)? = null

private var onClose: (() -> Unit)? = null

private val transientOverlayA11yDelegate =
object : AccessibilityDelegateCompat() {
override fun onInitializeAccessibilityNodeInfo(host: View, info: AccessibilityNodeInfoCompat) {
Expand Down Expand Up @@ -73,6 +76,8 @@ class ClipboardPanel(context: Context, private val themeManager: ThemeManager) :
private val pinnedTab: Button
private val recentTab: Button

private val closeButton: TextView

private val pinnedListContainer: ScrollView =
ScrollView(context).apply {
isVisible = false
Expand Down Expand Up @@ -169,9 +174,27 @@ class ClipboardPanel(context: Context, private val themeManager: ThemeManager) :
1f
)
}
val emojiTextSize = calculateResponsiveSuggestionTextSize()
val minTouchTarget = context.resources.getDimensionPixelSize(R.dimen.minimum_touch_target)
closeButton =
TextView(context).apply {
text = "✕"
setTextSize(TypedValue.COMPLEX_UNIT_SP, emojiTextSize)
gravity = Gravity.CENTER
contentDescription = context.getString(R.string.clipboard_panel_close)
setOnClickListener {
onClose?.invoke()
}
layoutParams =
LinearLayout.LayoutParams(
minTouchTarget,
minTouchTarget
)
}

tabContainer.addView(pinnedTab)
tabContainer.addView(recentTab)
tabContainer.addView(closeButton)

pinnedListContainer.addView(pinnedList)
recentListContainer.addView(recentList)
Expand Down Expand Up @@ -227,6 +250,16 @@ class ClipboardPanel(context: Context, private val themeManager: ThemeManager) :
}
}

// took from SwipeKeyboardView
private fun calculateResponsiveSuggestionTextSize(): Float {
val keyHeight = context.resources.getDimensionPixelSize(R.dimen.key_height)
val baseTextSize = keyHeight * 0.40f / context.resources.displayMetrics.density
val minSize = 15f
val maxSize = 19f

return baseTextSize.coerceIn(minSize, maxSize)
}

private fun createButtonBackground(): GradientDrawable {
val density = context.resources.displayMetrics.density
val cornerRadius = 8 * density
Expand Down Expand Up @@ -277,12 +310,14 @@ class ClipboardPanel(context: Context, private val themeManager: ThemeManager) :
onItemClick: (String) -> Unit,
onPinToggle: (ClipboardItem) -> Unit,
onDelete: (ClipboardItem) -> Unit,
onDeleteAll: () -> Unit
onDeleteAll: () -> Unit,
onClose: () -> Unit
) {
this.onItemSelected = onItemClick
this.onItemPinToggled = onPinToggle
this.onItemDeleted = onDelete
this.onDeleteAllUnpinned = onDeleteAll
this.onClose = onClose

consentScreen.isVisible = false
clipboardContentScreen.isVisible = true
Expand Down Expand Up @@ -509,6 +544,14 @@ class ClipboardPanel(context: Context, private val themeManager: ThemeManager) :
onItemDeleted?.invoke(item)
}
}

closeButton.apply {
setTextColor(themeManager.currentTheme.value.colors.keyTextAction)
contentDescription = context.getString(R.string.clipboard_panel_close)
setOnClickListener {
onClose?.invoke()
}
}
}

private fun showDeleteAllConfirmation() {
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/res/values-fr/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -296,7 +296,7 @@
<string name="clipboard_panel_delete_all_confirm">Supprimer tous les éléments non épinglés du presse-papiers ?</string>
<string name="clipboard_consent_message">Urik peut lire et stocker indéfiniment le contenu du presse-papiers. Si vous ne le souhaitez pas, rendez-vous dans les paramètres et désactivez l\'historique du presse-papiers.</string>
<string name="clipboard_panel_close">Fermer le presse-papier</string>

<!-- Clipboard Accessibility -->
<string name="clipboard_item_description">Élément du presse-papiers : %1$s</string>
<string name="clipboard_item_pin">Épingler l\'élément du presse-papiers</string>
Expand Down