From 074d31237cc11b8de0545ed9ba0617de4fea9a72 Mon Sep 17 00:00:00 2001 From: Muhammad Faisal Amir Date: Mon, 8 May 2023 14:14:24 +0700 Subject: [PATCH 1/4] update: add multi language Co-authored-by: frogoboxbot --- .../1.json | 76 +++++++ .../keyboard/common/ext/ContextExt.kt | 10 +- .../frogobox/keyboard/services/KeyboardIME.kt | 3 +- .../com/frogobox/keyboard/util/Constant.kt | 2 + app/src/main/res/values/strings.xml | 14 ++ app/src/main/res/xml/keys_letters_bengali.xml | 215 ++++++++++++++++++ .../main/res/xml/keys_letters_bulgarian.xml | 176 ++++++++++++++ .../res/xml/keys_letters_english_dvorak.xml | 179 +++++++++++++++ .../res/xml/keys_letters_english_qwerty.xml | 178 +++++++++++++++ .../res/xml/keys_letters_english_qwertz.xml | 178 +++++++++++++++ app/src/main/res/xml/keys_letters_french.xml | 159 +++++++++++++ app/src/main/res/xml/keys_letters_german.xml | 178 +++++++++++++++ app/src/main/res/xml/keys_letters_greek.xml | 190 ++++++++++++++++ .../main/res/xml/keys_letters_lithuanian.xml | 178 +++++++++++++++ .../main/res/xml/keys_letters_romanian.xml | 162 +++++++++++++ app/src/main/res/xml/keys_letters_russian.xml | 212 +++++++++++++++++ .../main/res/xml/keys_letters_slovenian.xml | 165 ++++++++++++++ .../res/xml/keys_letters_spanish_qwerty.xml | 176 ++++++++++++++ .../main/res/xml/keys_letters_turkish_q.xml | 186 +++++++++++++++ buildSrc/src/main/kotlin/ProjectSetting.kt | 1 + 20 files changed, 2636 insertions(+), 2 deletions(-) create mode 100644 app/schemas/com.frogobox.keyboard.data.local.db.AppDatabase/1.json create mode 100644 app/src/main/res/xml/keys_letters_bengali.xml create mode 100644 app/src/main/res/xml/keys_letters_bulgarian.xml create mode 100644 app/src/main/res/xml/keys_letters_english_dvorak.xml create mode 100644 app/src/main/res/xml/keys_letters_english_qwerty.xml create mode 100644 app/src/main/res/xml/keys_letters_english_qwertz.xml create mode 100644 app/src/main/res/xml/keys_letters_french.xml create mode 100644 app/src/main/res/xml/keys_letters_german.xml create mode 100644 app/src/main/res/xml/keys_letters_greek.xml create mode 100644 app/src/main/res/xml/keys_letters_lithuanian.xml create mode 100644 app/src/main/res/xml/keys_letters_romanian.xml create mode 100644 app/src/main/res/xml/keys_letters_russian.xml create mode 100644 app/src/main/res/xml/keys_letters_slovenian.xml create mode 100644 app/src/main/res/xml/keys_letters_spanish_qwerty.xml create mode 100644 app/src/main/res/xml/keys_letters_turkish_q.xml diff --git a/app/schemas/com.frogobox.keyboard.data.local.db.AppDatabase/1.json b/app/schemas/com.frogobox.keyboard.data.local.db.AppDatabase/1.json new file mode 100644 index 0000000..85ab0e4 --- /dev/null +++ b/app/schemas/com.frogobox.keyboard.data.local.db.AppDatabase/1.json @@ -0,0 +1,76 @@ +{ + "formatVersion": 1, + "database": { + "version": 1, + "identityHash": "f76c2f5058229a55fe3cb182b8e11113", + "entities": [ + { + "tableName": "auto_text", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `title` TEXT NOT NULL, `label` TEXT NOT NULL, `date` TEXT NOT NULL, `updatedDate` TEXT NOT NULL, `updatedTime` TEXT NOT NULL, `body` TEXT NOT NULL, `isActive` INTEGER NOT NULL)", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "label", + "columnName": "label", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "date", + "columnName": "date", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "updatedDate", + "columnName": "updatedDate", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "updatedTime", + "columnName": "updatedTime", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "body", + "columnName": "body", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "isActive", + "columnName": "isActive", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + } + ], + "views": [], + "setupQueries": [ + "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'f76c2f5058229a55fe3cb182b8e11113')" + ] + } +} \ No newline at end of file diff --git a/app/src/main/java/com/frogobox/keyboard/common/ext/ContextExt.kt b/app/src/main/java/com/frogobox/keyboard/common/ext/ContextExt.kt index 78584ca..fedee65 100644 --- a/app/src/main/java/com/frogobox/keyboard/common/ext/ContextExt.kt +++ b/app/src/main/java/com/frogobox/keyboard/common/ext/ContextExt.kt @@ -8,6 +8,9 @@ import android.graphics.drawable.Drawable import android.widget.ImageView import androidx.core.content.ContextCompat import com.frogobox.keyboard.R +import com.frogobox.keyboard.util.Constant.PREF_KEYBOARD_TYPE +import com.frogobox.keyboard.util.Constant.PREF_ROOT_NAME +import com.frogobox.sdk.delegate.preference.PreferenceDelegatesImpl /** * Created by Faisal Amir on 24/10/22 @@ -45,4 +48,9 @@ fun Context.getStrokeColor() = ContextCompat.getColor(this, R.color.keyboard_bg_ fun Drawable.applyColorFilter(color: Int) = mutate().setColorFilter(color, PorterDuff.Mode.SRC_IN) -fun ImageView.applyColorFilter(color: Int) = setColorFilter(color, PorterDuff.Mode.SRC_IN) \ No newline at end of file +fun ImageView.applyColorFilter(color: Int) = setColorFilter(color, PorterDuff.Mode.SRC_IN) + +fun Context.getKeyboardType(): Int { + val pref = PreferenceDelegatesImpl(this, PREF_ROOT_NAME) + return pref.loadPrefInt(PREF_KEYBOARD_TYPE, R.xml.keys_letters_qwerty) +} \ No newline at end of file diff --git a/app/src/main/java/com/frogobox/keyboard/services/KeyboardIME.kt b/app/src/main/java/com/frogobox/keyboard/services/KeyboardIME.kt index 648afc4..8a0c800 100644 --- a/app/src/main/java/com/frogobox/keyboard/services/KeyboardIME.kt +++ b/app/src/main/java/com/frogobox/keyboard/services/KeyboardIME.kt @@ -23,6 +23,7 @@ import android.widget.EditText import androidx.annotation.RequiresApi import androidx.core.content.ContextCompat import com.frogobox.keyboard.R +import com.frogobox.keyboard.common.ext.getKeyboardType import com.frogobox.keyboard.common.ext.getProperBackgroundColor import com.frogobox.keyboard.common.ext.getProperTextColor import com.frogobox.keyboard.databinding.ItemKeyboardHeaderBinding @@ -622,7 +623,7 @@ class KeyboardIME : InputMethodService(), OnKeyboardActionListener { } private fun getKeyboardLayoutXML(): Int { - return R.xml.keys_letters_qwerty + return baseContext.getKeyboardType() } } \ No newline at end of file diff --git a/app/src/main/java/com/frogobox/keyboard/util/Constant.kt b/app/src/main/java/com/frogobox/keyboard/util/Constant.kt index dcd32d0..bb38960 100644 --- a/app/src/main/java/com/frogobox/keyboard/util/Constant.kt +++ b/app/src/main/java/com/frogobox/keyboard/util/Constant.kt @@ -14,6 +14,8 @@ object Constant { const val PREF_ROOT_NAME = "PREF_ROOT_NAME" + const val PREF_KEYBOARD_TYPE = "PREF_KEYBOARD_TYPE" + object Extra { const val EXTRA_DATA = "EXTRA_DATA" } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 98363f4..8fa84d3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -42,4 +42,18 @@ Animals Network error occurred while downloading. IO error occurred while downloading + + Bengali + Bulgarian + English + French + German + Greek + Lithuanian + Romanian + Russian + Slovenian + Spanish + Turkish + \ No newline at end of file diff --git a/app/src/main/res/xml/keys_letters_bengali.xml b/app/src/main/res/xml/keys_letters_bengali.xml new file mode 100644 index 0000000..a044a58 --- /dev/null +++ b/app/src/main/res/xml/keys_letters_bengali.xml @@ -0,0 +1,215 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/xml/keys_letters_bulgarian.xml b/app/src/main/res/xml/keys_letters_bulgarian.xml new file mode 100644 index 0000000..4fa9a04 --- /dev/null +++ b/app/src/main/res/xml/keys_letters_bulgarian.xml @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/xml/keys_letters_english_dvorak.xml b/app/src/main/res/xml/keys_letters_english_dvorak.xml new file mode 100644 index 0000000..52cf035 --- /dev/null +++ b/app/src/main/res/xml/keys_letters_english_dvorak.xml @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/xml/keys_letters_english_qwerty.xml b/app/src/main/res/xml/keys_letters_english_qwerty.xml new file mode 100644 index 0000000..9fc0225 --- /dev/null +++ b/app/src/main/res/xml/keys_letters_english_qwerty.xml @@ -0,0 +1,178 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/xml/keys_letters_english_qwertz.xml b/app/src/main/res/xml/keys_letters_english_qwertz.xml new file mode 100644 index 0000000..ce85ad7 --- /dev/null +++ b/app/src/main/res/xml/keys_letters_english_qwertz.xml @@ -0,0 +1,178 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/xml/keys_letters_french.xml b/app/src/main/res/xml/keys_letters_french.xml new file mode 100644 index 0000000..d3eb38a --- /dev/null +++ b/app/src/main/res/xml/keys_letters_french.xml @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/xml/keys_letters_german.xml b/app/src/main/res/xml/keys_letters_german.xml new file mode 100644 index 0000000..c4b1924 --- /dev/null +++ b/app/src/main/res/xml/keys_letters_german.xml @@ -0,0 +1,178 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/xml/keys_letters_greek.xml b/app/src/main/res/xml/keys_letters_greek.xml new file mode 100644 index 0000000..f16df9a --- /dev/null +++ b/app/src/main/res/xml/keys_letters_greek.xml @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/xml/keys_letters_lithuanian.xml b/app/src/main/res/xml/keys_letters_lithuanian.xml new file mode 100644 index 0000000..fa34eec --- /dev/null +++ b/app/src/main/res/xml/keys_letters_lithuanian.xml @@ -0,0 +1,178 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/xml/keys_letters_romanian.xml b/app/src/main/res/xml/keys_letters_romanian.xml new file mode 100644 index 0000000..ba28e43 --- /dev/null +++ b/app/src/main/res/xml/keys_letters_romanian.xml @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/xml/keys_letters_russian.xml b/app/src/main/res/xml/keys_letters_russian.xml new file mode 100644 index 0000000..99b6a57 --- /dev/null +++ b/app/src/main/res/xml/keys_letters_russian.xml @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/xml/keys_letters_slovenian.xml b/app/src/main/res/xml/keys_letters_slovenian.xml new file mode 100644 index 0000000..3cfa38f --- /dev/null +++ b/app/src/main/res/xml/keys_letters_slovenian.xml @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/xml/keys_letters_spanish_qwerty.xml b/app/src/main/res/xml/keys_letters_spanish_qwerty.xml new file mode 100644 index 0000000..a95b496 --- /dev/null +++ b/app/src/main/res/xml/keys_letters_spanish_qwerty.xml @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/xml/keys_letters_turkish_q.xml b/app/src/main/res/xml/keys_letters_turkish_q.xml new file mode 100644 index 0000000..54561c6 --- /dev/null +++ b/app/src/main/res/xml/keys_letters_turkish_q.xml @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/buildSrc/src/main/kotlin/ProjectSetting.kt b/buildSrc/src/main/kotlin/ProjectSetting.kt index 64a1173..1acd07e 100644 --- a/buildSrc/src/main/kotlin/ProjectSetting.kt +++ b/buildSrc/src/main/kotlin/ProjectSetting.kt @@ -14,6 +14,7 @@ object ProjectSetting { const val NAME_APP = "Frogo Keyboard" + const val NAME_APP_DEBUG = "$NAME_APP Dev" const val APP_DOMAIN = "com" const val APP_PLAY_CONSOLE = "frogobox" From 1b568f589801d85a3d0f90fe92abc27623a99128 Mon Sep 17 00:00:00 2001 From: Muhammad Faisal Amir Date: Mon, 8 May 2023 14:21:41 +0700 Subject: [PATCH 2/4] update: add multi language activity view model Co-authored-by: frogoboxbot --- app/src/main/AndroidManifest.xml | 3 ++ .../ui/language/KeyboardLanguageActivity.kt | 46 +++++++++++++++++++ .../ui/language/KeyboardLanguageViewModel.kt | 24 ++++++++++ .../frogobox/keyboard/ui/main/MainActivity.kt | 5 ++ .../res/layout/activity_keyboard_language.xml | 11 +++++ app/src/main/res/layout/activity_main.xml | 6 +++ .../res/layout/item_language_keyboard.xml | 24 ++++++++++ 7 files changed, 119 insertions(+) create mode 100644 app/src/main/java/com/frogobox/keyboard/ui/language/KeyboardLanguageActivity.kt create mode 100644 app/src/main/java/com/frogobox/keyboard/ui/language/KeyboardLanguageViewModel.kt create mode 100644 app/src/main/res/layout/activity_keyboard_language.xml create mode 100644 app/src/main/res/layout/item_language_keyboard.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4d785e4..a3cec60 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -37,6 +37,9 @@ android:name=".ui.toggle.ToggleActivity" android:exported="false" /> + + () { + + private val viewModel: KeyboardLanguageViewModel by viewModels() + + override fun setupViewBinding(): ActivityKeyboardLanguageBinding { + return ActivityKeyboardLanguageBinding.inflate(layoutInflater) + } + + override fun setupViewModel() { + super.setupViewModel() + viewModel.apply { + + } + } + + override fun onCreateExt(savedInstanceState: Bundle?) { + super.onCreateExt(savedInstanceState) + setupUI() + } + + private fun setupUI() { + binding.apply { + + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/frogobox/keyboard/ui/language/KeyboardLanguageViewModel.kt b/app/src/main/java/com/frogobox/keyboard/ui/language/KeyboardLanguageViewModel.kt new file mode 100644 index 0000000..37f33f0 --- /dev/null +++ b/app/src/main/java/com/frogobox/keyboard/ui/language/KeyboardLanguageViewModel.kt @@ -0,0 +1,24 @@ +package com.frogobox.keyboard.ui.language + +import com.frogobox.keyboard.common.base.BaseViewModel +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject + +/** + * Created by Faisal Amir on 24/10/22 + * ----------------------------------------- + * E-mail : faisalamircs@gmail.com + * Github : github.com/amirisback + * ----------------------------------------- + * Copyright (C) Frogobox ID / amirisback + * All rights reserved + */ + + +@HiltViewModel +class KeyboardLanguageViewModel @Inject constructor( + +): BaseViewModel() { + + +} \ No newline at end of file diff --git a/app/src/main/java/com/frogobox/keyboard/ui/main/MainActivity.kt b/app/src/main/java/com/frogobox/keyboard/ui/main/MainActivity.kt index e193c24..939cbee 100644 --- a/app/src/main/java/com/frogobox/keyboard/ui/main/MainActivity.kt +++ b/app/src/main/java/com/frogobox/keyboard/ui/main/MainActivity.kt @@ -12,6 +12,7 @@ import com.frogobox.keyboard.common.ext.isDarkThemeOn import com.frogobox.keyboard.databinding.ActivityMainBinding import com.frogobox.keyboard.ui.autotext.AutoTextActivity import com.frogobox.keyboard.ui.detail.DetailActivity +import com.frogobox.keyboard.ui.language.KeyboardLanguageActivity import com.frogobox.keyboard.ui.toggle.ToggleActivity import com.frogobox.sdk.ext.showLogDebug import com.frogobox.sdk.ext.startActivityExt @@ -98,6 +99,10 @@ class MainActivity : BaseMainActivity() { startActivityExt() } + btnMultiLanguage.setOnClickListener { + startActivityExt() + } + } } diff --git a/app/src/main/res/layout/activity_keyboard_language.xml b/app/src/main/res/layout/activity_keyboard_language.xml new file mode 100644 index 0000000..94c44fd --- /dev/null +++ b/app/src/main/res/layout/activity_keyboard_language.xml @@ -0,0 +1,11 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 54ba1f3..77d20af 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -171,6 +171,12 @@ android:layout_height="wrap_content" android:text="Toggle Function" /> +