Skip to content

Commit

Permalink
Verified working in API Level 21
Browse files Browse the repository at this point in the history
- Newer (than 2.13.x) versions of jackson does not work on API level < 26 in android
  FasterXML/jackson-databind#3702
- Unlinked LettersTabViewModel and Transliterator instantiation
  Transliterator instantiation now uses fragment context instead of
  application context
- Removed unused references to previously tested progress bar
  • Loading branch information
NyxTrail committed Jan 1, 2023
1 parent d204d6e commit 7d115bd
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 23 deletions.
8 changes: 5 additions & 3 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -61,14 +61,16 @@ dependencies {
implementation 'com.google.android.material:material:1.7.0'
implementation 'androidx.preference:preference:1.2.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.fragment:fragment:1.5.4'
implementation 'androidx.fragment:fragment:1.5.5'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.gridlayout:gridlayout:1.0.0'
implementation 'androidx.window:window:1.0.0'
implementation 'androidx.annotation:annotation:1.5.0'
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.fasterxml.jackson.core:jackson-databind:2.14.0'
implementation 'com.fasterxml.jackson.module:jackson-module-kotlin:2.14.0'
// Newer (than 2.13.x) versions of jackson does not work on API level < 26 in android
// https://github.com/FasterXML/jackson-databind/issues/3702
implementation 'com.fasterxml.jackson.core:jackson-databind:2.13.4'
implementation 'com.fasterxml.jackson.module:jackson-module-kotlin:2.13.4'
implementation 'androidx.navigation:navigation-fragment-ktx:2.5.3'
implementation 'androidx.navigation:navigation-ui-ktx:2.5.3'
implementation 'androidx.core:core-ktx:1.9.0'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ import android.widget.*
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.progressindicator.LinearProgressIndicator
import com.google.android.material.textfield.MaterialAutoCompleteTextView
import com.google.android.material.textfield.TextInputLayout
import kotlin.collections.ArrayList
Expand Down Expand Up @@ -68,7 +67,9 @@ class LettersTabFragment: Fragment() {
super.onViewCreated(view, savedInstanceState)
logDebug(logTag, "onViewCreated")

logDebug(logTag, "Letters category wise: ${viewModel.transliterator.languageData.lettersCategoryWise}")
// Initialise the transliterator
viewModel.transliterator = Transliterator(requireContext())
logDebug(logTag, "Letters category wise: ${viewModel.transliterator!!.languageData.lettersCategoryWise}")
letterCategoryListView = view.findViewById(R.id.letter_categories)!!
languageSelector = view.findViewById(R.id.language_selector)
convertToSelector = view.findViewById(R.id.convert_to_selector)
Expand All @@ -80,8 +81,9 @@ class LettersTabFragment: Fragment() {
view.findViewById<View>(R.id.lettersTabInfoButton).setOnClickListener { v: View? ->
logDebug(logTag, "Info button clicked!")
logDebug(logTag,
"Fetching info for transliterating ${viewModel.transliterator.languageData.language} to ${viewModel.targetLanguage}")
val info: HashMap<String, Map<String, String>> = viewModel.transliterator.languageData.info
"Fetching info for transliterating ${viewModel.transliterator!!.languageData.language} " +
"to ${viewModel.targetLanguage}")
val info: HashMap<String, Map<String, String>> = viewModel.transliterator!!.languageData.info
logDebug(logTag, "Data for info: $info")
val lif = LanguageInfoFragment.newInstance(
info["general"]?.get("en") + info[viewModel.targetLanguage.lowercase()]?.get("en"))
Expand All @@ -90,15 +92,14 @@ class LettersTabFragment: Fragment() {

val categoryListViewAdapter = LetterCategoryAdapter(
viewModel.getLanguageData().lettersCategoryWise,
viewModel.transliterator,
viewModel.transliterator!!,
viewModel.targetLanguage,
)
letterCategoryListView.adapter = categoryListViewAdapter
categoryListViewAdapter.submitList(viewModel.transliterator.languageData.categories)
categoryListViewAdapter.submitList(viewModel.transliterator!!.languageData.categories)

logDebug(logTag, "Setting up observers for view model data")
initObservers(view)
view.findViewById<LinearProgressIndicator>(R.id.progress_indicator).visibility = View.GONE
}

// Return an empty array list if we could not find any
Expand All @@ -123,7 +124,7 @@ class LettersTabFragment: Fragment() {
languageListAdapter.setNotifyOnChange(true)

languageTextView?.setAdapter(languageListAdapter)
val upperCasedLanguage = viewModel.transliterator.getLanguage().replaceFirstChar {
val upperCasedLanguage = viewModel.transliterator!!.getLanguage().replaceFirstChar {
if (it.isLowerCase())
it.titlecase()
else
Expand Down Expand Up @@ -215,7 +216,7 @@ class LettersTabFragment: Fragment() {
(letterCategoryListView.adapter as LetterCategoryAdapter).apply {
setLettersCategoryWise(viewModel.getLanguageData().lettersCategoryWise)
updateTargetLanguage(viewModel.targetLanguage)
updateTransliterator(viewModel.transliterator)
updateTransliterator(viewModel.transliterator!!)
logDebug(logTag, "LetterCategoryAdapter Inspection: \n" +
"Item count: ${itemCount} \n" +
"Current List: ${currentList}")
Expand All @@ -240,7 +241,5 @@ class LettersTabFragment: Fragment() {
adapter.updateLetterGrids(letterCategoryListView)
}
}


}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ import androidx.lifecycle.MutableLiveData
class LettersTabViewModel(application: Application): AndroidViewModel(application) {
private val logTag = javaClass.simpleName

var transliterator: Transliterator = Transliterator(application)
var transliterator: Transliterator? = null

// The current language displayed in letters tab
var languageLiveData: MutableLiveData<String> = MutableLiveData()
Expand All @@ -54,18 +54,14 @@ class LettersTabViewModel(application: Application): AndroidViewModel(applicatio
targetLanguageLiveData.value = value
}

init {
// language = transliterator.getLanguage()
}

// Set the transliterator based on a specific language
fun setTransliterator(language: String, context: Context) {
if (transliterator.getLanguage().lowercase() != language.lowercase())
if (transliterator!!.getLanguage().lowercase() != language.lowercase())
transliterator = Transliterator(language, context)
}

// A convenience method to obtain language data
fun getLanguageData(): Language {
return transliterator.languageData
return transliterator!!.languageData
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class InputTextChangedListener(

private val viewModel: PracticeTabViewModel by practiceTabFragment.viewModels()
private val practiceTextTV: TextView = practiceTabFragment.requireView()
.requireViewById(R.id.PracticeTabPracticeTextTV)
.findViewById(R.id.PracticeTabPracticeTextTV)!!

override fun afterTextChanged(s: Editable) {}
override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ import android.content.Context
import android.content.Intent
import java.lang.StringBuilder
import `in`.digistorm.aksharam.activities.initialise.InitialiseAppActivity
import kotlin.math.log

// This class is responsible for the actual transliteration
class Transliterator {
Expand Down

0 comments on commit 7d115bd

Please sign in to comment.