Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix TooManyFunctions in Fragments and MainActivity. #222

Merged
merged 20 commits into from
Oct 25, 2024
Merged
Changes from 1 commit
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
f7372e5
Moving RecyclerView extension function.
growabeard Oct 22, 2024
6b3ff90
Commonizing load fragment functions.
growabeard Oct 22, 2024
7806c94
Moving send email and share scribe to separate ShareHelper class.
growabeard Oct 22, 2024
809e2dd
Moving rate function to separate RatingHelper class.
growabeard Oct 22, 2024
5acd0cf
Updating ItemsViewModel to handle AboutFragment changes.
growabeard Oct 22, 2024
f644fb0
Extracting preferences setting to PreferencesHelper class.
growabeard Oct 22, 2024
546c698
Extracting preferences setting to PreferencesHelper class.
growabeard Oct 22, 2024
565122a
Utilizing the RecylcerView extension function.
growabeard Oct 22, 2024
fc9e217
Fixing ktlint issues.
growabeard Oct 23, 2024
c18db2b
Fixing ktlint issues.
growabeard Oct 23, 2024
f33251a
Add parent Fragment to keep common functions.
growabeard Oct 23, 2024
8bcf1e7
Add parent Fragment to keep common functions.
growabeard Oct 23, 2024
e15c1e8
Moving dark mode preference checking to PreferencesHelper.
growabeard Oct 24, 2024
3be6939
Creating one single function to control action bar visibility.
growabeard Oct 24, 2024
332bba6
Creating one single function to control action bar visibility.
growabeard Oct 24, 2024
604b960
Creating one single function to control action bar visibility.
growabeard Oct 24, 2024
ea00ada
Creating one single function to control action bar button visibility.
growabeard Oct 24, 2024
2f154ca
Formatting fix.
growabeard Oct 24, 2024
76ff2e5
Suppressing TooManyFunctions on giant classes. Another day perhaps?
growabeard Oct 24, 2024
a1d3f43
Flip-flopping the action bar margins settings.
growabeard Oct 25, 2024
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
Prev Previous commit
Next Next commit
Add parent Fragment to keep common functions.
growabeard committed Oct 23, 2024
commit f33251ad202a42c4fe6930f638ceebaffe34bf7d
27 changes: 1 addition & 26 deletions app/src/main/java/be/scri/fragments/AboutFragment.kt
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
package be.scri.fragments

import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.activity.addCallback
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.LinearLayoutManager
import be.scri.BuildConfig
import be.scri.R
@@ -19,7 +17,7 @@ import be.scri.helpers.RatingHelper
import be.scri.helpers.ShareHelper
import be.scri.models.ItemsViewModel

