|
|
|
@ -5,6 +5,7 @@ import android.content.Intent |
|
|
|
|
import android.os.Bundle |
|
|
|
|
import android.view.Menu |
|
|
|
|
import android.view.MenuItem |
|
|
|
|
import android.view.SubMenu |
|
|
|
|
import androidx.fragment.app.Fragment |
|
|
|
|
import androidx.fragment.app.FragmentManager |
|
|
|
|
import androidx.fragment.app.FragmentStatePagerAdapter |
|
|
|
@ -17,6 +18,7 @@ import io.legado.app.utils.gone |
|
|
|
|
import io.legado.app.utils.visible |
|
|
|
|
import kotlinx.android.synthetic.main.activity_rss_artivles.* |
|
|
|
|
import org.jetbrains.anko.startActivityForResult |
|
|
|
|
import java.util.LinkedHashMap |
|
|
|
|
|
|
|
|
|
class RssSortActivity : VMBaseActivity<RssSortViewModel>(R.layout.activity_rss_artivles) { |
|
|
|
|
|
|
|
|
@ -25,6 +27,8 @@ class RssSortActivity : VMBaseActivity<RssSortViewModel>(R.layout.activity_rss_a |
|
|
|
|
private val editSource = 12319 |
|
|
|
|
private val fragments = linkedMapOf<String, RssArticlesFragment>() |
|
|
|
|
private lateinit var adapter: TabFragmentPageAdapter |
|
|
|
|
private val channels = LinkedHashMap<String, String>() |
|
|
|
|
private var groupMenu: Menu? = null |
|
|
|
|
|
|
|
|
|
override fun onActivityCreated(savedInstanceState: Bundle?) { |
|
|
|
|
adapter = TabFragmentPageAdapter(supportFragmentManager) |
|
|
|
@ -34,6 +38,7 @@ class RssSortActivity : VMBaseActivity<RssSortViewModel>(R.layout.activity_rss_a |
|
|
|
|
title_bar.title = it |
|
|
|
|
}) |
|
|
|
|
viewModel.initData(intent) { |
|
|
|
|
upChannelMenu() |
|
|
|
|
upFragments() |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -43,6 +48,12 @@ class RssSortActivity : VMBaseActivity<RssSortViewModel>(R.layout.activity_rss_a |
|
|
|
|
return super.onCompatCreateOptionsMenu(menu) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun onPrepareOptionsMenu(menu: Menu?): Boolean { |
|
|
|
|
groupMenu = menu |
|
|
|
|
upChannelMenu() |
|
|
|
|
return super.onPrepareOptionsMenu(menu) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun onCompatOptionsItemSelected(item: MenuItem): Boolean { |
|
|
|
|
when (item.itemId) { |
|
|
|
|
R.id.menu_edit_source -> viewModel.rssSource?.sourceUrl?.let { |
|
|
|
@ -54,15 +65,44 @@ class RssSortActivity : VMBaseActivity<RssSortViewModel>(R.layout.activity_rss_a |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (item.groupId == R.id.source_channel) { |
|
|
|
|
var key = item.title.toString(); |
|
|
|
|
var i = fragments.keys.indexOf(key) |
|
|
|
|
if (i >= 0) |
|
|
|
|
view_pager.currentItem = i |
|
|
|
|
} |
|
|
|
|
return super.onCompatOptionsItemSelected(item) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private fun upChannelMenu() { |
|
|
|
|
// 加入频道列表 |
|
|
|
|
groupMenu?.removeGroup(R.id.source_channel) |
|
|
|
|
var sourceChannel = viewModel.rssSource?.sourceGroup |
|
|
|
|
channels.clear() |
|
|
|
|
sourceChannel?.split("\n\n")?.forEach { c -> |
|
|
|
|
val d = c.split("::") |
|
|
|
|
if (d.size > 1) { |
|
|
|
|
channels[d[0]] = d[1] |
|
|
|
|
var item = groupMenu?.add(R.id.source_channel, Menu.NONE, Menu.NONE, d[0]) |
|
|
|
|
item?.isCheckable = true |
|
|
|
|
var keys = fragments.keys |
|
|
|
|
item?.isChecked = keys.indexOf(d[0]) == view_pager.currentItem |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private fun upFragments() { |
|
|
|
|
fragments.clear() |
|
|
|
|
viewModel.rssSource?.sortUrls()?.forEach { |
|
|
|
|
fragments[it.key] = RssArticlesFragment.create(it.key, it.value) |
|
|
|
|
} |
|
|
|
|
if (fragments.size == 1) { |
|
|
|
|
var sortUrlsSize = fragments.size |
|
|
|
|
if (sortUrlsSize <= 1) { |
|
|
|
|
channels?.forEach { |
|
|
|
|
fragments[it.key] = RssArticlesFragment.create(it.key, it.value) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (sortUrlsSize == 1) { |
|
|
|
|
tab_layout.gone() |
|
|
|
|
} else { |
|
|
|
|
tab_layout.visible() |
|
|
|
|