Initial commit: Add webtoon viewer

This commit is contained in:
2024-12-19 14:09:30 +01:00
commit 3a566a08fa
642 changed files with 4769 additions and 0 deletions

View File

@@ -0,0 +1,92 @@
package com.webtoonviewer.ui
import android.content.Intent
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import android.widget.CheckBox
import androidx.fragment.app.DialogFragment
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.webtoonviewer.R
import com.webtoonviewer.ui.adapter.TagAdapter
import com.webtoonviewer.ui.data.CheckboxItem
import com.webtoonviewer.utils.SharedPreferencesHelper
class DialogMainSettingsFragment: DialogFragment() {
private lateinit var tagsVisibilityPreferences: SharedPreferencesHelper
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.dialog_main_settings, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
tagsVisibilityPreferences = SharedPreferencesHelper(requireContext(), "tags_visibility")
val checkBoxShowAll: CheckBox = view.findViewById(R.id.checkBoxDialogMainSettingsShowAll)
checkBoxShowAll.isChecked = tagsVisibilityPreferences.getBoolean("showAll", false)
// Initialize RecyclerView
val recyclerView: RecyclerView = view.findViewById(R.id.recyclerViewDialogMainSettingsTagList)
recyclerView.layoutManager = LinearLayoutManager(requireContext())
val tagsItems = loadCheckboxItems()
val tagAdapter = TagAdapter(tagsItems) { position, isChecked ->
tagsItems[position].isChecked = isChecked
if (!isChecked) {
checkBoxShowAll.isChecked = false
}
}
recyclerView.adapter = tagAdapter
checkBoxShowAll.setOnCheckedChangeListener { _, isChecked ->
if (isChecked) {
tagAdapter.setItemsChecked()
}
}
val subMitButton: Button = view.findViewById(R.id.btnDialogMainSettingsSubmit)
subMitButton.setOnClickListener {
var refresh_necessary = false
if (tagsVisibilityPreferences.getBoolean("showAll", false) != checkBoxShowAll.isChecked) {
tagsVisibilityPreferences.putBoolean("showAll", checkBoxShowAll.isChecked)
refresh_necessary = true
}
tagsItems.forEach { item ->
if (tagsVisibilityPreferences.getBoolean(item.text, false) != item.isChecked) {
tagsVisibilityPreferences.putBoolean(item.text, item.isChecked)
refresh_necessary = true
}
}
dismiss()
if (refresh_necessary) {
(activity as? MainActivity)?.refreshActivity() // Refresh the activity
}
}
val dirButton: Button = view.findViewById(R.id.btnDialogMainSettingsDirPage)
dirButton.setOnClickListener {
dismiss()
val intent = Intent(requireContext(), DirectoryActivity::class.java)
startActivity(intent)
}
}
private fun loadCheckboxItems(): MutableList<CheckboxItem> {
val tags = resources.getStringArray(R.array.tag_items)
val items = mutableListOf<CheckboxItem>()
for (tag in tags) {
val isChecked = tagsVisibilityPreferences.getBoolean(tag, false)
items.add(CheckboxItem(tag, isChecked))
}
return items
}
}