Skip to content

Commit

Permalink
feat: source switch support
Browse files Browse the repository at this point in the history
Signed-off-by: ReChinX <cyuunichin@gmail.com>
  • Loading branch information
ReChinX committed Nov 13, 2018
1 parent 123092f commit 7f7f7bf
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,20 @@ class PreferenceHelper(context: Context) {
private val prefs = context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_PRIVATE)
private val rxPrefs = RxSharedPreferences.create(prefs)


fun fullscreen() = rxPrefs.getBoolean(Constants.PREF_FULL_SCREEN, true)

fun pageTransitions() = rxPrefs.getBoolean(Constants.PREF_ENABLE_TRANSITIONS, true)

fun readerMode() = rxPrefs.getString(Constants.PREF_READER_MODE, "0")

fun hiddenReaderInfo() = rxPrefs.getBoolean(Constants.PREF_HIDE_READER_INFO, false)

fun sourceSwitch(sourceId: Long) = rxPrefs.getBoolean("source_switch_$sourceId", false)

fun setSourceSwitch(sourceId: Long, switcher: Boolean) {
prefs.edit().putBoolean("source_switch_$sourceId", switcher)
.apply()
}
companion object {

private const val PREFERENCES_NAME = "meow_preferences"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import top.rechinx.meow.core.source.Source
import top.rechinx.meow.core.source.SourceManager
import top.rechinx.meow.core.source.model.FilterList
import top.rechinx.meow.data.database.model.Manga
import top.rechinx.meow.data.preference.PreferenceHelper
import top.rechinx.meow.data.repository.CataloguePager
import top.rechinx.meow.exception.NoMoreResultException
import top.rechinx.meow.support.log.L
Expand All @@ -24,6 +25,8 @@ class ResultPresenter(val query: String): BasePresenter<ResultActivity>(), KoinC

private val sourceManager: SourceManager by inject()

private val preferences: PreferenceHelper by inject()

private var stateArray: ArrayList<State> = ArrayList()

var error = 0
Expand All @@ -35,7 +38,9 @@ class ResultPresenter(val query: String): BasePresenter<ResultActivity>(), KoinC

private fun initStateArray() {
stateArray = ArrayList()
for(source in sourceManager.getSources()) {
sourceManager.getSources().filter {
preferences.sourceSwitch(it.id).get()
}.forEach { source ->
val state = State()
state.state = State.STATE_NULL
state.source = source
Expand Down
22 changes: 20 additions & 2 deletions app/src/main/java/top/rechinx/meow/ui/source/SourceAdapter.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,22 @@ import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.item_source.view.*
import org.koin.standalone.KoinComponent
import org.koin.standalone.inject
import top.rechinx.meow.R
import top.rechinx.meow.core.source.Source
import top.rechinx.meow.data.preference.PreferenceHelper
import top.rechinx.meow.ui.base.BaseAdapter

class SourceAdapter(context: Context, list: ArrayList<Source>): BaseAdapter<Source>(context, list) {
class SourceAdapter(context: Context, list: ArrayList<Source>): BaseAdapter<Source>(context, list), KoinComponent {

private lateinit var onItemCheckedListener: OnItemCheckedListener

private val preferences: PreferenceHelper by inject()

fun setOnItemCheckedlistener(listener: OnItemCheckedListener) {
this.onItemCheckedListener = listener
}

override fun getItemDecoration(): RecyclerView.ItemDecoration? {
return object : RecyclerView.ItemDecoration() {
Expand All @@ -25,12 +36,19 @@ class SourceAdapter(context: Context, list: ArrayList<Source>): BaseAdapter<Sour
super.onBindViewHolder(holder, position)
val source = datas[position]
holder.itemView.title.text = source.name
holder.itemView.switchCompat.isChecked = true
holder.itemView.switchCompat.isChecked = preferences.sourceSwitch(source.id).get()
holder.itemView.switchCompat.setOnCheckedChangeListener { buttonView, isChecked ->
onItemCheckedListener.onItemCheckedListener(isChecked, holder.adapterPosition)
}
}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
return ViewHolder(inflater.inflate(R.layout.item_source, parent, false))
}

interface OnItemCheckedListener {
fun onItemCheckedListener(isChecked: Boolean, position: Int)
}

class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import kotlinx.android.synthetic.main.fragment_source.*
import org.koin.android.ext.android.inject
import top.rechinx.meow.R
import top.rechinx.meow.core.source.SourceManager
import top.rechinx.meow.data.preference.PreferenceHelper
import top.rechinx.meow.ui.base.BaseAdapter
import top.rechinx.meow.ui.filter.FilterActivity
import top.rechinx.rikka.ext.gone
Expand All @@ -20,6 +21,7 @@ class SourceFragment: Fragment(), BaseAdapter.OnItemClickListener {

private lateinit var adapter: SourceAdapter
private val sourceManager: SourceManager by inject()
private val preferences: PreferenceHelper by inject()

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_source, container, false)
Expand All @@ -29,6 +31,12 @@ class SourceFragment: Fragment(), BaseAdapter.OnItemClickListener {
super.onViewCreated(view, savedInstanceState)
adapter = SourceAdapter(activity!!, ArrayList())
adapter.setOnItemClickListener(this)
adapter.setOnItemCheckedlistener(object : SourceAdapter.OnItemCheckedListener {
override fun onItemCheckedListener(isChecked: Boolean, position: Int) {
val source = adapter.getItem(position)
preferences.setSourceSwitch(source.id, isChecked)
}
})
recyclerView.itemAnimator = null
recyclerView.setHasFixedSize(true)
adapter.getItemDecoration()?.let { recyclerView.addItemDecoration(it) }
Expand Down

0 comments on commit 7f7f7bf

Please sign in to comment.