From f39ac0a011e13556d62d734cb73265dd15d0876b Mon Sep 17 00:00:00 2001 From: kunfei Date: Mon, 18 May 2020 12:11:17 +0800 Subject: [PATCH 1/5] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/io/legado/app/service/help/ReadBook.kt | 4 ++-- .../main/java/io/legado/app/ui/book/read/ReadBookActivity.kt | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/io/legado/app/service/help/ReadBook.kt b/app/src/main/java/io/legado/app/service/help/ReadBook.kt index b7338596c..4b196ec48 100644 --- a/app/src/main/java/io/legado/app/service/help/ReadBook.kt +++ b/app/src/main/java/io/legado/app/service/help/ReadBook.kt @@ -148,7 +148,7 @@ object ReadBook { } private fun curPageChanged() { - callBack?.upPageProgress() + callBack?.pageChanged() if (BaseReadAloudService.isRun) { readAloud(!BaseReadAloudService.pause) } @@ -344,7 +344,7 @@ object ReadBook { interface CallBack { fun upContent(relativePosition: Int = 0, resetPageOffset: Boolean = true) fun upView() - fun upPageProgress() + fun pageChanged() fun contentLoadFinish() } } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt index 0c25c6086..6b267daa0 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt @@ -523,9 +523,10 @@ class ReadBookActivity : VMBaseActivity(R.layout.activity_boo } /** - * 更新进度条 + * 页面改变 */ - override fun upPageProgress() { + override fun pageChanged() { + autoPageProgress = 0 launch { seek_read_page.progress = ReadBook.durPageIndex } From c5d3d5a1ea69d4d274176d34451b3ddfe2fa077b Mon Sep 17 00:00:00 2001 From: kunfei Date: Mon, 18 May 2020 19:43:37 +0800 Subject: [PATCH 2/5] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/legado/app/data/AppDatabase.kt | 14 +++- .../io/legado/app/data/entities/RssSource.kt | 1 + .../io/legado/app/ui/main/my/MyFragment.kt | 10 ++- app/src/main/res/drawable/bg_img_border.xml | 13 ++++ .../main/res/layout/item_rss_article_1.xml | 64 +++++++++++++++++++ .../main/res/layout/item_rss_article_2.xml | 54 ++++++++++++++++ app/src/main/res/menu/rss_articles.xml | 5 ++ app/src/main/res/values-zh-rHK/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + app/src/main/res/xml/pref_main.xml | 22 +++++-- 10 files changed, 175 insertions(+), 10 deletions(-) create mode 100644 app/src/main/res/drawable/bg_img_border.xml create mode 100644 app/src/main/res/layout/item_rss_article_1.xml create mode 100644 app/src/main/res/layout/item_rss_article_2.xml diff --git a/app/src/main/java/io/legado/app/data/AppDatabase.kt b/app/src/main/java/io/legado/app/data/AppDatabase.kt index d2256dd85..0bf73c868 100644 --- a/app/src/main/java/io/legado/app/data/AppDatabase.kt +++ b/app/src/main/java/io/legado/app/data/AppDatabase.kt @@ -19,7 +19,7 @@ import kotlinx.coroutines.launch ReplaceRule::class, SearchBook::class, SearchKeyword::class, Cookie::class, RssSource::class, Bookmark::class, RssArticle::class, RssReadRecord::class, RssStar::class, TxtTocRule::class], - version = 12, + version = 13, exportSchema = true ) abstract class AppDatabase : RoomDatabase() { @@ -31,7 +31,7 @@ abstract class AppDatabase : RoomDatabase() { fun createDatabase(context: Context): AppDatabase { return Room.databaseBuilder(context, AppDatabase::class.java, DATABASE_NAME) .fallbackToDestructiveMigration() - .addMigrations(migration_10_11, migration_11_12) + .addMigrations(migration_10_11, migration_11_12, migration_12_13) .addCallback(object : Callback() { override fun onDestructiveMigration(db: SupportSQLiteDatabase) { GlobalScope.launch { Restore.restoreDatabase(Backup.backupPath) } @@ -62,6 +62,16 @@ abstract class AppDatabase : RoomDatabase() { ) } } + + private val migration_12_13 = object : Migration(12, 13) { + override fun migrate(database: SupportSQLiteDatabase) { + database.execSQL( + """ + ALTER TABLE rssSources ADD articleStyle INTEGER NOT NULL DEFAULT 0 + """ + ) + } + } } abstract fun bookDao(): BookDao diff --git a/app/src/main/java/io/legado/app/data/entities/RssSource.kt b/app/src/main/java/io/legado/app/data/entities/RssSource.kt index a7948e6e7..e30707446 100644 --- a/app/src/main/java/io/legado/app/data/entities/RssSource.kt +++ b/app/src/main/java/io/legado/app/data/entities/RssSource.kt @@ -24,6 +24,7 @@ data class RssSource( var sourceGroup: String? = null, var enabled: Boolean = true, var sortUrl: String? = null, + var articleStyle: Int = 0, //列表规则 var ruleArticles: String? = null, var ruleNextPage: String? = null, diff --git a/app/src/main/java/io/legado/app/ui/main/my/MyFragment.kt b/app/src/main/java/io/legado/app/ui/main/my/MyFragment.kt index d948923e8..88bb95afe 100644 --- a/app/src/main/java/io/legado/app/ui/main/my/MyFragment.kt +++ b/app/src/main/java/io/legado/app/ui/main/my/MyFragment.kt @@ -13,7 +13,7 @@ import io.legado.app.R import io.legado.app.base.BaseFragment import io.legado.app.constant.EventBus import io.legado.app.constant.PreferKey -import io.legado.app.help.channel +import io.legado.app.help.AppConfig import io.legado.app.lib.theme.ATH import io.legado.app.service.WebService import io.legado.app.ui.about.AboutActivity @@ -79,7 +79,13 @@ class MyFragment : BaseFragment(R.layout.fragment_my_config), FileChooserDialog. observeEvent(EventBus.WEB_SERVICE_STOP) { webServicePre?.isChecked = false } - if (requireContext().channel == "google") { + findPreference(PreferKey.themeMode)?.let { + it.setOnPreferenceChangeListener { _, _ -> + view?.post { App.INSTANCE.applyDayNight() } + true + } + } + if (AppConfig.isGooglePlay) { findPreference("aboutCategory") ?.removePreference(findPreference("donate")) } diff --git a/app/src/main/res/drawable/bg_img_border.xml b/app/src/main/res/drawable/bg_img_border.xml new file mode 100644 index 000000000..07783726c --- /dev/null +++ b/app/src/main/res/drawable/bg_img_border.xml @@ -0,0 +1,13 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_rss_article_1.xml b/app/src/main/res/layout/item_rss_article_1.xml new file mode 100644 index 000000000..9c46e1aaf --- /dev/null +++ b/app/src/main/res/layout/item_rss_article_1.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_rss_article_2.xml b/app/src/main/res/layout/item_rss_article_2.xml new file mode 100644 index 000000000..55eaa7aac --- /dev/null +++ b/app/src/main/res/layout/item_rss_article_2.xml @@ -0,0 +1,54 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/rss_articles.xml b/app/src/main/res/menu/rss_articles.xml index 03d187bcd..055efd8c7 100644 --- a/app/src/main/res/menu/rss_articles.xml +++ b/app/src/main/res/menu/rss_articles.xml @@ -12,4 +12,9 @@ android:title="@string/clear" app:showAsAction="never" /> + + \ No newline at end of file diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index b5ba53391..84b579b55 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -670,6 +670,7 @@ 點擊加入 信息 + 切換佈局 主色調 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f01493465..297a4c632 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -675,6 +675,7 @@ 信息 隐藏页眉 隐藏页脚 + 切换布局 主色调 diff --git a/app/src/main/res/xml/pref_main.xml b/app/src/main/res/xml/pref_main.xml index 4486f5276..ba6f0792b 100644 --- a/app/src/main/res/xml/pref_main.xml +++ b/app/src/main/res/xml/pref_main.xml @@ -20,14 +20,24 @@ android:icon="@drawable/ic_cfg_replace" app:iconSpaceReserved="false" /> - + + Date: Mon, 18 May 2020 19:50:13 +0800 Subject: [PATCH 3/5] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/xml/pref_main.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/res/xml/pref_main.xml b/app/src/main/res/xml/pref_main.xml index ba6f0792b..e25834b5f 100644 --- a/app/src/main/res/xml/pref_main.xml +++ b/app/src/main/res/xml/pref_main.xml @@ -48,6 +48,7 @@ app:iconSpaceReserved="false" /> @@ -77,6 +78,7 @@ Date: Mon, 18 May 2020 20:44:16 +0800 Subject: [PATCH 4/5] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/ui/rss/article/RssArticlesAdapter.kt | 4 +- .../app/ui/rss/article/RssArticlesFragment.kt | 2 +- .../app/ui/rss/article/RssSortActivity.kt | 8 +++ .../app/ui/rss/article/RssSortViewModel.kt | 19 +++++++ app/src/main/res/drawable/bg_img_border.xml | 13 ----- .../main/res/layout/item_rss_article_2.xml | 54 ------------------- 6 files changed, 30 insertions(+), 70 deletions(-) delete mode 100644 app/src/main/res/drawable/bg_img_border.xml delete mode 100644 app/src/main/res/layout/item_rss_article_2.xml 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..7b56df2aa 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, 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..201675028 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 @@ -55,7 +55,7 @@ class RssArticlesFragment : VMBaseFragment(R.layout.fragme ATH.applyEdgeEffectColor(recycler_view) recycler_view.layoutManager = LinearLayoutManager(requireContext()) recycler_view.addItemDecoration(VerticalDivider(requireContext())) - adapter = RssArticlesAdapter(requireContext(), this) + adapter = RssArticlesAdapter(requireContext(), activityViewModel.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 2d45bcd70..41fad7292 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 @@ -53,6 +53,10 @@ class RssSortActivity : VMBaseActivity(R.layout.activity_rss_a viewModel.clearArticles() } } + R.id.menu_switch_layout -> { + viewModel.switchLayout() + upFragments() + } } return super.onCompatOptionsItemSelected(item) } @@ -84,6 +88,10 @@ class RssSortActivity : VMBaseActivity(R.layout.activity_rss_a private inner class TabFragmentPageAdapter internal constructor(fm: FragmentManager) : FragmentStatePagerAdapter(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) { + override fun getItemPosition(`object`: Any): Int { + return POSITION_NONE + } + override fun getPageTitle(position: Int): CharSequence? { return fragments.keys.elementAt(position) } diff --git a/app/src/main/java/io/legado/app/ui/rss/article/RssSortViewModel.kt b/app/src/main/java/io/legado/app/ui/rss/article/RssSortViewModel.kt index 4b1149f2e..e65dd37f4 100644 --- a/app/src/main/java/io/legado/app/ui/rss/article/RssSortViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/rss/article/RssSortViewModel.kt @@ -4,6 +4,7 @@ import android.app.Application import android.content.Intent import androidx.lifecycle.MutableLiveData import io.legado.app.App +import io.legado.app.R import io.legado.app.base.BaseViewModel import io.legado.app.data.entities.RssArticle import io.legado.app.data.entities.RssReadRecord @@ -15,6 +16,11 @@ class RssSortViewModel(application: Application) : BaseViewModel(application) { var rssSource: RssSource? = null val titleLiveData = MutableLiveData() var order = System.currentTimeMillis() + val layoutId + get() = when (rssSource?.articleStyle) { + 1 -> R.layout.item_rss_article_1 + else -> R.layout.item_rss_article + } fun initData(intent: Intent, finally: () -> Unit) { execute { @@ -32,6 +38,19 @@ class RssSortViewModel(application: Application) : BaseViewModel(application) { } } + fun switchLayout() { + rssSource?.let { + if (it.articleStyle < 1) { + it.articleStyle = it.articleStyle + 1 + } else { + it.articleStyle = 0 + } + execute { + App.db.rssSourceDao().update(it) + } + } + } + fun read(rssArticle: RssArticle) { execute { App.db.rssArticleDao().insertRecord(RssReadRecord(rssArticle.link)) diff --git a/app/src/main/res/drawable/bg_img_border.xml b/app/src/main/res/drawable/bg_img_border.xml deleted file mode 100644 index 07783726c..000000000 --- a/app/src/main/res/drawable/bg_img_border.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/item_rss_article_2.xml b/app/src/main/res/layout/item_rss_article_2.xml deleted file mode 100644 index 55eaa7aac..000000000 --- a/app/src/main/res/layout/item_rss_article_2.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - \ No newline at end of file From bf7a820d729c03be81627044507702ed10b8ae01 Mon Sep 17 00:00:00 2001 From: kunfei Date: Mon, 18 May 2020 20:48:41 +0800 Subject: [PATCH 5/5] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/assets/updateLog.md | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/assets/updateLog.md b/app/src/main/assets/updateLog.md index 533d8bdc1..df11ed5f9 100644 --- a/app/src/main/assets/updateLog.md +++ b/app/src/main/assets/updateLog.md @@ -5,6 +5,7 @@ **2020/05/18** * 修复http://alanskycn.gitee.io/书源导入失败问题,被屏蔽UA了 +* Rss列表添加样式切换 **2020/05/17** * 自动翻页功能完成