From 2e9b6cccc3f79d23d20b098fb266e7a551f02b51 Mon Sep 17 00:00:00 2001 From: yangyxd Date: Fri, 15 May 2020 17:41:02 +0800 Subject: [PATCH] =?UTF-8?q?rss=E5=88=97=E8=A1=A8=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E5=B8=83=E5=B1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/legado/app/help/AppConfig.kt | 6 ++ .../app/ui/rss/article/RssArticlesAdapter.kt | 4 +- .../app/ui/rss/article/RssArticlesFragment.kt | 5 +- .../app/ui/rss/article/RssSortActivity.kt | 55 ++++++------------- app/src/main/res/menu/rss_articles.xml | 7 ++- app/src/main/res/values/strings.xml | 1 + 6 files changed, 33 insertions(+), 45 deletions(-) diff --git a/app/src/main/java/io/legado/app/help/AppConfig.kt b/app/src/main/java/io/legado/app/help/AppConfig.kt index 547322cce..c423385e4 100644 --- a/app/src/main/java/io/legado/app/help/AppConfig.kt +++ b/app/src/main/java/io/legado/app/help/AppConfig.kt @@ -132,6 +132,12 @@ object AppConfig { val readBodyToLh: Boolean get() = App.INSTANCE.getPrefBoolean(PreferKey.readBodyToLh, true) val isGooglePlay: Boolean get() = App.INSTANCE.channel == "google" + + var rssLayout: Int + get() = App.INSTANCE.getPrefInt("rssLayoutMode") + set(value) { + App.INSTANCE.putPrefInt("rssLayoutMode", value) + } } val Context.channel: String diff --git a/app/src/main/java/io/legado/app/ui/rss/article/RssArticlesAdapter.kt b/app/src/main/java/io/legado/app/ui/rss/article/RssArticlesAdapter.kt index 00b296359..1c0915d32 100644 --- a/app/src/main/java/io/legado/app/ui/rss/article/RssArticlesAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/rss/article/RssArticlesAdapter.kt @@ -18,8 +18,8 @@ import org.jetbrains.anko.sdk27.listeners.onClick import org.jetbrains.anko.textColorResource -class RssArticlesAdapter(context: Context, val callBack: CallBack) : - SimpleRecyclerAdapter(context, R.layout.item_rss_article) { +class RssArticlesAdapter(context: Context, private val layoutId: Int, val callBack: CallBack) : + SimpleRecyclerAdapter(context, layoutId) { override fun convert(holder: ItemViewHolder, item: RssArticle, payloads: MutableList) { with(holder.itemView) { diff --git a/app/src/main/java/io/legado/app/ui/rss/article/RssArticlesFragment.kt b/app/src/main/java/io/legado/app/ui/rss/article/RssArticlesFragment.kt index f7a1b6bb6..0ecd95d2c 100644 --- a/app/src/main/java/io/legado/app/ui/rss/article/RssArticlesFragment.kt +++ b/app/src/main/java/io/legado/app/ui/rss/article/RssArticlesFragment.kt @@ -51,11 +51,12 @@ class RssArticlesFragment : VMBaseFragment(R.layout.fragme initData() } - private fun initView() { + fun initView() { ATH.applyEdgeEffectColor(recycler_view) recycler_view.layoutManager = LinearLayoutManager(requireContext()) recycler_view.addItemDecoration(VerticalDivider(requireContext())) - adapter = RssArticlesAdapter(requireContext(), this) + var layoutId = R.layout.item_rss_article; + adapter = RssArticlesAdapter(requireContext(), layoutId, this) recycler_view.adapter = adapter loadMoreView = LoadMoreView(requireContext()) adapter.addFooterView(loadMoreView) diff --git a/app/src/main/java/io/legado/app/ui/rss/article/RssSortActivity.kt b/app/src/main/java/io/legado/app/ui/rss/article/RssSortActivity.kt index d7c7087d4..414cc65c4 100644 --- a/app/src/main/java/io/legado/app/ui/rss/article/RssSortActivity.kt +++ b/app/src/main/java/io/legado/app/ui/rss/article/RssSortActivity.kt @@ -9,12 +9,12 @@ import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentStatePagerAdapter import androidx.lifecycle.Observer +import io.legado.app.App import io.legado.app.R import io.legado.app.base.VMBaseActivity +import io.legado.app.help.AppConfig import io.legado.app.ui.rss.source.edit.RssSourceEditActivity -import io.legado.app.utils.getViewModel -import io.legado.app.utils.gone -import io.legado.app.utils.visible +import io.legado.app.utils.* import kotlinx.android.synthetic.main.activity_rss_artivles.* import org.jetbrains.anko.startActivityForResult import java.util.* @@ -26,8 +26,6 @@ class RssSortActivity : VMBaseActivity(R.layout.activity_rss_a private val editSource = 12319 private val fragments = linkedMapOf() private lateinit var adapter: TabFragmentPageAdapter - private val channels = LinkedHashMap() - private var groupMenu: Menu? = null override fun onActivityCreated(savedInstanceState: Bundle?) { adapter = TabFragmentPageAdapter(supportFragmentManager) @@ -37,7 +35,6 @@ class RssSortActivity : VMBaseActivity(R.layout.activity_rss_a title_bar.title = it }) viewModel.initData(intent) { - upChannelMenu() upFragments() } } @@ -48,8 +45,6 @@ class RssSortActivity : VMBaseActivity(R.layout.activity_rss_a } override fun onPrepareOptionsMenu(menu: Menu?): Boolean { - groupMenu = menu - upChannelMenu() return super.onPrepareOptionsMenu(menu) } @@ -63,31 +58,11 @@ class RssSortActivity : VMBaseActivity(R.layout.activity_rss_a viewModel.clearArticles() } } - } - if (item.groupId == R.id.source_channel) { - val key = item.title.toString(); - val 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) - val 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] - val item = groupMenu?.add(R.id.source_channel, Menu.NONE, Menu.NONE, d[0]) - item?.isCheckable = true - val keys = fragments.keys - item?.isChecked = keys.indexOf(d[0]) == view_pager.currentItem + R.id.menu_switch_layout -> { + switchLayout() } } + return super.onCompatOptionsItemSelected(item) } private fun upFragments() { @@ -95,13 +70,7 @@ class RssSortActivity : VMBaseActivity(R.layout.activity_rss_a viewModel.rssSource?.sortUrls()?.forEach { fragments[it.key] = RssArticlesFragment.create(it.key, it.value) } - val sortUrlsSize = fragments.size - if (sortUrlsSize <= 1) { - channels.forEach { - fragments[it.key] = RssArticlesFragment.create(it.key, it.value) - } - } - if (sortUrlsSize == 1) { + if (fragments.size == 1) { tab_layout.gone() } else { tab_layout.visible() @@ -109,6 +78,16 @@ class RssSortActivity : VMBaseActivity(R.layout.activity_rss_a adapter.notifyDataSetChanged() } + /** 切换布局 */ + private fun switchLayout() { + var i = AppConfig.rssLayout + 1 + if (i > 2) i = 0 + AppConfig.rssLayout = i + fragments?.forEach { + it.value?.initView() + }; + } + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) when (requestCode) { diff --git a/app/src/main/res/menu/rss_articles.xml b/app/src/main/res/menu/rss_articles.xml index 831b908a5..055efd8c7 100644 --- a/app/src/main/res/menu/rss_articles.xml +++ b/app/src/main/res/menu/rss_articles.xml @@ -12,8 +12,9 @@ android:title="@string/clear" app:showAsAction="never" /> - - - + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f01493465..5c4fedd62 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -243,6 +243,7 @@ 删除所有 搜索历史 清除 + 切换布局 正文显示标题 书源同步 无最新章节信息