add haptic feedback and enable search options

This commit is contained in:
Kieran W 2024-03-22 13:46:10 +00:00
parent cc1535edcd
commit b5bfd08ffb
30 changed files with 113 additions and 39 deletions

View File

@ -24,13 +24,14 @@ tasks.register("genDocs") {
dependsOn("dokkaGfm") dependsOn("dokkaGfm")
doLast { doLast {
copy { copy {
from("$ref/index.md") from("${ref.get()}/index.md")
into(ref) into(ref.get())
rename { "README.md" } rename { "README.md" }
} }
} }
} }
android { android {
compileSdk = 34 compileSdk = 34
buildToolsVersion = "34.0.0" buildToolsVersion = "34.0.0"

View File

@ -50,6 +50,7 @@ class ImageKeyboard : InputMethodService(), StickerClickListener {
private var restoreOnClose = false private var restoreOnClose = false
private var vertical = false private var vertical = false
private var scroll = false private var scroll = false
private var vibrate = false
private var iconsPerX = 0 private var iconsPerX = 0
private var iconSize = 0 private var iconSize = 0
@ -108,6 +109,7 @@ class ImageKeyboard : InputMethodService(), StickerClickListener {
this.restoreOnClose = this.sharedPreferences.getBoolean("restoreOnClose", false) this.restoreOnClose = this.sharedPreferences.getBoolean("restoreOnClose", false)
this.vertical = this.sharedPreferences.getBoolean("vertical", false) this.vertical = this.sharedPreferences.getBoolean("vertical", false)
this.scroll = this.sharedPreferences.getBoolean("scroll", false) this.scroll = this.sharedPreferences.getBoolean("scroll", false)
this.vibrate = this.sharedPreferences.getBoolean("vibrate", true)
this.iconsPerX = this.sharedPreferences.getInt("iconsPerX", 3) this.iconsPerX = this.sharedPreferences.getInt("iconsPerX", 3)
this.totalIconPadding = this.totalIconPadding =
@ -247,7 +249,12 @@ class ImageKeyboard : InputMethodService(), StickerClickListener {
stickers = loadedPacks[packName]?.stickerList ?: return stickers = loadedPacks[packName]?.stickerList ?: return
} }
val recyclerView = RecyclerView(this) val recyclerView = RecyclerView(this)
val adapter = StickerPackAdapter(iconSize, stickers, this, gestureDetector) val adapter = StickerPackAdapter(
iconSize,
stickers,
this,
gestureDetector,
this.vibrate)
val layoutManager = GridLayoutManager( val layoutManager = GridLayoutManager(
this, this,
iconsPerX, iconsPerX,
@ -299,6 +306,7 @@ class ImageKeyboard : InputMethodService(), StickerClickListener {
stickers.take(128).toTypedArray(), stickers.take(128).toTypedArray(),
this, this,
gestureDetector, gestureDetector,
this.vibrate,
) )
val layoutManager = GridLayoutManager( val layoutManager = GridLayoutManager(
baseContext, baseContext,
@ -351,7 +359,7 @@ class ImageKeyboard : InputMethodService(), StickerClickListener {
val sText = buttonView.findViewById<TextView>(R.id.secondaryText) val sText = buttonView.findViewById<TextView>(R.id.secondaryText)
sText.text = secondaryChar sText.text = secondaryChar
button.setOnClickListener { button.setOnClickListener {
if (SDK_INT >= Build.VERSION_CODES.O_MR1) { if (this.vibrate && SDK_INT >= Build.VERSION_CODES.O_MR1) {
it.performHapticFeedback(HapticFeedbackConstants.KEYBOARD_PRESS) it.performHapticFeedback(HapticFeedbackConstants.KEYBOARD_PRESS)
} }
tap((it.tag as Array<String>)[0]) tap((it.tag as Array<String>)[0])
@ -416,11 +424,15 @@ class ImageKeyboard : InputMethodService(), StickerClickListener {
closeKeyboard() closeKeyboard()
} }
} }
// Search
if (this.sharedPreferences.getBoolean("showSearchButton", true)) {
val searchButton = addPackButton("__search__") val searchButton = addPackButton("__search__")
searchButton.load(getDrawable(R.drawable.search_circle)) searchButton.load(getDrawable(R.drawable.search_circle))
searchButton.setOnClickListener { searchButton.setOnClickListener {
searchView() searchView()
} }
}
// Recent // Recent
val recentPackName = "__recentSticker__" val recentPackName = "__recentSticker__"
val recentButton = addPackButton(recentPackName) val recentButton = addPackButton(recentPackName)

View File

@ -56,6 +56,8 @@ class MainActivity : AppCompatActivity() {
seekBar(findViewById(R.id.iconsPerXSb), findViewById(R.id.iconsPerXLbl), "iconsPerX", 3) seekBar(findViewById(R.id.iconsPerXSb), findViewById(R.id.iconsPerXLbl), "iconsPerX", 3)
seekBar(findViewById(R.id.iconSizeSb), findViewById(R.id.iconSizeLbl), "iconSize", 80, 20) seekBar(findViewById(R.id.iconSizeSb), findViewById(R.id.iconSizeLbl), "iconSize", 80, 20)
toggle(findViewById(R.id.showBackButton), "showBackButton", true) {} toggle(findViewById(R.id.showBackButton), "showBackButton", true) {}
toggle(findViewById(R.id.showSearchButton), "showSearchButton", true) {}
toggle(findViewById(R.id.vibrate), "vibrate", true) {}
toggle(findViewById(R.id.vertical), "vertical") { isChecked: Boolean -> toggle(findViewById(R.id.vertical), "vertical") { isChecked: Boolean ->
findViewById<SeekBar>(R.id.iconSizeSb).isEnabled = !isChecked findViewById<SeekBar>(R.id.iconSizeSb).isEnabled = !isChecked
} }

View File

@ -1,6 +1,8 @@
package com.fredhappyface.ewesticker.adapter package com.fredhappyface.ewesticker.adapter
import android.os.Build
import android.view.GestureDetector import android.view.GestureDetector
import android.view.HapticFeedbackConstants
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.ViewGroup import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
@ -15,6 +17,7 @@ class StickerPackAdapter(
private val stickers: Array<File>, private val stickers: Array<File>,
private val listener: StickerClickListener, private val listener: StickerClickListener,
private val gestureDetector: GestureDetector, private val gestureDetector: GestureDetector,
private val vibrate: Boolean,
) : ) :
RecyclerView.Adapter<StickerPackViewHolder>() { RecyclerView.Adapter<StickerPackViewHolder>() {
@ -33,6 +36,9 @@ class StickerPackAdapter(
holder.stickerThumbnail.tag = stickerFile holder.stickerThumbnail.tag = stickerFile
holder.stickerThumbnail.setOnClickListener { holder.stickerThumbnail.setOnClickListener {
val file = it.tag as File val file = it.tag as File
if (vibrate && Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
it.performHapticFeedback(HapticFeedbackConstants.KEYBOARD_PRESS)
}
listener.onStickerClicked(file) listener.onStickerClicked(file)
} }
holder.stickerThumbnail.setOnLongClickListener { holder.stickerThumbnail.setOnLongClickListener {

View File

@ -175,6 +175,34 @@
android:text="@string/options_show_back_button" /> android:text="@string/options_show_back_button" />
</LinearLayout> </LinearLayout>
<LinearLayout
style="@style/widthMatchHeightWrap"
android:orientation="horizontal">
<CheckBox
android:id="@+id/showSearchButton"
style="@style/checkbox" />
<TextView
style="@style/body_text"
android:paddingBottom="@dimen/content_margin"
android:text="@string/options_show_search_button" />
</LinearLayout>
<LinearLayout
style="@style/widthMatchHeightWrap"
android:orientation="horizontal">
<CheckBox
android:id="@+id/vibrate"
style="@style/checkbox" />
<TextView
style="@style/body_text"
android:paddingBottom="@dimen/content_margin"
android:text="@string/options_vibrate" />
</LinearLayout>
<LinearLayout <LinearLayout
style="@style/widthMatchHeightWrap" style="@style/widthMatchHeightWrap"
android:orientation="horizontal"> android:orientation="horizontal">

View File

@ -20,6 +20,8 @@
<!-- الخيارات --> <!-- الخيارات -->
<string name="options_heading">الخيارات</string> <string name="options_heading">الخيارات</string>
<string name="options_show_back_button">إظهار زر الرجوع في شريط التنقل</string> <string name="options_show_back_button">إظهار زر الرجوع في شريط التنقل</string>
<string name="options_show_search_button">تمكين البحث</string>
<string name="options_vibrate">تغذية هزازة عند الضغط على المفتاح</string>
<string name="options_vertical">استخدام تخطيط عمودي</string> <string name="options_vertical">استخدام تخطيط عمودي</string>
<string name="options_restore_on_close">استعادة لوحة المفاتيح السابقة عند إغلاق لوحة المفاتيح</string> <string name="options_restore_on_close">استعادة لوحة المفاتيح السابقة عند إغلاق لوحة المفاتيح</string>
<string name="options_scroll">تمكين التمرير بين الحزم (عرضيًا لاتجاه التمرير)</string> <string name="options_scroll">تمكين التمرير بين الحزم (عرضيًا لاتجاه التمرير)</string>

View File

@ -20,6 +20,8 @@
<!-- বিকল্পসমূহ --> <!-- বিকল্পসমূহ -->
<string name="options_heading">বিকল্পসমূহ</string> <string name="options_heading">বিকল্পসমূহ</string>
<string name="options_show_back_button">ন্যাভবারে ব্যাক বাটন দেখান</string> <string name="options_show_back_button">ন্যাভবারে ব্যাক বাটন দেখান</string>
<string name="options_show_search_button">অনুসন্ধান সক্ষম করুন</string>
<string name="options_vibrate">কী-প্রেসে হ্যাপটিক প্রতিক্রিয়া</string>
<string name="options_vertical">ভার্টিক্যাল লেআউট ব্যবহার করুন</string> <string name="options_vertical">ভার্টিক্যাল লেআউট ব্যবহার করুন</string>
<string name="options_restore_on_close">কীবোর্ড বন্ধ হলে পূর্বের কীবোর্ড পুনরুদ্ধার করুন</string> <string name="options_restore_on_close">কীবোর্ড বন্ধ হলে পূর্বের কীবোর্ড পুনরুদ্ধার করুন</string>
<string name="options_scroll">প্যাক মধ্যে স্বাইপ সক্রিয় করুন (স্ক্রল দিকে লম্ব)</string> <string name="options_scroll">প্যাক মধ্যে স্বাইপ সক্রিয় করুন (স্ক্রল দিকে লম্ব)</string>

View File

@ -20,6 +20,8 @@
<!-- Optionen --> <!-- Optionen -->
<string name="options_heading">Optionen</string> <string name="options_heading">Optionen</string>
<string name="options_show_back_button">Zurück-Button in der Navigationsleiste anzeigen</string> <string name="options_show_back_button">Zurück-Button in der Navigationsleiste anzeigen</string>
<string name="options_show_search_button">Suche aktivieren</string>
<string name="options_vibrate">Haptisches Feedback bei Tastendruck</string>
<string name="options_vertical">Vertikales Layout verwenden</string> <string name="options_vertical">Vertikales Layout verwenden</string>
<string name="options_restore_on_close">Vorherige Tastatur wiederherstellen, wenn Tastatur geschlossen wird</string> <string name="options_restore_on_close">Vorherige Tastatur wiederherstellen, wenn Tastatur geschlossen wird</string>
<string name="options_scroll">Wischen zwischen Packs aktivieren (senkrecht zur Scrollrichtung)</string> <string name="options_scroll">Wischen zwischen Packs aktivieren (senkrecht zur Scrollrichtung)</string>

View File

@ -20,6 +20,8 @@
<!-- Options --> <!-- Options -->
<string name="options_heading">Opciones</string> <string name="options_heading">Opciones</string>
<string name="options_show_back_button">Mostrar botón atrás en navbar</string> <string name="options_show_back_button">Mostrar botón atrás en navbar</string>
<string name="options_show_search_button">Habilitar búsqueda</string>
<string name="options_vibrate">Comentarios hápticos al presionar teclas</string>
<string name="options_vertical">Usar layout vertical</string> <string name="options_vertical">Usar layout vertical</string>
<string name="options_restore_on_close">Restaurar el teclado anterior al cerrar el teclado</string> <string name="options_restore_on_close">Restaurar el teclado anterior al cerrar el teclado</string>
<string name="options_scroll">Habilitar el deslizamiento entre paquetes (perpendicular a la dirección de desplazamiento)</string> <string name="options_scroll">Habilitar el deslizamiento entre paquetes (perpendicular a la dirección de desplazamiento)</string>

View File

@ -19,6 +19,8 @@
<string name="update_sticker_pack_info_total_lbl">- Total:</string> <string name="update_sticker_pack_info_total_lbl">- Total:</string>
<string name="options_heading">Options</string> <string name="options_heading">Options</string>
<string name="options_show_back_button">Afficher le bouton dans la barre de navigation</string> <string name="options_show_back_button">Afficher le bouton dans la barre de navigation</string>
<string name="options_show_search_button">Activer la recherche</string>
<string name="options_vibrate">Retour haptique lors de lappui sur une touche</string>
<string name="options_vertical">Utiliser la mise en page verticale</string> <string name="options_vertical">Utiliser la mise en page verticale</string>
<string name="options_restore_on_close">Restaurer le clavier précédent en fermant le clavier</string> <string name="options_restore_on_close">Restaurer le clavier précédent en fermant le clavier</string>
<string name="options_scroll">Permet de glisser entre les paquets (perpendiculaire à la direction de défilement)</string> <string name="options_scroll">Permet de glisser entre les paquets (perpendiculaire à la direction de défilement)</string>

View File

@ -19,6 +19,8 @@
<!-- Options --> <!-- Options -->
<string name="options_heading">विकल्प</string> <string name="options_heading">विकल्प</string>
<string name="options_show_back_button">नैविगेशन बार में बैक बटन दिखाएं</string> <string name="options_show_back_button">नैविगेशन बार में बैक बटन दिखाएं</string>
<string name="options_show_search_button">खोज सक्षम करें</string>
<string name="options_vibrate">कुंजी-दबाने पर हैप्टिक प्रतिक्रिया</string>
<string name="options_vertical">उद्देश्य खगोल उपयोग करें</string> <string name="options_vertical">उद्देश्य खगोल उपयोग करें</string>
<string name="options_restore_on_close">कीबोर्ड बंद होने पर पिछली स्थिति को पुनर्स्थापित करें</string> <string name="options_restore_on_close">कीबोर्ड बंद होने पर पिछली स्थिति को पुनर्स्थापित करें</string>
<string name="options_scroll">पैक के बीच स्वाइप को सक्षम करें (स्क्रॉल दिशा के पर्पेंडिक्युलर)</string> <string name="options_scroll">पैक के बीच स्वाइप को सक्षम करें (स्क्रॉल दिशा के पर्पेंडिक्युलर)</string>

View File

@ -20,6 +20,8 @@
<!-- Opsi --> <!-- Opsi -->
<string name="options_heading">Opsi</string> <string name="options_heading">Opsi</string>
<string name="options_show_back_button">Tampilkan tombol kembali di navbar</string> <string name="options_show_back_button">Tampilkan tombol kembali di navbar</string>
<string name="options_show_search_button">Aktifkan pencarian</string>
<string name="options_vibrate">Umpan balik haptik saat menekan tombol</string>
<string name="options_vertical">Gunakan tata letak vertikal</string> <string name="options_vertical">Gunakan tata letak vertikal</string>
<string name="options_restore_on_close">Pulihkan keyboard sebelumnya saat menutup keyboard</string> <string name="options_restore_on_close">Pulihkan keyboard sebelumnya saat menutup keyboard</string>
<string name="options_scroll">Aktifkan swipe antara paket stiker (tegak lurus terhadap arah gulir)</string> <string name="options_scroll">Aktifkan swipe antara paket stiker (tegak lurus terhadap arah gulir)</string>

View File

@ -19,6 +19,8 @@
<!-- オプション --> <!-- オプション -->
<string name="options_heading">オプション</string> <string name="options_heading">オプション</string>
<string name="options_show_back_button">ナビゲーションバーに戻るボタンを表示</string> <string name="options_show_back_button">ナビゲーションバーに戻るボタンを表示</string>
<string name="options_show_search_button">検索を有効にする</string>
<string name="options_vibrate">キー操作時の触覚フィードバック</string>
<string name="options_vertical">垂直レイアウトを使用</string> <string name="options_vertical">垂直レイアウトを使用</string>
<string name="options_restore_on_close">キーボードを閉じた際に前回のキーボードを復元</string> <string name="options_restore_on_close">キーボードを閉じた際に前回のキーボードを復元</string>
<string name="options_scroll">パック間をスワイプで切り替えるを有効にする(スクロール方向に対して垂直)</string> <string name="options_scroll">パック間をスワイプで切り替えるを有効にする(スクロール方向に対して垂直)</string>

View File

@ -20,6 +20,8 @@
<!-- 옵션 --> <!-- 옵션 -->
<string name="options_heading">옵션</string> <string name="options_heading">옵션</string>
<string name="options_show_back_button">네비게이션 바에 뒤로 가기 버튼 표시</string> <string name="options_show_back_button">네비게이션 바에 뒤로 가기 버튼 표시</string>
<string name="options_show_search_button">검색 활성화</string>
<string name="options_vibrate">키를 누를 때 햅틱 피드백</string>
<string name="options_vertical">수직 레이아웃 사용</string> <string name="options_vertical">수직 레이아웃 사용</string>
<string name="options_restore_on_close">키보드 닫을 때 이전 키보드 복원</string> <string name="options_restore_on_close">키보드 닫을 때 이전 키보드 복원</string>
<string name="options_scroll">팩 간 스와이프 활성화 (스크롤 방향과 수직)</string> <string name="options_scroll">팩 간 스와이프 활성화 (스크롤 방향과 수직)</string>

View File

@ -19,6 +19,8 @@
<!-- Opções --> <!-- Opções -->
<string name="options_heading">Opções</string> <string name="options_heading">Opções</string>
<string name="options_show_back_button">Mostrar botão de voltar na barra de navegação</string> <string name="options_show_back_button">Mostrar botão de voltar na barra de navegação</string>
<string name="options_show_search_button">Ativar busca</string>
<string name="options_vibrate">Feedback háptico ao pressionar teclas</string>
<string name="options_vertical">Usar layout vertical</string> <string name="options_vertical">Usar layout vertical</string>
<string name="options_restore_on_close">Restaurar teclado anterior ao fechar o teclado</string> <string name="options_restore_on_close">Restaurar teclado anterior ao fechar o teclado</string>
<string name="options_scroll">Habilitar deslize entre pacotes (perpendicular à direção de rolagem)</string> <string name="options_scroll">Habilitar deslize entre pacotes (perpendicular à direção de rolagem)</string>

View File

@ -19,6 +19,8 @@
<!-- Опции --> <!-- Опции -->
<string name="options_heading">Опции</string> <string name="options_heading">Опции</string>
<string name="options_show_back_button">Показать кнопку назад в навигационной панели</string> <string name="options_show_back_button">Показать кнопку назад в навигационной панели</string>
<string name="options_show_search_button">Ativar busca</string>
<string name="options_vibrate">Feedback háptico ao pressionar teclas</string>
<string name="options_vertical">Использовать вертикальное расположение</string> <string name="options_vertical">Использовать вертикальное расположение</string>
<string name="options_restore_on_close">Восстановить предыдущую клавиатуру при закрытии</string> <string name="options_restore_on_close">Восстановить предыдущую клавиатуру при закрытии</string>
<string name="options_scroll">Включить переключение между пакетами (перпендикулярно направлению прокрутки)</string> <string name="options_scroll">Включить переключение между пакетами (перпендикулярно направлению прокрутки)</string>

View File

@ -20,6 +20,8 @@
<!-- اختیارات --> <!-- اختیارات -->
<string name="options_heading">اختیارات</string> <string name="options_heading">اختیارات</string>
<string name="options_show_back_button">نیویگیشن بار میں پیچھے جائیں کا بٹن دکھائیں</string> <string name="options_show_back_button">نیویگیشن بار میں پیچھے جائیں کا بٹن دکھائیں</string>
<string name="options_show_search_button">تلاش کو فعال کریں</string>
<string name="options_vibrate">کی پریس پر ہیپٹک فیڈ بیک</string>
<string name="options_vertical">عمودی لے آؤٹ استعمال کریں</string> <string name="options_vertical">عمودی لے آؤٹ استعمال کریں</string>
<string name="options_restore_on_close">کی بورڈ بند ہونے پر پچھلا کی بورڈ بحال کریں</string> <string name="options_restore_on_close">کی بورڈ بند ہونے پر پچھلا کی بورڈ بحال کریں</string>
<string name="options_scroll">پیک کے درمیان میں چھلانے کی اجازت دیں (سکرول کی سمت کے عمودی)</string> <string name="options_scroll">پیک کے درمیان میں چھلانے کی اجازت دیں (سکرول کی سمت کے عمودی)</string>

View File

@ -20,6 +20,8 @@
<!-- 选项 --> <!-- 选项 -->
<string name="options_heading">选项</string> <string name="options_heading">选项</string>
<string name="options_show_back_button">在导航栏中显示返回按钮</string> <string name="options_show_back_button">在导航栏中显示返回按钮</string>
<string name="options_show_search_button">启用搜索</string>
<string name="options_vibrate">按键时触觉反馈</string>
<string name="options_vertical">使用垂直布局</string> <string name="options_vertical">使用垂直布局</string>
<string name="options_restore_on_close">在键盘关闭时还原上一个键盘</string> <string name="options_restore_on_close">在键盘关闭时还原上一个键盘</string>
<string name="options_scroll">启用在贴纸包之间滑动(垂直于滚动方向)</string> <string name="options_scroll">启用在贴纸包之间滑动(垂直于滚动方向)</string>

View File

@ -20,6 +20,8 @@
<!-- 選項 --> <!-- 選項 -->
<string name="options_heading">選項</string> <string name="options_heading">選項</string>
<string name="options_show_back_button">在導航欄中顯示返回按鈕</string> <string name="options_show_back_button">在導航欄中顯示返回按鈕</string>
<string name="options_show_search_button">啟用搜尋</string>
<string name="options_vibrate">按鍵時觸覺回饋</string>
<string name="options_vertical">使用垂直佈局</string> <string name="options_vertical">使用垂直佈局</string>
<string name="options_restore_on_close">在鍵盤關閉時還原先前的鍵盤</string> <string name="options_restore_on_close">在鍵盤關閉時還原先前的鍵盤</string>
<string name="options_scroll">啟用在貼圖包之間滑動(垂直於滾動方向)</string> <string name="options_scroll">啟用在貼圖包之間滑動(垂直於滾動方向)</string>

View File

@ -20,6 +20,8 @@
<!-- Options --> <!-- Options -->
<string name="options_heading">Options</string> <string name="options_heading">Options</string>
<string name="options_show_back_button">Show back button in navbar</string> <string name="options_show_back_button">Show back button in navbar</string>
<string name="options_show_search_button">Enable search</string>
<string name="options_vibrate">Haptic feedback on key-press</string>
<string name="options_vertical">Use vertical layout</string> <string name="options_vertical">Use vertical layout</string>
<string name="options_restore_on_close">Restore previous keyboard on keyboard close</string> <string name="options_restore_on_close">Restore previous keyboard on keyboard close</string>
<string name="options_scroll">Enable swipe between packs (perpendicular to scroll direction)</string> <string name="options_scroll">Enable swipe between packs (perpendicular to scroll direction)</string>

View File

@ -2,7 +2,7 @@
plugins { plugins {
id("com.android.application") version "8.3.0" apply false id("com.android.application") version "8.3.0" apply false
id("org.jetbrains.kotlin.android") version "1.9.0" apply false id("org.jetbrains.kotlin.android") version "1.9.0" apply false
id("org.jetbrains.dokka") version "1.8.20" id("org.jetbrains.dokka") version "1.9.20"
id("org.jlleitschuh.gradle.ktlint") version "11.6.0" id("org.jlleitschuh.gradle.ktlint") version "11.6.0"
} }

View File

@ -3,4 +3,4 @@
# StickerPackAdapter # StickerPackAdapter
[androidJvm]\ [androidJvm]\
constructor(iconSize: [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html), stickers: [Array](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-array/index.html)&lt;[File](https://developer.android.com/reference/kotlin/java/io/File.html)&gt;, listener: [StickerClickListener](../../com.fredhappyface.ewesticker.utilities/-sticker-click-listener/index.md), gestureDetector: [GestureDetector](https://developer.android.com/reference/kotlin/android/view/GestureDetector.html)) constructor(iconSize: [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html), stickers: [Array](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-array/index.html)&lt;[File](https://developer.android.com/reference/kotlin/java/io/File.html)&gt;, listener: [StickerClickListener](../../com.fredhappyface.ewesticker.utilities/-sticker-click-listener/index.md), gestureDetector: [GestureDetector](https://developer.android.com/reference/kotlin/android/view/GestureDetector.html), vibrate: [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html))

View File

@ -3,13 +3,13 @@
# StickerPackAdapter # StickerPackAdapter
[androidJvm]\ [androidJvm]\
class [StickerPackAdapter](index.md)(iconSize: [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html), stickers: [Array](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-array/index.html)&lt;[File](https://developer.android.com/reference/kotlin/java/io/File.html)&gt;, listener: [StickerClickListener](../../com.fredhappyface.ewesticker.utilities/-sticker-click-listener/index.md), gestureDetector: [GestureDetector](https://developer.android.com/reference/kotlin/android/view/GestureDetector.html)) : [RecyclerView.Adapter](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView.Adapter.html)&lt;[StickerPackViewHolder](../../com.fredhappyface.ewesticker.view/-sticker-pack-view-holder/index.md)&gt; class [StickerPackAdapter](index.md)(iconSize: [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html), stickers: [Array](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-array/index.html)&lt;[File](https://developer.android.com/reference/kotlin/java/io/File.html)&gt;, listener: [StickerClickListener](../../com.fredhappyface.ewesticker.utilities/-sticker-click-listener/index.md), gestureDetector: [GestureDetector](https://developer.android.com/reference/kotlin/android/view/GestureDetector.html), vibrate: [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html)) : [RecyclerView.Adapter](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView.Adapter.html)&lt;[StickerPackViewHolder](../../com.fredhappyface.ewesticker.view/-sticker-pack-view-holder/index.md)&gt;
## Constructors ## Constructors
| | | | | |
|---|---| |---|---|
| [StickerPackAdapter](-sticker-pack-adapter.md) | [androidJvm]<br>constructor(iconSize: [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html), stickers: [Array](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-array/index.html)&lt;[File](https://developer.android.com/reference/kotlin/java/io/File.html)&gt;, listener: [StickerClickListener](../../com.fredhappyface.ewesticker.utilities/-sticker-click-listener/index.md), gestureDetector: [GestureDetector](https://developer.android.com/reference/kotlin/android/view/GestureDetector.html)) | | [StickerPackAdapter](-sticker-pack-adapter.md) | [androidJvm]<br>constructor(iconSize: [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html), stickers: [Array](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-array/index.html)&lt;[File](https://developer.android.com/reference/kotlin/java/io/File.html)&gt;, listener: [StickerClickListener](../../com.fredhappyface.ewesticker.utilities/-sticker-click-listener/index.md), gestureDetector: [GestureDetector](https://developer.android.com/reference/kotlin/android/view/GestureDetector.html), vibrate: [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html)) |
## Functions ## Functions

View File

@ -6,4 +6,4 @@
| Name | Summary | | Name | Summary |
|---|---| |---|---|
| [StickerPackAdapter](-sticker-pack-adapter/index.md) | [androidJvm]<br>class [StickerPackAdapter](-sticker-pack-adapter/index.md)(iconSize: [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html), stickers: [Array](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-array/index.html)&lt;[File](https://developer.android.com/reference/kotlin/java/io/File.html)&gt;, listener: [StickerClickListener](../com.fredhappyface.ewesticker.utilities/-sticker-click-listener/index.md), gestureDetector: [GestureDetector](https://developer.android.com/reference/kotlin/android/view/GestureDetector.html)) : [RecyclerView.Adapter](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView.Adapter.html)&lt;[StickerPackViewHolder](../com.fredhappyface.ewesticker.view/-sticker-pack-view-holder/index.md)&gt; | | [StickerPackAdapter](-sticker-pack-adapter/index.md) | [androidJvm]<br>class [StickerPackAdapter](-sticker-pack-adapter/index.md)(iconSize: [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html), stickers: [Array](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-array/index.html)&lt;[File](https://developer.android.com/reference/kotlin/java/io/File.html)&gt;, listener: [StickerClickListener](../com.fredhappyface.ewesticker.utilities/-sticker-click-listener/index.md), gestureDetector: [GestureDetector](https://developer.android.com/reference/kotlin/android/view/GestureDetector.html), vibrate: [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html)) : [RecyclerView.Adapter](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView.Adapter.html)&lt;[StickerPackViewHolder](../com.fredhappyface.ewesticker.view/-sticker-pack-view-holder/index.md)&gt; |

View File

@ -1,6 +0,0 @@
//[app](../../../index.md)/[com.fredhappyface.ewesticker.utilities](../index.md)/[SharedPrefHelper](index.md)/[getStickerPacksFromPref](get-sticker-packs-from-pref.md)
# getStickerPacksFromPref
[androidJvm]\
fun [getStickerPacksFromPref](get-sticker-packs-from-pref.md)(context: [Context](https://developer.android.com/reference/kotlin/android/content/Context.html)): [List](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html)&lt;[StickerPack](../../com.fredhappyface.ewesticker.model/-sticker-pack/index.md)&gt;

View File

@ -1,12 +0,0 @@
//[app](../../../index.md)/[com.fredhappyface.ewesticker.utilities](../index.md)/[SharedPrefHelper](index.md)
# SharedPrefHelper
[androidJvm]\
object [SharedPrefHelper](index.md)
## Functions
| Name | Summary |
|---|---|
| [getStickerPacksFromPref](get-sticker-packs-from-pref.md) | [androidJvm]<br>fun [getStickerPacksFromPref](get-sticker-packs-from-pref.md)(context: [Context](https://developer.android.com/reference/kotlin/android/content/Context.html)): [List](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html)&lt;[StickerPack](../../com.fredhappyface.ewesticker.model/-sticker-pack/index.md)&gt; |

View File

@ -7,7 +7,6 @@
| Name | Summary | | Name | Summary |
|---|---| |---|---|
| [Cache](-cache/index.md) | [androidJvm]<br>class [Cache](-cache/index.md)(capacity: [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html) = 30)<br>Basically this behaved like an ordered set with some maximum capacity. When this capacity is exceeded an element is removed from the start | | [Cache](-cache/index.md) | [androidJvm]<br>class [Cache](-cache/index.md)(capacity: [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html) = 30)<br>Basically this behaved like an ordered set with some maximum capacity. When this capacity is exceeded an element is removed from the start |
| [SharedPrefHelper](-shared-pref-helper/index.md) | [androidJvm]<br>object [SharedPrefHelper](-shared-pref-helper/index.md) |
| [StickerClickListener](-sticker-click-listener/index.md) | [androidJvm]<br>interface [StickerClickListener](-sticker-click-listener/index.md) | | [StickerClickListener](-sticker-click-listener/index.md) | [androidJvm]<br>interface [StickerClickListener](-sticker-click-listener/index.md) |
| [StickerSender](-sticker-sender/index.md) | [androidJvm]<br>class [StickerSender](-sticker-sender/index.md)(context: [Context](https://developer.android.com/reference/kotlin/android/content/Context.html), toaster: [Toaster](-toaster/index.md), internalDir: [File](https://developer.android.com/reference/kotlin/java/io/File.html), currentInputConnection: [InputConnection](https://developer.android.com/reference/kotlin/android/view/inputmethod/InputConnection.html)?, currentInputEditorInfo: [EditorInfo](https://developer.android.com/reference/kotlin/android/view/inputmethod/EditorInfo.html)?, compatCache: [Cache](-cache/index.md), imageLoader: ImageLoader)<br>The StickerSender Class used to contain all of the methods used for sending a sticker to an InputConnection | | [StickerSender](-sticker-sender/index.md) | [androidJvm]<br>class [StickerSender](-sticker-sender/index.md)(context: [Context](https://developer.android.com/reference/kotlin/android/content/Context.html), toaster: [Toaster](-toaster/index.md), internalDir: [File](https://developer.android.com/reference/kotlin/java/io/File.html), currentInputConnection: [InputConnection](https://developer.android.com/reference/kotlin/android/view/inputmethod/InputConnection.html)?, currentInputEditorInfo: [EditorInfo](https://developer.android.com/reference/kotlin/android/view/inputmethod/EditorInfo.html)?, compatCache: [Cache](-cache/index.md), imageLoader: ImageLoader)<br>The StickerSender Class used to contain all of the methods used for sending a sticker to an InputConnection |
| [Toaster](-toaster/index.md) | [androidJvm]<br>class [Toaster](-toaster/index.md)(context: [Context](https://developer.android.com/reference/kotlin/android/content/Context.html))<br>The Toaster class provides a simplified interface to android.widget.Toast. Pass in the android.content.Context to the constructor and call the 'toast' function (others as below) toaster.state keeps track of an error state or similar. | | [Toaster](-toaster/index.md) | [androidJvm]<br>class [Toaster](-toaster/index.md)(context: [Context](https://developer.android.com/reference/kotlin/android/content/Context.html))<br>The Toaster class provides a simplified interface to android.widget.Toast. Pass in the android.content.Context to the constructor and call the 'toast' function (others as below) toaster.state keeps track of an error state or similar. |

View File

@ -14,4 +14,4 @@
| Name | Summary | | Name | Summary |
|---|---| |---|---|
| [trimString](trim-string.md) | [androidJvm]<br>fun [trimString](trim-string.md)(str: [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)): [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) | | [trimString](trim-string.md) | [androidJvm]<br>fun [trimString](trim-string.md)(str: [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)?): [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)<br>trimString |

View File

@ -3,4 +3,20 @@
# trimString # trimString
[androidJvm]\ [androidJvm]\
fun [trimString](trim-string.md)(str: [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)): [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) fun [trimString](trim-string.md)(str: [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)?): [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)
trimString
for strings longer than 32 chars, trim to 32 chars and add ellipsis ...
#### Return
String
#### Parameters
androidJvm
| | |
|---|---|
| str | : String |

View File

@ -2,7 +2,7 @@ $dokka.format:gfm-v1
$dokka.linkExtension:md $dokka.linkExtension:md
$dokka.location:com.fredhappyface.ewesticker.adapter////PointingToDeclaration/app/com.fredhappyface.ewesticker.adapter/index.md $dokka.location:com.fredhappyface.ewesticker.adapter////PointingToDeclaration/app/com.fredhappyface.ewesticker.adapter/index.md
$dokka.location:com.fredhappyface.ewesticker.adapter/StickerPackAdapter///PointingToDeclaration/app/com.fredhappyface.ewesticker.adapter/-sticker-pack-adapter/index.md $dokka.location:com.fredhappyface.ewesticker.adapter/StickerPackAdapter///PointingToDeclaration/app/com.fredhappyface.ewesticker.adapter/-sticker-pack-adapter/index.md
$dokka.location:com.fredhappyface.ewesticker.adapter/StickerPackAdapter/StickerPackAdapter/#kotlin.Int#kotlin.Array[java.io.File]#com.fredhappyface.ewesticker.utilities.StickerClickListener#android.view.GestureDetector/PointingToDeclaration/app/com.fredhappyface.ewesticker.adapter/-sticker-pack-adapter/-sticker-pack-adapter.md $dokka.location:com.fredhappyface.ewesticker.adapter/StickerPackAdapter/StickerPackAdapter/#kotlin.Int#kotlin.Array[java.io.File]#com.fredhappyface.ewesticker.utilities.StickerClickListener#android.view.GestureDetector#kotlin.Boolean/PointingToDeclaration/app/com.fredhappyface.ewesticker.adapter/-sticker-pack-adapter/-sticker-pack-adapter.md
$dokka.location:com.fredhappyface.ewesticker.adapter/StickerPackAdapter/getItemCount/#/PointingToDeclaration/app/com.fredhappyface.ewesticker.adapter/-sticker-pack-adapter/get-item-count.md $dokka.location:com.fredhappyface.ewesticker.adapter/StickerPackAdapter/getItemCount/#/PointingToDeclaration/app/com.fredhappyface.ewesticker.adapter/-sticker-pack-adapter/get-item-count.md
$dokka.location:com.fredhappyface.ewesticker.adapter/StickerPackAdapter/onBindViewHolder/#com.fredhappyface.ewesticker.view.StickerPackViewHolder#kotlin.Int/PointingToDeclaration/app/com.fredhappyface.ewesticker.adapter/-sticker-pack-adapter/on-bind-view-holder.md $dokka.location:com.fredhappyface.ewesticker.adapter/StickerPackAdapter/onBindViewHolder/#com.fredhappyface.ewesticker.view.StickerPackViewHolder#kotlin.Int/PointingToDeclaration/app/com.fredhappyface.ewesticker.adapter/-sticker-pack-adapter/on-bind-view-holder.md
$dokka.location:com.fredhappyface.ewesticker.adapter/StickerPackAdapter/onCreateViewHolder/#android.view.ViewGroup#kotlin.Int/PointingToDeclaration/app/com.fredhappyface.ewesticker.adapter/-sticker-pack-adapter/on-create-view-holder.md $dokka.location:com.fredhappyface.ewesticker.adapter/StickerPackAdapter/onCreateViewHolder/#android.view.ViewGroup#kotlin.Int/PointingToDeclaration/app/com.fredhappyface.ewesticker.adapter/-sticker-pack-adapter/on-create-view-holder.md
@ -18,8 +18,6 @@ $dokka.location:com.fredhappyface.ewesticker.utilities/Cache/add/#kotlin.String/
$dokka.location:com.fredhappyface.ewesticker.utilities/Cache/fromSharedPref/#kotlin.String/PointingToDeclaration/app/com.fredhappyface.ewesticker.utilities/-cache/from-shared-pref.md $dokka.location:com.fredhappyface.ewesticker.utilities/Cache/fromSharedPref/#kotlin.String/PointingToDeclaration/app/com.fredhappyface.ewesticker.utilities/-cache/from-shared-pref.md
$dokka.location:com.fredhappyface.ewesticker.utilities/Cache/toFiles/#/PointingToDeclaration/app/com.fredhappyface.ewesticker.utilities/-cache/to-files.md $dokka.location:com.fredhappyface.ewesticker.utilities/Cache/toFiles/#/PointingToDeclaration/app/com.fredhappyface.ewesticker.utilities/-cache/to-files.md
$dokka.location:com.fredhappyface.ewesticker.utilities/Cache/toSharedPref/#/PointingToDeclaration/app/com.fredhappyface.ewesticker.utilities/-cache/to-shared-pref.md $dokka.location:com.fredhappyface.ewesticker.utilities/Cache/toSharedPref/#/PointingToDeclaration/app/com.fredhappyface.ewesticker.utilities/-cache/to-shared-pref.md
$dokka.location:com.fredhappyface.ewesticker.utilities/SharedPrefHelper///PointingToDeclaration/app/com.fredhappyface.ewesticker.utilities/-shared-pref-helper/index.md
$dokka.location:com.fredhappyface.ewesticker.utilities/SharedPrefHelper/getStickerPacksFromPref/#android.content.Context/PointingToDeclaration/app/com.fredhappyface.ewesticker.utilities/-shared-pref-helper/get-sticker-packs-from-pref.md
$dokka.location:com.fredhappyface.ewesticker.utilities/StickerClickListener///PointingToDeclaration/app/com.fredhappyface.ewesticker.utilities/-sticker-click-listener/index.md $dokka.location:com.fredhappyface.ewesticker.utilities/StickerClickListener///PointingToDeclaration/app/com.fredhappyface.ewesticker.utilities/-sticker-click-listener/index.md
$dokka.location:com.fredhappyface.ewesticker.utilities/StickerClickListener/onStickerClicked/#java.io.File/PointingToDeclaration/app/com.fredhappyface.ewesticker.utilities/-sticker-click-listener/on-sticker-clicked.md $dokka.location:com.fredhappyface.ewesticker.utilities/StickerClickListener/onStickerClicked/#java.io.File/PointingToDeclaration/app/com.fredhappyface.ewesticker.utilities/-sticker-click-listener/on-sticker-clicked.md
$dokka.location:com.fredhappyface.ewesticker.utilities/StickerClickListener/onStickerLongClicked/#java.io.File/PointingToDeclaration/app/com.fredhappyface.ewesticker.utilities/-sticker-click-listener/on-sticker-long-clicked.md $dokka.location:com.fredhappyface.ewesticker.utilities/StickerClickListener/onStickerLongClicked/#java.io.File/PointingToDeclaration/app/com.fredhappyface.ewesticker.utilities/-sticker-click-listener/on-sticker-long-clicked.md
@ -39,7 +37,7 @@ $dokka.location:com.fredhappyface.ewesticker.view/StickerPackViewHolder///Pointi
$dokka.location:com.fredhappyface.ewesticker.view/StickerPackViewHolder/StickerPackViewHolder/#android.view.View/PointingToDeclaration/app/com.fredhappyface.ewesticker.view/-sticker-pack-view-holder/-sticker-pack-view-holder.md $dokka.location:com.fredhappyface.ewesticker.view/StickerPackViewHolder/StickerPackViewHolder/#android.view.View/PointingToDeclaration/app/com.fredhappyface.ewesticker.view/-sticker-pack-view-holder/-sticker-pack-view-holder.md
$dokka.location:com.fredhappyface.ewesticker.view/StickerPackViewHolder/stickerThumbnail/#/PointingToDeclaration/app/com.fredhappyface.ewesticker.view/-sticker-pack-view-holder/sticker-thumbnail.md $dokka.location:com.fredhappyface.ewesticker.view/StickerPackViewHolder/stickerThumbnail/#/PointingToDeclaration/app/com.fredhappyface.ewesticker.view/-sticker-pack-view-holder/sticker-thumbnail.md
$dokka.location:com.fredhappyface.ewesticker////PointingToDeclaration/app/com.fredhappyface.ewesticker/index.md $dokka.location:com.fredhappyface.ewesticker////PointingToDeclaration/app/com.fredhappyface.ewesticker/index.md
$dokka.location:com.fredhappyface.ewesticker//trimString/#kotlin.String/PointingToDeclaration/app/com.fredhappyface.ewesticker/trim-string.md $dokka.location:com.fredhappyface.ewesticker//trimString/#kotlin.String?/PointingToDeclaration/app/com.fredhappyface.ewesticker/trim-string.md
$dokka.location:com.fredhappyface.ewesticker/ImageKeyboard///PointingToDeclaration/app/com.fredhappyface.ewesticker/-image-keyboard/index.md $dokka.location:com.fredhappyface.ewesticker/ImageKeyboard///PointingToDeclaration/app/com.fredhappyface.ewesticker/-image-keyboard/index.md
$dokka.location:com.fredhappyface.ewesticker/ImageKeyboard/ImageKeyboard/#/PointingToDeclaration/app/com.fredhappyface.ewesticker/-image-keyboard/-image-keyboard.md $dokka.location:com.fredhappyface.ewesticker/ImageKeyboard/ImageKeyboard/#/PointingToDeclaration/app/com.fredhappyface.ewesticker/-image-keyboard/-image-keyboard.md
$dokka.location:com.fredhappyface.ewesticker/ImageKeyboard/onCreate/#/PointingToDeclaration/app/com.fredhappyface.ewesticker/-image-keyboard/on-create.md $dokka.location:com.fredhappyface.ewesticker/ImageKeyboard/onCreate/#/PointingToDeclaration/app/com.fredhappyface.ewesticker/-image-keyboard/on-create.md