class AboutFragment : Fragment() {
class AboutFragment : ScribeFragment("About") {
private lateinit var binding: FragmentAboutBinding

override fun onCreateView(
@@ -184,31 +182,8 @@ class AboutFragment : Fragment() {
(activity as MainActivity).showHint("hint_shown_about", R.string.app_about_app_hint)
}

private fun loadOtherFragment(
fragment: Fragment,
pageName: String?,
) {
try {
val fragmentTransaction = requireActivity().supportFragmentManager.beginTransaction()
if (pageName != null) {
fragmentTransaction.replace(R.id.fragment_container, fragment, pageName)
} else {
fragmentTransaction.replace(R.id.fragment_container, fragment)
}
fragmentTransaction.addToBackStack(pageName)
fragmentTransaction.commit()
} catch (e: IllegalStateException) {
Log.e("AboutFragment", "Failed to load fragment", e)
}
}

override fun onResume() {
super.onResume()
(activity as MainActivity).showHint("hint_shown_about", R.string.app_about_app_hint)
}

override fun onPause() {
super.onPause()
(activity as MainActivity).hideHint()
}
}
33 changes: 33 additions & 0 deletions app/src/main/java/be/scri/fragments/ScribeFragment.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package be.scri.fragments

import android.util.Log
import androidx.fragment.app.Fragment
import be.scri.R
import be.scri.activities.MainActivity

abstract class ScribeFragment(
val fragmentName: String,
) : Fragment() {
override fun onPause() {
super.onPause()
(activity as MainActivity).hideHint()
}

protected fun loadOtherFragment(
fragment: Fragment,
pageName: String?,
) {
try {
val fragmentTransaction = requireActivity().supportFragmentManager.beginTransaction()
if (pageName != null) {
fragmentTransaction.replace(R.id.fragment_container, fragment, pageName)
} else {
fragmentTransaction.replace(R.id.fragment_container, fragment)
}
fragmentTransaction.addToBackStack(pageName)
fragmentTransaction.commit()
} catch (e: IllegalStateException) {
Log.e("${fragmentName}Fragment", "Failed to load fragment", e)
}
}
}
45 changes: 16 additions & 29 deletions app/src/main/java/be/scri/fragments/SettingsFragment.kt
Original file line number Diff line number Diff line change
@@ -16,7 +16,6 @@ import android.view.ViewGroup
import android.view.inputmethod.InputMethodManager
import androidx.activity.addCallback
import androidx.appcompat.app.AppCompatDelegate
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.LinearLayoutManager
import be.scri.R
import be.scri.activities.MainActivity
@@ -28,7 +27,7 @@ import be.scri.helpers.PreferencesHelper
import be.scri.models.SwitchItem
import be.scri.models.TextItem

class SettingsFragment : Fragment() {
class SettingsFragment : ScribeFragment("Settings") {
private lateinit var binding: FragmentSettingsBinding
private var isDecorationSet: Boolean = false

@@ -61,7 +60,8 @@ class SettingsFragment : Fragment() {
val enabledInputMethods = imm.enabledInputMethodList
for (inputMethod in enabledInputMethods) {
if (inputMethod.packageName == "be.scri.debug") {
setupItemVisibility()
binding.btnInstall.visibility = View.INVISIBLE
binding.selectLanguage.visibility = View.VISIBLE
}
}

@@ -147,7 +147,8 @@ class SettingsFragment : Fragment() {
val enabledInputMethods = imm.enabledInputMethodList
for (inputMethod in enabledInputMethods) {
if (inputMethod.packageName == "be.scri.debug") {
setupItemVisibility()
binding.btnInstall.visibility = View.INVISIBLE
binding.selectLanguage.visibility = View.VISIBLE
}
}
val recyclerView = binding.recyclerView2
@@ -184,28 +185,24 @@ class SettingsFragment : Fragment() {
TextItem(
text = localizeLanguage,
image = R.drawable.right_arrow,
action = { loadLanguageSettingsFragment(language) },
action = {
loadOtherFragment(
LanguageSettingsFragment().apply {
arguments =
Bundle().apply {
putString("LANGUAGE_EXTRA", language)
}
},
"LanguageFragment",
)
},
language = language,
),
)
}
return list
}

private fun loadLanguageSettingsFragment(language: String) {
val fragment =
LanguageSettingsFragment().apply {
arguments =
Bundle().apply {
putString("LANGUAGE_EXTRA", language)
}
}
val fragmentTransaction = requireActivity().supportFragmentManager.beginTransaction()
fragmentTransaction.replace(R.id.fragment_container, fragment, "LanguageFragment")
fragmentTransaction.addToBackStack("LanguageFragment")
fragmentTransaction.commit()
}

private fun setupKeyboardLanguage(): MutableList<String> {
val imm = requireActivity().getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
val enabledInputMethods = imm.enabledInputMethodList
@@ -235,19 +232,9 @@ class SettingsFragment : Fragment() {
requireActivity().recreate()
}

private fun setupItemVisibility() {
binding.btnInstall.visibility = View.INVISIBLE
binding.selectLanguage.visibility = View.VISIBLE
}

override fun onResume() {
super.onResume()
(activity as MainActivity).showHint("hint_shown_settings", R.string.app_settings_app_hint)
setupRecyclerView2()
}

override fun onPause() {
super.onPause()
(activity as MainActivity).hideHint()
}
}