From 510bf822837e4b5d94f6b1b4bf33a791cafd41d9 Mon Sep 17 00:00:00 2001 From: GKF Date: Thu, 6 Jun 2019 16:39:56 +0800 Subject: [PATCH 01/66] up --- .../ui/main/booksource/BookSourceAdapter.kt | 38 ++++++++++ app/src/main/res/layout/item_book_source.xml | 73 +++++++++++++++++++ 2 files changed, 111 insertions(+) create mode 100644 app/src/main/res/layout/item_book_source.xml diff --git a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt index 4946cbe06..83fa15094 100644 --- a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt @@ -1,2 +1,40 @@ package io.legado.app.ui.main.booksource +import android.view.View +import android.view.ViewGroup +import androidx.paging.PagedListAdapter +import androidx.recyclerview.widget.DiffUtil +import androidx.recyclerview.widget.RecyclerView +import io.legado.app.data.entities.Source + +class BookSourceAdapter : PagedListAdapter(DIFF_CALLBACK) { + + companion object { + + @JvmField + val DIFF_CALLBACK = object : DiffUtil.ItemCallback() { + override fun areItemsTheSame(oldItem: Source, newItem: Source): Boolean = + oldItem.id == newItem.id + + override fun areContentsTheSame(oldItem: Source, newItem: Source): Boolean = + oldItem.id == newItem.id + && oldItem.name == newItem.name + && oldItem.group == newItem.group + && oldItem.isEnabled == newItem.isEnabled + } + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { + TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + } + + + override fun onBindViewHolder(holder: MyViewHolder, position: Int) { + + } + + + class MyViewHolder(view: View) : RecyclerView.ViewHolder(view) { + + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/item_book_source.xml b/app/src/main/res/layout/item_book_source.xml new file mode 100644 index 000000000..c7b5e9d41 --- /dev/null +++ b/app/src/main/res/layout/item_book_source.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 160793f3ae2008c57271abdac2e0b5c5684e0629 Mon Sep 17 00:00:00 2001 From: gedoor Date: Thu, 6 Jun 2019 21:12:12 +0800 Subject: [PATCH 02/66] =?UTF-8?q?=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/base/BaseFragment.kt | 4 +++- .../ui/main/booksource/BookSourceAdapter.kt | 3 ++- .../ui/main/booksource/BookSourceFragment.kt | 20 +++++++++++++++++++ .../main/res/layout/fragment_book_source.xml | 5 +++++ 4 files changed, 30 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/io/legado/app/base/BaseFragment.kt b/app/src/main/java/io/legado/app/base/BaseFragment.kt index 0a35d8a1f..559631422 100644 --- a/app/src/main/java/io/legado/app/base/BaseFragment.kt +++ b/app/src/main/java/io/legado/app/base/BaseFragment.kt @@ -6,9 +6,11 @@ import android.view.MenuItem import androidx.appcompat.view.SupportMenuInflater import androidx.appcompat.widget.Toolbar import androidx.fragment.app.Fragment +import androidx.lifecycle.LifecycleOwner +import androidx.lifecycle.LifecycleRegistry import io.legado.app.utils.setIconColor -abstract class BaseFragment(contentLayoutId: Int = 0) : Fragment(contentLayoutId) { +abstract class BaseFragment(contentLayoutId: Int = 0) : Fragment(contentLayoutId){ var supportToolbar: Toolbar? = null private set diff --git a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt index 83fa15094..ae5a9d506 100644 --- a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt @@ -1,5 +1,6 @@ package io.legado.app.ui.main.booksource +import android.content.Context import android.view.View import android.view.ViewGroup import androidx.paging.PagedListAdapter @@ -7,7 +8,7 @@ import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.RecyclerView import io.legado.app.data.entities.Source -class BookSourceAdapter : PagedListAdapter(DIFF_CALLBACK) { +class BookSourceAdapter(context : Context) : PagedListAdapter(DIFF_CALLBACK) { companion object { diff --git a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt index 55e9eb9e3..3729409af 100644 --- a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt +++ b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt @@ -4,14 +4,23 @@ import android.os.Bundle import android.view.Menu import android.view.MenuItem import android.view.View +import androidx.lifecycle.LiveData +import androidx.paging.PagedList +import androidx.recyclerview.widget.LinearLayoutManager import io.legado.app.R import io.legado.app.base.BaseFragment +import io.legado.app.data.entities.Source +import kotlinx.android.synthetic.main.fragment_book_source.* import kotlinx.android.synthetic.main.view_titlebar.* class BookSourceFragment : BaseFragment(R.layout.fragment_book_source) { + private lateinit var adapter : BookSourceAdapter + private var sourceLiveDate : LiveData>? = null + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { setSupportToolbar(toolbar) + initRecyclerView() } override fun onCompatCreateOptionsMenu(menu: Menu) { @@ -22,5 +31,16 @@ class BookSourceFragment : BaseFragment(R.layout.fragment_book_source) { } + private fun initRecyclerView() { + recycler_view.layoutManager = LinearLayoutManager(context) + context?.let { + adapter = BookSourceAdapter(it) + recycler_view.adapter = adapter + } + + } + private fun initDataObservers() { + + } } \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_book_source.xml b/app/src/main/res/layout/fragment_book_source.xml index d1ec2da0a..1fd3e5cd8 100644 --- a/app/src/main/res/layout/fragment_book_source.xml +++ b/app/src/main/res/layout/fragment_book_source.xml @@ -14,4 +14,9 @@ app:layout_constraintTop_toTopOf="parent" app:title="@string/book_source"/> + + \ No newline at end of file From f5045bdc0875da9cdba1b3128618fc748067121c Mon Sep 17 00:00:00 2001 From: gedoor Date: Thu, 6 Jun 2019 22:08:06 +0800 Subject: [PATCH 03/66] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/legado/app/constant/DbTable.kt | 7 +++++++ .../main/java/io/legado/app/data/AppDatabase.kt | 4 ++-- .../main/java/io/legado/app/data/dao/BookDao.kt | 12 ++++++------ .../java/io/legado/app/data/dao/BookSourceDao.kt | 14 ++++++++++++++ .../java/io/legado/app/data/dao/ReplaceRuleDao.kt | 3 ++- .../main/java/io/legado/app/data/entities/Book.kt | 3 ++- .../app/data/entities/{Source.kt => BookSource.kt} | 5 +++-- .../legado/app/data/entities/ExploreSearchUrl.kt | 2 +- .../io/legado/app/data/entities/ReplaceRule.kt | 3 ++- .../app/ui/main/booksource/BookSourceAdapter.kt | 10 +++++----- .../app/ui/main/booksource/BookSourceFragment.kt | 14 ++++++++++---- 11 files changed, 54 insertions(+), 23 deletions(-) create mode 100644 app/src/main/java/io/legado/app/constant/DbTable.kt create mode 100644 app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt rename app/src/main/java/io/legado/app/data/entities/{Source.kt => BookSource.kt} (96%) diff --git a/app/src/main/java/io/legado/app/constant/DbTable.kt b/app/src/main/java/io/legado/app/constant/DbTable.kt new file mode 100644 index 000000000..11e8b2fb5 --- /dev/null +++ b/app/src/main/java/io/legado/app/constant/DbTable.kt @@ -0,0 +1,7 @@ +package io.legado.app.constant + +object DbTable { + const val books = "books" + const val book_sources = "book_sources" + const val replace_rules = "replace_rules" +} \ No newline at end of file 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 4e3be84f6..bd1ff6664 100644 --- a/app/src/main/java/io/legado/app/data/AppDatabase.kt +++ b/app/src/main/java/io/legado/app/data/AppDatabase.kt @@ -8,10 +8,10 @@ import androidx.room.migration.Migration import androidx.sqlite.db.SupportSQLiteDatabase import io.legado.app.data.dao.BookDao import io.legado.app.data.dao.ReplaceRuleDao +import io.legado.app.data.dao.BookSourceDao import io.legado.app.data.entities.Book import io.legado.app.data.entities.Chapter import io.legado.app.data.entities.ReplaceRule -import javax.xml.transform.Source @Database(entities = [Book::class, Chapter::class, ReplaceRule::class], version = 1, exportSchema = true) @@ -51,5 +51,5 @@ abstract class AppDatabase : RoomDatabase() { abstract fun bookDao(): BookDao abstract fun replaceRuleDao(): ReplaceRuleDao - + abstract fun sourceDao() : BookSourceDao } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/data/dao/BookDao.kt b/app/src/main/java/io/legado/app/data/dao/BookDao.kt index 0ea2baac1..a2cd9d7e7 100644 --- a/app/src/main/java/io/legado/app/data/dao/BookDao.kt +++ b/app/src/main/java/io/legado/app/data/dao/BookDao.kt @@ -6,25 +6,25 @@ import androidx.room.Dao import androidx.room.Insert import androidx.room.OnConflictStrategy import androidx.room.Query +import io.legado.app.constant.DbTable import io.legado.app.data.entities.Book - @Dao interface BookDao { - @Query("SELECT * FROM books WHERE `group` = :group") + @Query("SELECT * FROM ${DbTable.books} WHERE `group` = :group") fun observeByGroup(group: Int): DataSource.Factory - @Query("SELECT descUrl FROM books WHERE `group` = :group") + @Query("SELECT descUrl FROM ${DbTable.books} WHERE `group` = :group") fun observeUrlsByGroup(group: Int): LiveData> - @Query("SELECT * FROM books WHERE `name` in (:names)") + @Query("SELECT * FROM ${DbTable.books} WHERE `name` in (:names)") fun findByName(vararg names: String): List - @get:Query("SELECT descUrl FROM books") + @get:Query("SELECT descUrl FROM ${DbTable.books}") val allBookUrls: List - @get:Query("SELECT COUNT(*) FROM books") + @get:Query("SELECT COUNT(*) FROM ${DbTable.books}") val allBookCount: Int @Insert(onConflict = OnConflictStrategy.REPLACE) diff --git a/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt b/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt new file mode 100644 index 000000000..36e2a53de --- /dev/null +++ b/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt @@ -0,0 +1,14 @@ +package io.legado.app.data.dao + +import androidx.paging.DataSource +import androidx.room.Dao +import androidx.room.Query +import io.legado.app.constant.DbTable +import io.legado.app.data.entities.BookSource + +@Dao +interface BookSourceDao { + + @Query("select * from ${DbTable.book_sources} where ") + fun observeAll(): DataSource.Factory +} \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/data/dao/ReplaceRuleDao.kt b/app/src/main/java/io/legado/app/data/dao/ReplaceRuleDao.kt index d4a2073c0..c09c9037e 100644 --- a/app/src/main/java/io/legado/app/data/dao/ReplaceRuleDao.kt +++ b/app/src/main/java/io/legado/app/data/dao/ReplaceRuleDao.kt @@ -3,13 +3,14 @@ package io.legado.app.data.dao import androidx.lifecycle.LiveData import androidx.paging.DataSource import androidx.room.* +import io.legado.app.constant.DbTable import io.legado.app.data.entities.ReplaceRule @Dao interface ReplaceRuleDao { - @Query("SELECT * FROM replace_rules ORDER BY sortOrder ASC") + @Query("SELECT * FROM ${DbTable.replace_rules} ORDER BY sortOrder ASC") fun observeAll(): DataSource.Factory @Query("SELECT id FROM replace_rules ORDER BY sortOrder ASC") diff --git a/app/src/main/java/io/legado/app/data/entities/Book.kt b/app/src/main/java/io/legado/app/data/entities/Book.kt index 78b3694e8..4f49cc7ef 100644 --- a/app/src/main/java/io/legado/app/data/entities/Book.kt +++ b/app/src/main/java/io/legado/app/data/entities/Book.kt @@ -3,10 +3,11 @@ package io.legado.app.data.entities import android.os.Parcelable import androidx.room.* import io.legado.app.constant.AppConst.NOT_AVAILABLE +import io.legado.app.constant.DbTable import kotlinx.android.parcel.Parcelize @Parcelize -@Entity(tableName = "books", indices = [(Index(value = ["descUrl"], unique = true))]) +@Entity(tableName = DbTable.books, indices = [(Index(value = ["descUrl"], unique = true))]) data class Book(@PrimaryKey var descUrl: String = "", // 详情页Url(本地书源存储完整文件路径) var tocUrl: String = "", // 目录页Url (toc=table of Contents) diff --git a/app/src/main/java/io/legado/app/data/entities/Source.kt b/app/src/main/java/io/legado/app/data/entities/BookSource.kt similarity index 96% rename from app/src/main/java/io/legado/app/data/entities/Source.kt rename to app/src/main/java/io/legado/app/data/entities/BookSource.kt index 5399384d7..4867d5dd9 100644 --- a/app/src/main/java/io/legado/app/data/entities/Source.kt +++ b/app/src/main/java/io/legado/app/data/entities/BookSource.kt @@ -3,16 +3,17 @@ package io.legado.app.data.entities import android.os.Parcelable import androidx.room.* import io.legado.app.constant.AppUtils.GSON_CONVERTER +import io.legado.app.constant.DbTable import io.legado.app.data.entities.rule.* import kotlinx.android.parcel.IgnoredOnParcel import kotlinx.android.parcel.Parcelize @Parcelize @Entity( - tableName = "sources", + tableName = DbTable.book_sources, indices = [(Index(value = ["sourceId"])), (Index(value = ["origin"], unique = false))] ) -data class Source ( +data class BookSource ( @PrimaryKey(autoGenerate = true) @ColumnInfo(name = "sourceId") var id: Int = 0, // 编号 diff --git a/app/src/main/java/io/legado/app/data/entities/ExploreSearchUrl.kt b/app/src/main/java/io/legado/app/data/entities/ExploreSearchUrl.kt index 2df63b4bb..97a4d2bfb 100644 --- a/app/src/main/java/io/legado/app/data/entities/ExploreSearchUrl.kt +++ b/app/src/main/java/io/legado/app/data/entities/ExploreSearchUrl.kt @@ -10,7 +10,7 @@ import kotlinx.android.parcel.Parcelize @Parcelize @Entity(tableName = "explore_search_urls", indices = [(Index(value = ["sourceId", "url"], unique = true))], - foreignKeys = [(ForeignKey(entity = Source::class, + foreignKeys = [(ForeignKey(entity = BookSource::class, parentColumns = ["sourceId"], childColumns = ["sourceId"], onDelete = ForeignKey.CASCADE))]) // 删除书源时自动删除章节 diff --git a/app/src/main/java/io/legado/app/data/entities/ReplaceRule.kt b/app/src/main/java/io/legado/app/data/entities/ReplaceRule.kt index 8b5a0fda6..6152c3bfd 100644 --- a/app/src/main/java/io/legado/app/data/entities/ReplaceRule.kt +++ b/app/src/main/java/io/legado/app/data/entities/ReplaceRule.kt @@ -5,10 +5,11 @@ import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.Index import androidx.room.PrimaryKey +import io.legado.app.constant.DbTable import kotlinx.android.parcel.Parcelize @Parcelize -@Entity(tableName = "replace_rules", +@Entity(tableName = DbTable.replace_rules, indices = [(Index(value = ["id"]))]) data class ReplaceRule( @PrimaryKey(autoGenerate = true) diff --git a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt index ae5a9d506..f21f087e9 100644 --- a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt @@ -6,18 +6,18 @@ import android.view.ViewGroup import androidx.paging.PagedListAdapter import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.RecyclerView -import io.legado.app.data.entities.Source +import io.legado.app.data.entities.BookSource -class BookSourceAdapter(context : Context) : PagedListAdapter(DIFF_CALLBACK) { +class BookSourceAdapter(context : Context) : PagedListAdapter(DIFF_CALLBACK) { companion object { @JvmField - val DIFF_CALLBACK = object : DiffUtil.ItemCallback() { - override fun areItemsTheSame(oldItem: Source, newItem: Source): Boolean = + val DIFF_CALLBACK = object : DiffUtil.ItemCallback() { + override fun areItemsTheSame(oldItem: BookSource, newItem: BookSource): Boolean = oldItem.id == newItem.id - override fun areContentsTheSame(oldItem: Source, newItem: Source): Boolean = + override fun areContentsTheSame(oldItem: BookSource, newItem: BookSource): Boolean = oldItem.id == newItem.id && oldItem.name == newItem.name && oldItem.group == newItem.group diff --git a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt index 3729409af..da499604f 100644 --- a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt +++ b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt @@ -5,22 +5,26 @@ import android.view.Menu import android.view.MenuItem import android.view.View import androidx.lifecycle.LiveData +import androidx.lifecycle.Observer +import androidx.paging.LivePagedListBuilder import androidx.paging.PagedList import androidx.recyclerview.widget.LinearLayoutManager +import io.legado.app.App import io.legado.app.R import io.legado.app.base.BaseFragment -import io.legado.app.data.entities.Source +import io.legado.app.data.entities.BookSource import kotlinx.android.synthetic.main.fragment_book_source.* import kotlinx.android.synthetic.main.view_titlebar.* class BookSourceFragment : BaseFragment(R.layout.fragment_book_source) { - private lateinit var adapter : BookSourceAdapter - private var sourceLiveDate : LiveData>? = null + private lateinit var adapter: BookSourceAdapter + private var bookSourceLiveDate: LiveData>? = null override fun onViewCreated(view: View, savedInstanceState: Bundle?) { setSupportToolbar(toolbar) initRecyclerView() + initDataObservers() } override fun onCompatCreateOptionsMenu(menu: Menu) { @@ -41,6 +45,8 @@ class BookSourceFragment : BaseFragment(R.layout.fragment_book_source) { } private fun initDataObservers() { - + bookSourceLiveDate?.removeObservers(viewLifecycleOwner) + bookSourceLiveDate = LivePagedListBuilder(App.db.sourceDao().observeAll(), 30).build() + bookSourceLiveDate?.observe(viewLifecycleOwner, Observer { adapter.submitList(it) }) } } \ No newline at end of file From d1aab6603438414ef184d84bddfc292bb867a5d0 Mon Sep 17 00:00:00 2001 From: gedoor Date: Thu, 6 Jun 2019 22:12:01 +0800 Subject: [PATCH 04/66] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/legado/app/data/dao/ReplaceRuleDao.kt | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/io/legado/app/data/dao/ReplaceRuleDao.kt b/app/src/main/java/io/legado/app/data/dao/ReplaceRuleDao.kt index c09c9037e..3435eef62 100644 --- a/app/src/main/java/io/legado/app/data/dao/ReplaceRuleDao.kt +++ b/app/src/main/java/io/legado/app/data/dao/ReplaceRuleDao.kt @@ -13,31 +13,31 @@ interface ReplaceRuleDao { @Query("SELECT * FROM ${DbTable.replace_rules} ORDER BY sortOrder ASC") fun observeAll(): DataSource.Factory - @Query("SELECT id FROM replace_rules ORDER BY sortOrder ASC") + @Query("SELECT id FROM ${DbTable.replace_rules} ORDER BY sortOrder ASC") fun observeAllIds(): LiveData> - @get:Query("SELECT MAX(sortOrder) FROM replace_rules") + @get:Query("SELECT MAX(sortOrder) FROM ${DbTable.replace_rules}") val maxOrder: Int - @get:Query("SELECT * FROM replace_rules ORDER BY sortOrder ASC") + @get:Query("SELECT * FROM ${DbTable.replace_rules} ORDER BY sortOrder ASC") val all: List - @get:Query("SELECT * FROM replace_rules WHERE isEnabled = 1 ORDER BY sortOrder ASC") + @get:Query("SELECT * FROM ${DbTable.replace_rules} WHERE isEnabled = 1 ORDER BY sortOrder ASC") val allEnabled: List - @Query("SELECT * FROM replace_rules WHERE id = :id") + @Query("SELECT * FROM ${DbTable.replace_rules} WHERE id = :id") fun findById(id: Int): ReplaceRule? - @Query("SELECT * FROM replace_rules WHERE id in (:ids)") + @Query("SELECT * FROM ${DbTable.replace_rules} WHERE id in (:ids)") fun findByIds(vararg ids: Int): List - @Query("SELECT * FROM replace_rules WHERE isEnabled = 1 AND scope LIKE '%' || :scope || '%'") + @Query("SELECT * FROM ${DbTable.replace_rules} WHERE isEnabled = 1 AND scope LIKE '%' || :scope || '%'") fun findEnabledByScope(scope: String): List - @get:Query("SELECT COUNT(*) - SUM(isEnabled) FROM replace_rules") + @get:Query("SELECT COUNT(*) - SUM(isEnabled) FROM ${DbTable.replace_rules}") val summary: Int - @Query("UPDATE replace_rules SET isEnabled = :enable") + @Query("UPDATE ${DbTable.replace_rules} SET isEnabled = :enable") fun enableAll(enable: Boolean) @Insert(onConflict = OnConflictStrategy.REPLACE) From d5b78fa1e25d1a5b7975fe6e89870da671aa015e Mon Sep 17 00:00:00 2001 From: gedoor Date: Thu, 6 Jun 2019 22:15:14 +0800 Subject: [PATCH 05/66] =?UTF-8?q?=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/data/AppDatabase.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 bd1ff6664..819298f55 100644 --- a/app/src/main/java/io/legado/app/data/AppDatabase.kt +++ b/app/src/main/java/io/legado/app/data/AppDatabase.kt @@ -10,12 +10,12 @@ import io.legado.app.data.dao.BookDao import io.legado.app.data.dao.ReplaceRuleDao import io.legado.app.data.dao.BookSourceDao import io.legado.app.data.entities.Book +import io.legado.app.data.entities.BookSource import io.legado.app.data.entities.Chapter import io.legado.app.data.entities.ReplaceRule -@Database(entities = [Book::class, Chapter::class, ReplaceRule::class], version = 1, exportSchema = true) -// @TypeConverters(Converters::class) +@Database(entities = [Book::class, BookSource::class, Chapter::class, ReplaceRule::class], version = 1, exportSchema = true) abstract class AppDatabase : RoomDatabase() { companion object { From d90ea77f08d047ffd063ab9e977de8fd7f52c97d Mon Sep 17 00:00:00 2001 From: gedoor Date: Thu, 6 Jun 2019 23:26:04 +0800 Subject: [PATCH 06/66] =?UTF-8?q?=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/data/entities/Chapter.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/io/legado/app/data/entities/Chapter.kt b/app/src/main/java/io/legado/app/data/entities/Chapter.kt index 724ae6258..3513143d3 100644 --- a/app/src/main/java/io/legado/app/data/entities/Chapter.kt +++ b/app/src/main/java/io/legado/app/data/entities/Chapter.kt @@ -10,12 +10,13 @@ import kotlinx.android.parcel.Parcelize @Parcelize @Entity(tableName = "chapters", + primaryKeys = ["url", "bookUrl"], indices = [(Index(value = ["url"], unique = true)), (Index(value = ["bookUrl", "index"], unique = true))], foreignKeys = [(ForeignKey(entity = Book::class, parentColumns = ["descUrl"], childColumns = ["bookUrl"], onDelete = ForeignKey.CASCADE))]) // 删除书籍时自动删除章节 -data class Chapter(@PrimaryKey +data class Chapter( var url: String = "", // 章节地址 var title: String = "", // 章节标题 var bookUrl: String = "", // 书籍地址 From 540db57eb318f86bcd749c395a8fc68d04517d10 Mon Sep 17 00:00:00 2001 From: gedoor Date: Fri, 7 Jun 2019 07:59:03 +0800 Subject: [PATCH 07/66] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/main/booksource/BookSourceAdapter.kt | 20 +++++++++++++++---- .../ui/main/booksource/BookSourceFragment.kt | 7 ++----- app/src/main/res/layout/item_book_source.xml | 2 +- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt index f21f087e9..2e4d14958 100644 --- a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt @@ -1,14 +1,17 @@ package io.legado.app.ui.main.booksource -import android.content.Context +import android.annotation.SuppressLint +import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.paging.PagedListAdapter import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.RecyclerView +import io.legado.app.R import io.legado.app.data.entities.BookSource +import kotlinx.android.synthetic.main.item_book_source.view.* -class BookSourceAdapter(context : Context) : PagedListAdapter(DIFF_CALLBACK) { +class BookSourceAdapter : PagedListAdapter(DIFF_CALLBACK) { companion object { @@ -25,17 +28,26 @@ class BookSourceAdapter(context : Context) : PagedListAdapter - Date: Fri, 7 Jun 2019 08:45:44 +0800 Subject: [PATCH 08/66] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/main/booksource/BookSourceAdapter.kt | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt index 2e4d14958..50d830706 100644 --- a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt @@ -1,6 +1,5 @@ package io.legado.app.ui.main.booksource -import android.annotation.SuppressLint import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -10,6 +9,7 @@ import androidx.recyclerview.widget.RecyclerView import io.legado.app.R import io.legado.app.data.entities.BookSource import kotlinx.android.synthetic.main.item_book_source.view.* +import org.jetbrains.anko.sdk27.listeners.onClick class BookSourceAdapter : PagedListAdapter(DIFF_CALLBACK) { @@ -28,7 +28,8 @@ class BookSourceAdapter : PagedListAdapter() override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { return MyViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.item_book_source, parent, false)) @@ -36,18 +37,27 @@ class BookSourceAdapter : PagedListAdapter, callback: Callback?) = with(itemView) { cb_book_source.text = String.format("%s (%s)", bookSource.name, bookSource.group) + cb_book_source.onClick { + if (cb_book_source.isChecked) { + checkedList.add(bookSource.origin) + } else { + checkedList.remove(bookSource.origin) + } + } } } interface Callback { - + fun del(bookSource: BookSource) + fun edit(bookSource: BookSource) + fun update(bookSource: BookSource) } } \ No newline at end of file From 794a27f0791f8f1dd98b996d31890be134a0485a Mon Sep 17 00:00:00 2001 From: gedoor Date: Fri, 7 Jun 2019 09:45:55 +0800 Subject: [PATCH 09/66] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/lib/theme/view/ATEStockSwitch.kt | 35 ------- .../ui/main/booksource/BookSourceAdapter.kt | 26 +++++ app/src/main/res/layout/item_book_source.xml | 98 ++++++------------- app/src/main/res/values/ids.xml | 3 + 4 files changed, 59 insertions(+), 103 deletions(-) delete mode 100644 app/src/main/java/io/legado/app/lib/theme/view/ATEStockSwitch.kt diff --git a/app/src/main/java/io/legado/app/lib/theme/view/ATEStockSwitch.kt b/app/src/main/java/io/legado/app/lib/theme/view/ATEStockSwitch.kt deleted file mode 100644 index d80e3a766..000000000 --- a/app/src/main/java/io/legado/app/lib/theme/view/ATEStockSwitch.kt +++ /dev/null @@ -1,35 +0,0 @@ -package io.legado.app.lib.theme.view - -import android.content.Context -import android.util.AttributeSet -import android.view.View -import android.widget.Switch -import androidx.appcompat.widget.SwitchCompat -import io.legado.app.lib.theme.ATH -import io.legado.app.lib.theme.ThemeStore - -/** - * @author Aidan Follestad (afollestad) - */ -class ATEStockSwitch : SwitchCompat { - - constructor(context: Context) : super(context) { - init(context, null) - } - - constructor(context: Context, attrs: AttributeSet) : super(context, attrs) { - init(context, attrs) - } - - constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super(context, attrs, defStyleAttr) { - init(context, attrs) - } - - private fun init(context: Context, attrs: AttributeSet?) { - ATH.setTint(this, ThemeStore.accentColor(context)) - } - - override fun isShown(): Boolean { - return parent != null && visibility == View.VISIBLE - } -} diff --git a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt index 50d830706..110adea2c 100644 --- a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt @@ -1,8 +1,10 @@ package io.legado.app.ui.main.booksource import android.view.LayoutInflater +import android.view.Menu import android.view.View import android.view.ViewGroup +import android.widget.PopupMenu import androidx.paging.PagedListAdapter import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.RecyclerView @@ -52,6 +54,30 @@ class BookSourceAdapter : PagedListAdapter{ + callback?.edit(bookSource) + true} + R.id.menu_del ->{ + callback?.del(bookSource) + true} + R.id.menu_top ->{ true} + else -> {false} + } + } + popupMenu.show() + } } } diff --git a/app/src/main/res/layout/item_book_source.xml b/app/src/main/res/layout/item_book_source.xml index deadf724c..0c185faf5 100644 --- a/app/src/main/res/layout/item_book_source.xml +++ b/app/src/main/res/layout/item_book_source.xml @@ -1,73 +1,35 @@ - - + + - - - - - - - - - - - - - - - - + android:layout_gravity="center" + android:layout_weight="1" + android:singleLine="true" + android:text="" + android:textColor="@color/tv_text_default"/> + + + + \ No newline at end of file diff --git a/app/src/main/res/values/ids.xml b/app/src/main/res/values/ids.xml index 0d2c4cc40..341c5b250 100644 --- a/app/src/main/res/values/ids.xml +++ b/app/src/main/res/values/ids.xml @@ -1,4 +1,7 @@ + + + \ No newline at end of file From 4c900d71d7c36c48c2ecc357a649e851cef3d6c6 Mon Sep 17 00:00:00 2001 From: gedoor Date: Fri, 7 Jun 2019 09:52:38 +0800 Subject: [PATCH 10/66] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/ui/main/booksource/BookSourceAdapter.kt | 14 +++++++------- .../app/ui/main/booksource/BookSourceFragment.kt | 8 +++++++- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt index 110adea2c..8f97640d2 100644 --- a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt @@ -30,7 +30,7 @@ class BookSourceAdapter : PagedListAdapter() override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { @@ -39,13 +39,13 @@ class BookSourceAdapter : PagedListAdapter, callback: Callback?) = with(itemView) { + fun bind(bookSource: BookSource, checkedList: HashSet, callBack: CallBack?) = with(itemView) { cb_book_source.text = String.format("%s (%s)", bookSource.name, bookSource.group) cb_book_source.onClick { if (cb_book_source.isChecked) { @@ -57,7 +57,7 @@ class BookSourceAdapter : PagedListAdapter{ - callback?.edit(bookSource) + callBack?.edit(bookSource) true} R.id.menu_del ->{ - callback?.del(bookSource) + callBack?.del(bookSource) true} R.id.menu_top ->{ true} else -> {false} @@ -81,7 +81,7 @@ class BookSourceAdapter : PagedListAdapter { + context?.startActivity() + } + } } private fun initRecyclerView() { From abcf6e64aa60fcc69f8067a328506eecf049fb36 Mon Sep 17 00:00:00 2001 From: gedoor Date: Fri, 7 Jun 2019 09:59:11 +0800 Subject: [PATCH 11/66] =?UTF-8?q?=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/data/dao/BookSourceDao.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt b/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt index 36e2a53de..8576331a9 100644 --- a/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt +++ b/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt @@ -9,6 +9,6 @@ import io.legado.app.data.entities.BookSource @Dao interface BookSourceDao { - @Query("select * from ${DbTable.book_sources} where ") + @Query("select * from ${DbTable.book_sources}") fun observeAll(): DataSource.Factory } \ No newline at end of file From 6833d061d9fe0a9db63db6fd48b8829978b34c57 Mon Sep 17 00:00:00 2001 From: gedoor Date: Fri, 7 Jun 2019 10:31:51 +0800 Subject: [PATCH 12/66] =?UTF-8?q?=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/layout/activity_source_edit.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/layout/activity_source_edit.xml b/app/src/main/res/layout/activity_source_edit.xml index 024dedb49..22d7837e1 100644 --- a/app/src/main/res/layout/activity_source_edit.xml +++ b/app/src/main/res/layout/activity_source_edit.xml @@ -19,14 +19,14 @@ android:layout_height="wrap_content" android:orientation="horizontal"> - - Date: Fri, 7 Jun 2019 10:33:46 +0800 Subject: [PATCH 13/66] =?UTF-8?q?=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/layout/activity_source_edit.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/res/layout/activity_source_edit.xml b/app/src/main/res/layout/activity_source_edit.xml index 22d7837e1..66511b227 100644 --- a/app/src/main/res/layout/activity_source_edit.xml +++ b/app/src/main/res/layout/activity_source_edit.xml @@ -1,7 +1,6 @@ Date: Fri, 7 Jun 2019 11:38:55 +0800 Subject: [PATCH 14/66] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/legado/app/data/entities/BookSource.kt | 1 + app/src/main/res/layout/activity_source_edit.xml | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/app/src/main/java/io/legado/app/data/entities/BookSource.kt b/app/src/main/java/io/legado/app/data/entities/BookSource.kt index 4867d5dd9..4bb90d850 100644 --- a/app/src/main/java/io/legado/app/data/entities/BookSource.kt +++ b/app/src/main/java/io/legado/app/data/entities/BookSource.kt @@ -27,6 +27,7 @@ data class BookSource ( var lastUpdateTime: Long = 0, // 最后更新时间,用于排序 var customOrder: Int = 0, // 手动排序编号 var weight: Int = 0, // 智能排序的权重 + var exploreIsEnabled: Boolean = true, //启用发现 var exploreRule: String? = null, // 发现规则 var searchRule: String? = null, // 搜索规则 var bookInfoRule: String? = null, // 书籍信息页规则 diff --git a/app/src/main/res/layout/activity_source_edit.xml b/app/src/main/res/layout/activity_source_edit.xml index 66511b227..0a97e18a0 100644 --- a/app/src/main/res/layout/activity_source_edit.xml +++ b/app/src/main/res/layout/activity_source_edit.xml @@ -25,6 +25,13 @@ android:checked="true" android:text="@string/is_enable"/> + + Date: Fri, 7 Jun 2019 18:08:32 +0800 Subject: [PATCH 15/66] =?UTF-8?q?=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/constant/DbTable.kt | 7 ------ .../java/io/legado/app/data/AppDatabase.kt | 2 +- .../java/io/legado/app/data/dao/BookDao.kt | 11 ++++----- .../io/legado/app/data/dao/BookSourceDao.kt | 7 ++++-- .../io/legado/app/data/dao/ReplaceRuleDao.kt | 21 ++++++++-------- .../java/io/legado/app/data/entities/Book.kt | 3 +-- .../io/legado/app/data/entities/BookSource.kt | 9 +++---- .../legado/app/data/entities/ReplaceRule.kt | 3 +-- .../ui/main/booksource/BookSourceFragment.kt | 17 +++++++++++-- .../app/ui/sourceedit/SourceEditActivity.kt | 3 ++- .../app/ui/sourceedit/SourceEditAdapter.kt | 24 +++++++++++++++++++ .../app/ui/sourceedit/SourceEditViewModel.kt | 10 ++++++++ 12 files changed, 77 insertions(+), 40 deletions(-) delete mode 100644 app/src/main/java/io/legado/app/constant/DbTable.kt create mode 100644 app/src/main/java/io/legado/app/ui/sourceedit/SourceEditAdapter.kt diff --git a/app/src/main/java/io/legado/app/constant/DbTable.kt b/app/src/main/java/io/legado/app/constant/DbTable.kt deleted file mode 100644 index 11e8b2fb5..000000000 --- a/app/src/main/java/io/legado/app/constant/DbTable.kt +++ /dev/null @@ -1,7 +0,0 @@ -package io.legado.app.constant - -object DbTable { - const val books = "books" - const val book_sources = "book_sources" - const val replace_rules = "replace_rules" -} \ No newline at end of file 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 819298f55..5e0ebdd07 100644 --- a/app/src/main/java/io/legado/app/data/AppDatabase.kt +++ b/app/src/main/java/io/legado/app/data/AppDatabase.kt @@ -51,5 +51,5 @@ abstract class AppDatabase : RoomDatabase() { abstract fun bookDao(): BookDao abstract fun replaceRuleDao(): ReplaceRuleDao - abstract fun sourceDao() : BookSourceDao + abstract fun bookSourceDao() : BookSourceDao } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/data/dao/BookDao.kt b/app/src/main/java/io/legado/app/data/dao/BookDao.kt index a2cd9d7e7..10c65f279 100644 --- a/app/src/main/java/io/legado/app/data/dao/BookDao.kt +++ b/app/src/main/java/io/legado/app/data/dao/BookDao.kt @@ -6,25 +6,24 @@ import androidx.room.Dao import androidx.room.Insert import androidx.room.OnConflictStrategy import androidx.room.Query -import io.legado.app.constant.DbTable import io.legado.app.data.entities.Book @Dao interface BookDao { - @Query("SELECT * FROM ${DbTable.books} WHERE `group` = :group") + @Query("SELECT * FROM books WHERE `group` = :group") fun observeByGroup(group: Int): DataSource.Factory - @Query("SELECT descUrl FROM ${DbTable.books} WHERE `group` = :group") + @Query("SELECT descUrl FROM books WHERE `group` = :group") fun observeUrlsByGroup(group: Int): LiveData> - @Query("SELECT * FROM ${DbTable.books} WHERE `name` in (:names)") + @Query("SELECT * FROM books WHERE `name` in (:names)") fun findByName(vararg names: String): List - @get:Query("SELECT descUrl FROM ${DbTable.books}") + @get:Query("SELECT descUrl FROM books") val allBookUrls: List - @get:Query("SELECT COUNT(*) FROM ${DbTable.books}") + @get:Query("SELECT COUNT(*) FROM books") val allBookCount: Int @Insert(onConflict = OnConflictStrategy.REPLACE) diff --git a/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt b/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt index 8576331a9..b92e379ff 100644 --- a/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt +++ b/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt @@ -3,12 +3,15 @@ package io.legado.app.data.dao import androidx.paging.DataSource import androidx.room.Dao import androidx.room.Query -import io.legado.app.constant.DbTable import io.legado.app.data.entities.BookSource @Dao interface BookSourceDao { - @Query("select * from ${DbTable.book_sources}") + @Query("select * from book_sources") fun observeAll(): DataSource.Factory + + @Query("select * from book_sources where origin = :key") + fun findByKey(key:String): BookSource? + } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/data/dao/ReplaceRuleDao.kt b/app/src/main/java/io/legado/app/data/dao/ReplaceRuleDao.kt index 3435eef62..d4a2073c0 100644 --- a/app/src/main/java/io/legado/app/data/dao/ReplaceRuleDao.kt +++ b/app/src/main/java/io/legado/app/data/dao/ReplaceRuleDao.kt @@ -3,41 +3,40 @@ package io.legado.app.data.dao import androidx.lifecycle.LiveData import androidx.paging.DataSource import androidx.room.* -import io.legado.app.constant.DbTable import io.legado.app.data.entities.ReplaceRule @Dao interface ReplaceRuleDao { - @Query("SELECT * FROM ${DbTable.replace_rules} ORDER BY sortOrder ASC") + @Query("SELECT * FROM replace_rules ORDER BY sortOrder ASC") fun observeAll(): DataSource.Factory - @Query("SELECT id FROM ${DbTable.replace_rules} ORDER BY sortOrder ASC") + @Query("SELECT id FROM replace_rules ORDER BY sortOrder ASC") fun observeAllIds(): LiveData> - @get:Query("SELECT MAX(sortOrder) FROM ${DbTable.replace_rules}") + @get:Query("SELECT MAX(sortOrder) FROM replace_rules") val maxOrder: Int - @get:Query("SELECT * FROM ${DbTable.replace_rules} ORDER BY sortOrder ASC") + @get:Query("SELECT * FROM replace_rules ORDER BY sortOrder ASC") val all: List - @get:Query("SELECT * FROM ${DbTable.replace_rules} WHERE isEnabled = 1 ORDER BY sortOrder ASC") + @get:Query("SELECT * FROM replace_rules WHERE isEnabled = 1 ORDER BY sortOrder ASC") val allEnabled: List - @Query("SELECT * FROM ${DbTable.replace_rules} WHERE id = :id") + @Query("SELECT * FROM replace_rules WHERE id = :id") fun findById(id: Int): ReplaceRule? - @Query("SELECT * FROM ${DbTable.replace_rules} WHERE id in (:ids)") + @Query("SELECT * FROM replace_rules WHERE id in (:ids)") fun findByIds(vararg ids: Int): List - @Query("SELECT * FROM ${DbTable.replace_rules} WHERE isEnabled = 1 AND scope LIKE '%' || :scope || '%'") + @Query("SELECT * FROM replace_rules WHERE isEnabled = 1 AND scope LIKE '%' || :scope || '%'") fun findEnabledByScope(scope: String): List - @get:Query("SELECT COUNT(*) - SUM(isEnabled) FROM ${DbTable.replace_rules}") + @get:Query("SELECT COUNT(*) - SUM(isEnabled) FROM replace_rules") val summary: Int - @Query("UPDATE ${DbTable.replace_rules} SET isEnabled = :enable") + @Query("UPDATE replace_rules SET isEnabled = :enable") fun enableAll(enable: Boolean) @Insert(onConflict = OnConflictStrategy.REPLACE) diff --git a/app/src/main/java/io/legado/app/data/entities/Book.kt b/app/src/main/java/io/legado/app/data/entities/Book.kt index 4f49cc7ef..78b3694e8 100644 --- a/app/src/main/java/io/legado/app/data/entities/Book.kt +++ b/app/src/main/java/io/legado/app/data/entities/Book.kt @@ -3,11 +3,10 @@ package io.legado.app.data.entities import android.os.Parcelable import androidx.room.* import io.legado.app.constant.AppConst.NOT_AVAILABLE -import io.legado.app.constant.DbTable import kotlinx.android.parcel.Parcelize @Parcelize -@Entity(tableName = DbTable.books, indices = [(Index(value = ["descUrl"], unique = true))]) +@Entity(tableName = "books", indices = [(Index(value = ["descUrl"], unique = true))]) data class Book(@PrimaryKey var descUrl: String = "", // 详情页Url(本地书源存储完整文件路径) var tocUrl: String = "", // 目录页Url (toc=table of Contents) diff --git a/app/src/main/java/io/legado/app/data/entities/BookSource.kt b/app/src/main/java/io/legado/app/data/entities/BookSource.kt index 4bb90d850..2ac3aea66 100644 --- a/app/src/main/java/io/legado/app/data/entities/BookSource.kt +++ b/app/src/main/java/io/legado/app/data/entities/BookSource.kt @@ -3,22 +3,19 @@ package io.legado.app.data.entities import android.os.Parcelable import androidx.room.* import io.legado.app.constant.AppUtils.GSON_CONVERTER -import io.legado.app.constant.DbTable import io.legado.app.data.entities.rule.* import kotlinx.android.parcel.IgnoredOnParcel import kotlinx.android.parcel.Parcelize @Parcelize @Entity( - tableName = DbTable.book_sources, + tableName = "book_sources", indices = [(Index(value = ["sourceId"])), (Index(value = ["origin"], unique = false))] ) data class BookSource ( - @PrimaryKey(autoGenerate = true) - @ColumnInfo(name = "sourceId") - var id: Int = 0, // 编号 - var name: String = "", // 名称 + @PrimaryKey var origin: String = "", // 地址,包括 http/https + var name: String = "", // 名称 var type: Int = 0, // 类型,0 文本,1 音频 var group: String? = null, // 分组 var header: String? = null, // header diff --git a/app/src/main/java/io/legado/app/data/entities/ReplaceRule.kt b/app/src/main/java/io/legado/app/data/entities/ReplaceRule.kt index 6152c3bfd..8b5a0fda6 100644 --- a/app/src/main/java/io/legado/app/data/entities/ReplaceRule.kt +++ b/app/src/main/java/io/legado/app/data/entities/ReplaceRule.kt @@ -5,11 +5,10 @@ import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.Index import androidx.room.PrimaryKey -import io.legado.app.constant.DbTable import kotlinx.android.parcel.Parcelize @Parcelize -@Entity(tableName = DbTable.replace_rules, +@Entity(tableName = "replace_rules", indices = [(Index(value = ["id"]))]) data class ReplaceRule( @PrimaryKey(autoGenerate = true) diff --git a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt index f8f3021a3..9ae233d73 100644 --- a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt +++ b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt @@ -18,7 +18,7 @@ import kotlinx.android.synthetic.main.fragment_book_source.* import kotlinx.android.synthetic.main.view_titlebar.* import org.jetbrains.anko.startActivity -class BookSourceFragment : BaseFragment(R.layout.fragment_book_source) { +class BookSourceFragment : BaseFragment(R.layout.fragment_book_source), BookSourceAdapter.CallBack { private lateinit var adapter: BookSourceAdapter private var bookSourceLiveDate: LiveData>? = null @@ -44,12 +44,25 @@ class BookSourceFragment : BaseFragment(R.layout.fragment_book_source) { private fun initRecyclerView() { recycler_view.layoutManager = LinearLayoutManager(context) adapter = BookSourceAdapter() + adapter.callBack = this recycler_view.adapter = adapter } private fun initDataObservers() { bookSourceLiveDate?.removeObservers(viewLifecycleOwner) - bookSourceLiveDate = LivePagedListBuilder(App.db.sourceDao().observeAll(), 30).build() + bookSourceLiveDate = LivePagedListBuilder(App.db.bookSourceDao().observeAll(), 30).build() bookSourceLiveDate?.observe(viewLifecycleOwner, Observer { adapter.submitList(it) }) } + + override fun del(bookSource: BookSource) { + TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + } + + override fun update(bookSource: BookSource) { + TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + } + + override fun edit(bookSource: BookSource) { + TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + } } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt index f4db1d5b4..f896e386a 100644 --- a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt +++ b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt @@ -12,7 +12,8 @@ class SourceEditActivity : BaseActivity() { get() = R.layout.activity_source_edit override fun onViewModelCreated(viewModel: SourceEditViewModel, savedInstanceState: Bundle?) { - + val sourceID = intent.getStringExtra("data") + sourceID?.let { viewModel.setBookSource(sourceID)} } diff --git a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditAdapter.kt b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditAdapter.kt new file mode 100644 index 000000000..58102960b --- /dev/null +++ b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditAdapter.kt @@ -0,0 +1,24 @@ +package io.legado.app.ui.sourceedit + +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView + +class SourceEditAdapter : RecyclerView.Adapter() { + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { + TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + } + + override fun onBindViewHolder(holder: MyViewHolder, position: Int) { + TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + } + + override fun getItemCount(): Int { + TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + } + + class MyViewHolder(view: View) : RecyclerView.ViewHolder(view) { + + } +} \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditViewModel.kt b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditViewModel.kt index 4be930291..f0d341fe9 100644 --- a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditViewModel.kt @@ -2,7 +2,17 @@ package io.legado.app.ui.sourceedit import android.app.Application import androidx.lifecycle.AndroidViewModel +import androidx.lifecycle.MutableLiveData +import io.legado.app.App +import io.legado.app.data.dao.BookSourceDao +import io.legado.app.data.entities.BookSource class SourceEditViewModel(application: Application) : AndroidViewModel(application) { + private val sourceLiveData:MutableLiveData = MutableLiveData() + + fun setBookSource(key: String) { + sourceLiveData.value = App.db.bookSourceDao().findByKey(key) + } + } \ No newline at end of file From 66a27fc28df3c0395256c044284422f925032608 Mon Sep 17 00:00:00 2001 From: gedoor Date: Fri, 7 Jun 2019 18:17:46 +0800 Subject: [PATCH 16/66] =?UTF-8?q?=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/data/AppDatabase.kt | 6 +----- app/src/main/java/io/legado/app/data/entities/BookSource.kt | 2 +- .../io/legado/app/ui/main/booksource/BookSourceAdapter.kt | 4 ++-- 3 files changed, 4 insertions(+), 8 deletions(-) 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 5e0ebdd07..1f5bb7c87 100644 --- a/app/src/main/java/io/legado/app/data/AppDatabase.kt +++ b/app/src/main/java/io/legado/app/data/AppDatabase.kt @@ -39,11 +39,7 @@ abstract class AppDatabase : RoomDatabase() { // .addMigrations(MIGRATION_3_4) // .addMigrations(MIGRATION_4_5) // .addMigrations(MIGRATION_5_6) - .addCallback(object : Callback() { - override fun onCreate(db: SupportSQLiteDatabase) { - super.onCreate(db) - } - }) + .fallbackToDestructiveMigration() .build() } diff --git a/app/src/main/java/io/legado/app/data/entities/BookSource.kt b/app/src/main/java/io/legado/app/data/entities/BookSource.kt index 2ac3aea66..40a975434 100644 --- a/app/src/main/java/io/legado/app/data/entities/BookSource.kt +++ b/app/src/main/java/io/legado/app/data/entities/BookSource.kt @@ -10,7 +10,7 @@ import kotlinx.android.parcel.Parcelize @Parcelize @Entity( tableName = "book_sources", - indices = [(Index(value = ["sourceId"])), (Index(value = ["origin"], unique = false))] + indices = [(Index(value = ["origin"], unique = false))] ) data class BookSource ( @PrimaryKey diff --git a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt index 8f97640d2..1b2c793ff 100644 --- a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt @@ -20,10 +20,10 @@ class BookSourceAdapter : PagedListAdapter() { override fun areItemsTheSame(oldItem: BookSource, newItem: BookSource): Boolean = - oldItem.id == newItem.id + oldItem.origin == newItem.origin override fun areContentsTheSame(oldItem: BookSource, newItem: BookSource): Boolean = - oldItem.id == newItem.id + oldItem.origin == newItem.origin && oldItem.name == newItem.name && oldItem.group == newItem.group && oldItem.isEnabled == newItem.isEnabled From 50f620abaf32b7e71b384fa64553d2568d136969 Mon Sep 17 00:00:00 2001 From: gedoor Date: Fri, 7 Jun 2019 18:19:53 +0800 Subject: [PATCH 17/66] =?UTF-8?q?=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/data/AppDatabase.kt | 1 - 1 file changed, 1 deletion(-) 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 1f5bb7c87..81cd4db5d 100644 --- a/app/src/main/java/io/legado/app/data/AppDatabase.kt +++ b/app/src/main/java/io/legado/app/data/AppDatabase.kt @@ -39,7 +39,6 @@ abstract class AppDatabase : RoomDatabase() { // .addMigrations(MIGRATION_3_4) // .addMigrations(MIGRATION_4_5) // .addMigrations(MIGRATION_5_6) - .fallbackToDestructiveMigration() .build() } From 0044cad2f67fbd67b2ab93725bd14836909099e3 Mon Sep 17 00:00:00 2001 From: gedoor Date: Fri, 7 Jun 2019 18:33:07 +0800 Subject: [PATCH 18/66] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../legado/app/ui/sourceedit/SourceEditAdapter.kt | 14 ++++++++++++-- app/src/main/res/layout/item_source_edit.xml | 11 +++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 app/src/main/res/layout/item_source_edit.xml diff --git a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditAdapter.kt b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditAdapter.kt index 58102960b..6c468b9be 100644 --- a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditAdapter.kt @@ -1,13 +1,17 @@ package io.legado.app.ui.sourceedit +import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView +import io.legado.app.R class SourceEditAdapter : RecyclerView.Adapter() { + var sourceEditEntities:ArrayList = ArrayList() + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { - TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + return MyViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.item_source_edit, parent, false)) } override fun onBindViewHolder(holder: MyViewHolder, position: Int) { @@ -15,10 +19,16 @@ class SourceEditAdapter : RecyclerView.Adapter() } override fun getItemCount(): Int { - TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + return sourceEditEntities.size } class MyViewHolder(view: View) : RecyclerView.ViewHolder(view) { } + + class SourceEditEntity { + var key:String?=null + var value:String?=null + var hint:String?=null + } } \ No newline at end of file diff --git a/app/src/main/res/layout/item_source_edit.xml b/app/src/main/res/layout/item_source_edit.xml new file mode 100644 index 000000000..8db3ee929 --- /dev/null +++ b/app/src/main/res/layout/item_source_edit.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file From 9a2907ea0f1ae7b9afa19a411b369aab9af821c6 Mon Sep 17 00:00:00 2001 From: gedoor Date: Fri, 7 Jun 2019 18:53:17 +0800 Subject: [PATCH 19/66] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/ui/sourceedit/SourceEditAdapter.kt | 46 ++++++++++++++++++- app/src/main/res/values/ids.xml | 3 ++ 2 files changed, 47 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditAdapter.kt b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditAdapter.kt index 6c468b9be..31f4cf989 100644 --- a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditAdapter.kt @@ -1,10 +1,13 @@ package io.legado.app.ui.sourceedit +import android.text.Editable +import android.text.TextWatcher import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import io.legado.app.R +import kotlinx.android.synthetic.main.item_source_edit.view.* class SourceEditAdapter : RecyclerView.Adapter() { @@ -15,7 +18,7 @@ class SourceEditAdapter : RecyclerView.Adapter() } override fun onBindViewHolder(holder: MyViewHolder, position: Int) { - TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + holder.bind(sourceEditEntities[position]) } override fun getItemCount(): Int { @@ -23,12 +26,51 @@ class SourceEditAdapter : RecyclerView.Adapter() } class MyViewHolder(view: View) : RecyclerView.ViewHolder(view) { + fun bind(sourceEditEntity: SourceEditEntity) = with(itemView) { + if (editText.getTag(R.id.tag1) == null) { + val listener = object : View.OnAttachStateChangeListener { + override fun onViewAttachedToWindow(v: View) { + editText.isCursorVisible = false + editText.isCursorVisible = true + editText.isFocusable = true + editText.isFocusableInTouchMode = true + } + override fun onViewDetachedFromWindow(v: View) { + + } + } + editText.addOnAttachStateChangeListener(listener) + editText.setTag(R.id.tag1, listener) + } + editText.getTag(R.id.tag2)?.let { + if (it is TextWatcher) { + editText.removeTextChangedListener(it) + } + } + editText.setText(sourceEditEntity.value) + sourceEditEntity.hint?.let { textInputLayout.hint = context.getString(it) } + val textWatcher = object : TextWatcher { + override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) { + + } + + override fun afterTextChanged(s: Editable?) { + sourceEditEntity.value=(s?.toString()) + } + } + editText.addTextChangedListener(textWatcher) + editText.setTag(R.id.tag2, textWatcher) + } } class SourceEditEntity { var key:String?=null var value:String?=null - var hint:String?=null + var hint:Int?=null } } \ No newline at end of file diff --git a/app/src/main/res/values/ids.xml b/app/src/main/res/values/ids.xml index 341c5b250..0e7713b39 100644 --- a/app/src/main/res/values/ids.xml +++ b/app/src/main/res/values/ids.xml @@ -4,4 +4,7 @@ + + + \ No newline at end of file From 81118074bee254123647dfbc7a051b53b4720263 Mon Sep 17 00:00:00 2001 From: gedoor Date: Fri, 7 Jun 2019 18:57:33 +0800 Subject: [PATCH 20/66] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/legado/app/ui/sourceedit/SourceEditActivity.kt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt index f896e386a..55bfb3d0a 100644 --- a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt +++ b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt @@ -1,9 +1,11 @@ package io.legado.app.ui.sourceedit import android.os.Bundle +import androidx.recyclerview.widget.LinearLayoutManager import io.legado.app.R import io.legado.app.base.BaseActivity import io.legado.app.utils.getViewModel +import kotlinx.android.synthetic.main.activity_source_edit.* class SourceEditActivity : BaseActivity() { override val viewModel: SourceEditViewModel @@ -11,10 +13,16 @@ class SourceEditActivity : BaseActivity() { override val layoutID: Int get() = R.layout.activity_source_edit + val adapter = SourceEditAdapter() + override fun onViewModelCreated(viewModel: SourceEditViewModel, savedInstanceState: Bundle?) { val sourceID = intent.getStringExtra("data") sourceID?.let { viewModel.setBookSource(sourceID)} + initRecyclerView() } - + fun initRecyclerView() { + recycler_view.layoutManager = LinearLayoutManager(this) + recycler_view.adapter = adapter + } } \ No newline at end of file From 1e21de79f3acb2e1d9c000cad07f9bfc4b67625f Mon Sep 17 00:00:00 2001 From: gedoor Date: Fri, 7 Jun 2019 18:58:02 +0800 Subject: [PATCH 21/66] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt index 55bfb3d0a..8830ff947 100644 --- a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt +++ b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt @@ -21,7 +21,7 @@ class SourceEditActivity : BaseActivity() { initRecyclerView() } - fun initRecyclerView() { + private fun initRecyclerView() { recycler_view.layoutManager = LinearLayoutManager(this) recycler_view.adapter = adapter } From e35797030fe1968b2b5f1a14c2a019bf4bee8335 Mon Sep 17 00:00:00 2001 From: gedoor Date: Fri, 7 Jun 2019 20:59:58 +0800 Subject: [PATCH 22/66] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/ui/sourceedit/SourceEditActivity.kt | 31 +++++++++++++++++-- .../app/ui/sourceedit/SourceEditAdapter.kt | 12 +++---- .../app/ui/sourceedit/SourceEditViewModel.kt | 4 ++- 3 files changed, 35 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt index 8830ff947..0bbe38f4f 100644 --- a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt +++ b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt @@ -1,9 +1,11 @@ package io.legado.app.ui.sourceedit import android.os.Bundle +import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import io.legado.app.R import io.legado.app.base.BaseActivity +import io.legado.app.data.entities.BookSource import io.legado.app.utils.getViewModel import kotlinx.android.synthetic.main.activity_source_edit.* @@ -13,16 +15,39 @@ class SourceEditActivity : BaseActivity() { override val layoutID: Int get() = R.layout.activity_source_edit - val adapter = SourceEditAdapter() + private val adapter = SourceEditAdapter() + private val sourceEditEntities:ArrayList = ArrayList() override fun onViewModelCreated(viewModel: SourceEditViewModel, savedInstanceState: Bundle?) { - val sourceID = intent.getStringExtra("data") - sourceID?.let { viewModel.setBookSource(sourceID)} initRecyclerView() + viewModel.sourceLiveData.observe(this, Observer { + upRecyclerView(it) + }) + if (viewModel.sourceLiveData.value == null) { + val sourceID = intent.getStringExtra("data") + if (sourceID == null) { + upRecyclerView(null) + } else { + sourceID.let { viewModel.setBookSource(sourceID) } + } + } else { + upRecyclerView(viewModel.sourceLiveData.value) + } } private fun initRecyclerView() { recycler_view.layoutManager = LinearLayoutManager(this) recycler_view.adapter = adapter } + + private fun upRecyclerView(bookSource: BookSource?) { + sourceEditEntities.clear() + sourceEditEntities.add(SourceEditEntity("origin", bookSource?.origin, R.string.book_source_url)) + sourceEditEntities.add(SourceEditEntity("name", bookSource?.name, R.string.book_source_name)) + sourceEditEntities.add(SourceEditEntity("group", bookSource?.group, R.string.book_source_group)) + adapter.sourceEditEntities = sourceEditEntities + adapter.notifyDataSetChanged() + } + + class SourceEditEntity(var key: String, var value:String?, var hint:Int) } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditAdapter.kt b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditAdapter.kt index 31f4cf989..be301e4c1 100644 --- a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditAdapter.kt @@ -11,7 +11,7 @@ import kotlinx.android.synthetic.main.item_source_edit.view.* class SourceEditAdapter : RecyclerView.Adapter() { - var sourceEditEntities:ArrayList = ArrayList() + var sourceEditEntities:ArrayList = ArrayList() override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { return MyViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.item_source_edit, parent, false)) @@ -26,7 +26,7 @@ class SourceEditAdapter : RecyclerView.Adapter() } class MyViewHolder(view: View) : RecyclerView.ViewHolder(view) { - fun bind(sourceEditEntity: SourceEditEntity) = with(itemView) { + fun bind(sourceEditEntity: SourceEditActivity.SourceEditEntity) = with(itemView) { if (editText.getTag(R.id.tag1) == null) { val listener = object : View.OnAttachStateChangeListener { override fun onViewAttachedToWindow(v: View) { @@ -49,7 +49,7 @@ class SourceEditAdapter : RecyclerView.Adapter() } } editText.setText(sourceEditEntity.value) - sourceEditEntity.hint?.let { textInputLayout.hint = context.getString(it) } + textInputLayout.hint = context.getString(sourceEditEntity.hint) val textWatcher = object : TextWatcher { override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) { @@ -68,9 +68,5 @@ class SourceEditAdapter : RecyclerView.Adapter() } } - class SourceEditEntity { - var key:String?=null - var value:String?=null - var hint:Int?=null - } + } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditViewModel.kt b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditViewModel.kt index f0d341fe9..7e0fd2958 100644 --- a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditViewModel.kt @@ -9,10 +9,12 @@ import io.legado.app.data.entities.BookSource class SourceEditViewModel(application: Application) : AndroidViewModel(application) { - private val sourceLiveData:MutableLiveData = MutableLiveData() + val sourceLiveData:MutableLiveData = MutableLiveData() fun setBookSource(key: String) { sourceLiveData.value = App.db.bookSourceDao().findByKey(key) } + + } \ No newline at end of file From ed505d9eda31529db094bcb56afa974e84846073 Mon Sep 17 00:00:00 2001 From: gedoor Date: Fri, 7 Jun 2019 22:22:26 +0800 Subject: [PATCH 23/66] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/legado/app/data/dao/BookSourceDao.kt | 4 ++ .../app/ui/sourceedit/SourceEditActivity.kt | 56 ++++++++++++++++++- .../app/ui/sourceedit/SourceEditViewModel.kt | 7 ++- app/src/main/res/menu/source_edit.xml | 51 +++++++++++++++++ 4 files changed, 115 insertions(+), 3 deletions(-) create mode 100644 app/src/main/res/menu/source_edit.xml diff --git a/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt b/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt index b92e379ff..7b3f4e275 100644 --- a/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt +++ b/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt @@ -2,6 +2,8 @@ package io.legado.app.data.dao import androidx.paging.DataSource import androidx.room.Dao +import androidx.room.Insert +import androidx.room.OnConflictStrategy import androidx.room.Query import io.legado.app.data.entities.BookSource @@ -14,4 +16,6 @@ interface BookSourceDao { @Query("select * from book_sources where origin = :key") fun findByKey(key:String): BookSource? + @Insert(onConflict = OnConflictStrategy.REPLACE) + fun insert(bookSource: BookSource): Long } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt index 0bbe38f4f..048674ac9 100644 --- a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt +++ b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt @@ -1,13 +1,19 @@ package io.legado.app.ui.sourceedit import android.os.Bundle +import android.view.Menu +import android.view.MenuItem import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager +import io.legado.app.App import io.legado.app.R import io.legado.app.base.BaseActivity import io.legado.app.data.entities.BookSource import io.legado.app.utils.getViewModel import kotlinx.android.synthetic.main.activity_source_edit.* +import kotlinx.coroutines.* +import org.jetbrains.anko.UI +import org.jetbrains.anko.toast class SourceEditActivity : BaseActivity() { override val viewModel: SourceEditViewModel @@ -16,7 +22,7 @@ class SourceEditActivity : BaseActivity() { get() = R.layout.activity_source_edit private val adapter = SourceEditAdapter() - private val sourceEditEntities:ArrayList = ArrayList() + private val sourceEditEntities: ArrayList = ArrayList() override fun onViewModelCreated(viewModel: SourceEditViewModel, savedInstanceState: Bundle?) { initRecyclerView() @@ -35,6 +41,28 @@ class SourceEditActivity : BaseActivity() { } } + override fun onCompatCreateOptionsMenu(menu: Menu): Boolean { + menuInflater.inflate(R.menu.source_edit, menu) + return super.onCompatCreateOptionsMenu(menu) + } + + override fun onCompatOptionsItemSelected(item: MenuItem): Boolean { + when (item.itemId) { + R.id.action_save -> { + val bookSource = getSource() + if (bookSource == null) { + toast("书源名称和URL不能为空") + } else { + GlobalScope.launch { + App.db.bookSourceDao().insert(bookSource) + GlobalScope.launch(Dispatchers.Main) { finish() } + } + } + } + } + return super.onCompatOptionsItemSelected(item) + } + private fun initRecyclerView() { recycler_view.layoutManager = LinearLayoutManager(this) recycler_view.adapter = adapter @@ -49,5 +77,29 @@ class SourceEditActivity : BaseActivity() { adapter.notifyDataSetChanged() } - class SourceEditEntity(var key: String, var value:String?, var hint:Int) + private fun getSource(): BookSource? { + val bookSource = BookSource() + for (entity in adapter.sourceEditEntities) { + when (entity.key) { + "origin" -> { + if (entity.value == null) { + return null + } else { + bookSource.origin = entity.value!! + } + } + "name" -> { + if (entity.value == null) { + return null + } else { + bookSource.name = entity.value!! + } + } + "group" -> bookSource.group = entity.value + } + } + return bookSource + } + + class SourceEditEntity(var key: String, var value: String?, var hint: Int) } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditViewModel.kt b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditViewModel.kt index 7e0fd2958..1ec3a5258 100644 --- a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditViewModel.kt @@ -6,13 +6,18 @@ import androidx.lifecycle.MutableLiveData import io.legado.app.App import io.legado.app.data.dao.BookSourceDao import io.legado.app.data.entities.BookSource +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.launch class SourceEditViewModel(application: Application) : AndroidViewModel(application) { val sourceLiveData:MutableLiveData = MutableLiveData() fun setBookSource(key: String) { - sourceLiveData.value = App.db.bookSourceDao().findByKey(key) + GlobalScope.launch { + val source = App.db.bookSourceDao().findByKey(key) + sourceLiveData.postValue(source) + } } diff --git a/app/src/main/res/menu/source_edit.xml b/app/src/main/res/menu/source_edit.xml new file mode 100644 index 000000000..1c19b35fa --- /dev/null +++ b/app/src/main/res/menu/source_edit.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From a6866cea1d64dbeb1feee36c3d34a5175a53fdc5 Mon Sep 17 00:00:00 2001 From: gedoor Date: Fri, 7 Jun 2019 23:07:35 +0800 Subject: [PATCH 24/66] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/legado/app/data/dao/BookSourceDao.kt | 8 ++++---- .../legado/app/ui/main/booksource/BookSourceAdapter.kt | 2 +- .../legado/app/ui/main/booksource/BookSourceFragment.kt | 4 +++- app/src/main/res/layout/item_book_source.xml | 9 ++++----- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt b/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt index 7b3f4e275..d8f62d9b8 100644 --- a/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt +++ b/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt @@ -1,10 +1,7 @@ package io.legado.app.data.dao import androidx.paging.DataSource -import androidx.room.Dao -import androidx.room.Insert -import androidx.room.OnConflictStrategy -import androidx.room.Query +import androidx.room.* import io.legado.app.data.entities.BookSource @Dao @@ -18,4 +15,7 @@ interface BookSourceDao { @Insert(onConflict = OnConflictStrategy.REPLACE) fun insert(bookSource: BookSource): Long + + @Update + fun update(vararg bookSource: BookSource) } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt index 1b2c793ff..c74db41c9 100644 --- a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt @@ -60,7 +60,7 @@ class BookSourceAdapter : PagedListAdapter + android:gravity="center_vertical"> \ No newline at end of file From c2341b442c48a39638f8dbe3907ce4931d39e2da Mon Sep 17 00:00:00 2001 From: gedoor Date: Fri, 7 Jun 2019 23:24:16 +0800 Subject: [PATCH 25/66] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/legado/app/ui/main/booksource/BookSourceAdapter.kt | 5 +++-- .../io/legado/app/ui/main/booksource/BookSourceFragment.kt | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt index c74db41c9..01d64fcca 100644 --- a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt @@ -4,6 +4,7 @@ import android.view.LayoutInflater import android.view.Menu import android.view.View import android.view.ViewGroup +import android.widget.CompoundButton import android.widget.PopupMenu import androidx.paging.PagedListAdapter import androidx.recyclerview.widget.DiffUtil @@ -54,9 +55,9 @@ class BookSourceAdapter : PagedListAdapter(Pair("data", bookSource.origin)) } } } \ No newline at end of file From e0e49cb81df20268d53a235cd1c1890df9d245b1 Mon Sep 17 00:00:00 2001 From: gedoor Date: Fri, 7 Jun 2019 23:29:50 +0800 Subject: [PATCH 26/66] =?UTF-8?q?=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/ui/sourceedit/SourceEditActivity.kt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt index 048674ac9..d3f93ebfd 100644 --- a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt +++ b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt @@ -69,6 +69,10 @@ class SourceEditActivity : BaseActivity() { } private fun upRecyclerView(bookSource: BookSource?) { + bookSource?.let { + cb_is_enable.isChecked = it.isEnabled + cb_is_enable_find.isChecked = it.exploreIsEnabled + } sourceEditEntities.clear() sourceEditEntities.add(SourceEditEntity("origin", bookSource?.origin, R.string.book_source_url)) sourceEditEntities.add(SourceEditEntity("name", bookSource?.name, R.string.book_source_name)) From 9f9489697ab9376145e34c17198b3fdbc7ae1257 Mon Sep 17 00:00:00 2001 From: gedoor Date: Fri, 7 Jun 2019 23:32:58 +0800 Subject: [PATCH 27/66] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt index d3f93ebfd..ef6f4e14b 100644 --- a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt +++ b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt @@ -83,6 +83,8 @@ class SourceEditActivity : BaseActivity() { private fun getSource(): BookSource? { val bookSource = BookSource() + bookSource.isEnabled = cb_is_enable.isChecked + bookSource.exploreIsEnabled = cb_is_enable_find.isChecked for (entity in adapter.sourceEditEntities) { when (entity.key) { "origin" -> { From be30fd3df983c80bf427a255f33de48bf31b65ab Mon Sep 17 00:00:00 2001 From: gedoor Date: Fri, 7 Jun 2019 23:51:12 +0800 Subject: [PATCH 28/66] =?UTF-8?q?=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/data/dao/BookSourceDao.kt | 2 +- app/src/main/java/io/legado/app/data/dao/ReplaceRuleDao.kt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt b/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt index d8f62d9b8..07f8a4e10 100644 --- a/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt +++ b/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt @@ -17,5 +17,5 @@ interface BookSourceDao { fun insert(bookSource: BookSource): Long @Update - fun update(vararg bookSource: BookSource) + fun update(bookSource: BookSource) } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/data/dao/ReplaceRuleDao.kt b/app/src/main/java/io/legado/app/data/dao/ReplaceRuleDao.kt index d4a2073c0..530620dc6 100644 --- a/app/src/main/java/io/legado/app/data/dao/ReplaceRuleDao.kt +++ b/app/src/main/java/io/legado/app/data/dao/ReplaceRuleDao.kt @@ -46,10 +46,10 @@ interface ReplaceRuleDao { fun insert(replaceRule: ReplaceRule): Long @Update - fun update(vararg replaceRules: ReplaceRule) + fun update(replaceRules: ReplaceRule) @Delete - fun delete(vararg replaceRules: ReplaceRule) + fun delete(replaceRules: ReplaceRule) } \ No newline at end of file From ee0dfd2a24da0cd2a19cb9ca79084dc1612addf8 Mon Sep 17 00:00:00 2001 From: gedoor Date: Sat, 8 Jun 2019 00:07:58 +0800 Subject: [PATCH 29/66] =?UTF-8?q?=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/dao/BookSourceDao.kt | 12 ++++++++++++ .../java/io/legado/app/data/dao/ReplaceRuleDao.kt | 8 ++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt b/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt index 07f8a4e10..6a46573a7 100644 --- a/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt +++ b/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt @@ -16,6 +16,18 @@ interface BookSourceDao { @Insert(onConflict = OnConflictStrategy.REPLACE) fun insert(bookSource: BookSource): Long + @Insert(onConflict = OnConflictStrategy.REPLACE) + fun insert(vararg bookSource: BookSource) + @Update fun update(bookSource: BookSource) + + @Update + fun update(vararg bookSource: BookSource) + + @Delete + fun delete(bookSource: BookSource) + + @Delete + fun delete(vararg bookSource: BookSource) } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/data/dao/ReplaceRuleDao.kt b/app/src/main/java/io/legado/app/data/dao/ReplaceRuleDao.kt index 530620dc6..f65588378 100644 --- a/app/src/main/java/io/legado/app/data/dao/ReplaceRuleDao.kt +++ b/app/src/main/java/io/legado/app/data/dao/ReplaceRuleDao.kt @@ -40,7 +40,7 @@ interface ReplaceRuleDao { fun enableAll(enable: Boolean) @Insert(onConflict = OnConflictStrategy.REPLACE) - fun insert(vararg replaceRules: ReplaceRule) + fun insert(vararg replaceRules: ReplaceRule): List @Insert(onConflict = OnConflictStrategy.REPLACE) fun insert(replaceRule: ReplaceRule): Long @@ -48,8 +48,12 @@ interface ReplaceRuleDao { @Update fun update(replaceRules: ReplaceRule) + @Update + fun update(vararg replaceRules: ReplaceRule) + @Delete fun delete(replaceRules: ReplaceRule) - + @Delete + fun delete(vararg replaceRules: ReplaceRule) } \ No newline at end of file From f40f36b66cd4434c763292b47cc46f3cbd50efc6 Mon Sep 17 00:00:00 2001 From: gedoor Date: Sat, 8 Jun 2019 07:33:34 +0800 Subject: [PATCH 30/66] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/legado/app/ui/main/booksource/BookSourceFragment.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt index a9b116119..a86a6ebfd 100644 --- a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt +++ b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt @@ -8,7 +8,9 @@ import androidx.lifecycle.LiveData import androidx.lifecycle.Observer import androidx.paging.LivePagedListBuilder import androidx.paging.PagedList +import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView import io.legado.app.App import io.legado.app.R import io.legado.app.base.BaseFragment @@ -45,6 +47,7 @@ class BookSourceFragment : BaseFragment(R.layout.fragment_book_source), BookSour private fun initRecyclerView() { recycler_view.layoutManager = LinearLayoutManager(context) + recycler_view.addItemDecoration(DividerItemDecoration(context, LinearLayoutManager.VERTICAL)) adapter = BookSourceAdapter() adapter.callBack = this recycler_view.adapter = adapter From 67aeb9404db44180acd6080d779811fa0c910e09 Mon Sep 17 00:00:00 2001 From: gedoor Date: Sat, 8 Jun 2019 09:05:46 +0800 Subject: [PATCH 31/66] =?UTF-8?q?=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/ui/main/booksource/BookSourceFragment.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt index a86a6ebfd..8ea3b59e7 100644 --- a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt +++ b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt @@ -60,7 +60,7 @@ class BookSourceFragment : BaseFragment(R.layout.fragment_book_source), BookSour } override fun del(bookSource: BookSource) { - TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + GlobalScope.launch { App.db.bookSourceDao().delete(bookSource) } } override fun update(bookSource: BookSource) { From 6a07b6544ed4524a80916c036cd639ee68ea73f3 Mon Sep 17 00:00:00 2001 From: gedoor Date: Sat, 8 Jun 2019 11:43:45 +0800 Subject: [PATCH 32/66] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/legado/app/data/dao/BookSourceDao.kt | 5 +- .../io/legado/app/help/ItemTouchCallback.kt | 127 ++++++++++++++++++ .../ui/main/booksource/BookSourceAdapter.kt | 26 ++++ .../ui/main/booksource/BookSourceFragment.kt | 10 ++ .../app/ui/sourceedit/SourceEditActivity.kt | 2 +- .../app/ui/sourceedit/SourceEditViewModel.kt | 7 + app/src/main/res/layout/item_book_source.xml | 1 + 7 files changed, 176 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/io/legado/app/help/ItemTouchCallback.kt diff --git a/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt b/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt index 6a46573a7..ee977b6ff 100644 --- a/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt +++ b/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt @@ -7,12 +7,15 @@ import io.legado.app.data.entities.BookSource @Dao interface BookSourceDao { - @Query("select * from book_sources") + @Query("select * from book_sources order by customOrder asc") fun observeAll(): DataSource.Factory @Query("select * from book_sources where origin = :key") fun findByKey(key:String): BookSource? + @Query("select count(*) from book_sources") + fun allCount(): Int + @Insert(onConflict = OnConflictStrategy.REPLACE) fun insert(bookSource: BookSource): Long diff --git a/app/src/main/java/io/legado/app/help/ItemTouchCallback.kt b/app/src/main/java/io/legado/app/help/ItemTouchCallback.kt new file mode 100644 index 000000000..9cf1fccf5 --- /dev/null +++ b/app/src/main/java/io/legado/app/help/ItemTouchCallback.kt @@ -0,0 +1,127 @@ +package io.legado.app.help + + +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.ItemTouchHelper +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout +import androidx.viewpager.widget.ViewPager + +/** + * Created by GKF on 2018/3/16. + */ + +class ItemTouchCallback : ItemTouchHelper.Callback() { + + private var swipeRefreshLayout: SwipeRefreshLayout? = null + private var viewPager: ViewPager? = null + + /** + * Item操作的回调 + */ + var onItemTouchCallbackListener: OnItemTouchCallbackListener? = null + + /** + * 是否可以拖拽 + */ + var isCanDrag = false + /** + * 是否可以被滑动 + */ + var isCanSwipe = false + + /** + * 当Item被长按的时候是否可以被拖拽 + */ + override fun isLongPressDragEnabled(): Boolean { + return isCanDrag + } + + /** + * Item是否可以被滑动(H:左右滑动,V:上下滑动) + */ + override fun isItemViewSwipeEnabled(): Boolean { + return isCanSwipe + } + + /** + * 当用户拖拽或者滑动Item的时候需要我们告诉系统滑动或者拖拽的方向 + */ + override fun getMovementFlags(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder): Int { + val layoutManager = recyclerView.layoutManager + if (layoutManager is GridLayoutManager) {// GridLayoutManager + // flag如果值是0,相当于这个功能被关闭 + val dragFlag = ItemTouchHelper.LEFT or ItemTouchHelper.RIGHT or ItemTouchHelper.UP or ItemTouchHelper.DOWN + val swipeFlag = 0 + // create make + return makeMovementFlags(dragFlag, swipeFlag) + } else if (layoutManager is LinearLayoutManager) {// linearLayoutManager + val linearLayoutManager = layoutManager as LinearLayoutManager? + val orientation = linearLayoutManager!!.orientation + + var dragFlag = 0 + var swipeFlag = 0 + + // 为了方便理解,相当于分为横着的ListView和竖着的ListView + if (orientation == LinearLayoutManager.HORIZONTAL) {// 如果是横向的布局 + swipeFlag = ItemTouchHelper.UP or ItemTouchHelper.DOWN + dragFlag = ItemTouchHelper.LEFT or ItemTouchHelper.RIGHT + } else if (orientation == LinearLayoutManager.VERTICAL) {// 如果是竖向的布局,相当于ListView + dragFlag = ItemTouchHelper.UP or ItemTouchHelper.DOWN + swipeFlag = ItemTouchHelper.LEFT or ItemTouchHelper.RIGHT + } + return makeMovementFlags(dragFlag, swipeFlag) + } + return 0 + } + + /** + * 当Item被拖拽的时候被回调 + * + * @param recyclerView recyclerView + * @param srcViewHolder 拖拽的ViewHolder + * @param targetViewHolder 目的地的viewHolder + */ + override fun onMove( + recyclerView: RecyclerView, + srcViewHolder: RecyclerView.ViewHolder, + targetViewHolder: RecyclerView.ViewHolder + ): Boolean { + onItemTouchCallbackListener?.let { + return it.onMove(srcViewHolder.adapterPosition, targetViewHolder.adapterPosition) + } + return false + } + + override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) { + onItemTouchCallbackListener?.let { + return it.onSwiped(viewHolder.adapterPosition) + } + } + + override fun onSelectedChanged(viewHolder: RecyclerView.ViewHolder?, actionState: Int) { + super.onSelectedChanged(viewHolder, actionState) + val swiping = actionState == ItemTouchHelper.ACTION_STATE_DRAG + swipeRefreshLayout?.isEnabled = !swiping + viewPager?.requestDisallowInterceptTouchEvent(swiping) + } + + interface OnItemTouchCallbackListener { + /** + * 当某个Item被滑动删除的时候 + * + * @param adapterPosition item的position + */ + fun onSwiped(adapterPosition: Int) + + /** + * 当两个Item位置互换的时候被回调 + * + * @param srcPosition 拖拽的item的position + * @param targetPosition 目的地的Item的position + * @return 开发者处理了操作应该返回true,开发者没有处理就返回false + */ + fun onMove(srcPosition: Int, targetPosition: Int): Boolean + } +} diff --git a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt index 01d64fcca..6f468b563 100644 --- a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt @@ -11,8 +11,12 @@ import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.RecyclerView import io.legado.app.R import io.legado.app.data.entities.BookSource +import io.legado.app.help.ItemTouchCallback +import io.legado.app.help.ItemTouchCallback.OnItemTouchCallbackListener import kotlinx.android.synthetic.main.item_book_source.view.* import org.jetbrains.anko.sdk27.listeners.onClick +import java.util.* +import kotlin.collections.HashSet class BookSourceAdapter : PagedListAdapter(DIFF_CALLBACK) { @@ -34,6 +38,27 @@ class BookSourceAdapter : PagedListAdapter() + val itemTouchCallbackListener = object : OnItemTouchCallbackListener { + override fun onSwiped(adapterPosition: Int) { + + } + + override fun onMove(srcPosition: Int, targetPosition: Int): Boolean { + currentList?.let { + val srcSource = it[srcPosition] + val targetSource = it[targetPosition] + srcSource?.let { a-> + targetSource?.let { b-> + a.customOrder = targetPosition + b.customOrder = srcPosition + callBack?.update(a, b) + } + } + } + return true + } + } + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { return MyViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.item_book_source, parent, false)) } @@ -86,5 +111,6 @@ class BookSourceAdapter : PagedListAdapter(Pair("data", bookSource.origin)) } } diff --git a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt index ef6f4e14b..178f0fc68 100644 --- a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt +++ b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt @@ -54,7 +54,7 @@ class SourceEditActivity : BaseActivity() { toast("书源名称和URL不能为空") } else { GlobalScope.launch { - App.db.bookSourceDao().insert(bookSource) + viewModel.save(bookSource) GlobalScope.launch(Dispatchers.Main) { finish() } } } diff --git a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditViewModel.kt b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditViewModel.kt index 1ec3a5258..ed90408f9 100644 --- a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditViewModel.kt @@ -20,6 +20,13 @@ class SourceEditViewModel(application: Application) : AndroidViewModel(applicati } } + fun save(bookSource: BookSource) { + val source = App.db.bookSourceDao().findByKey(bookSource.origin) + if (source == null) { + bookSource.customOrder = App.db.bookSourceDao().allCount() + } + App.db.bookSourceDao().insert(bookSource) + } } \ No newline at end of file diff --git a/app/src/main/res/layout/item_book_source.xml b/app/src/main/res/layout/item_book_source.xml index b6a58c7ef..1958e1759 100644 --- a/app/src/main/res/layout/item_book_source.xml +++ b/app/src/main/res/layout/item_book_source.xml @@ -2,6 +2,7 @@ From 27d6837b2bbc4f09ddc83e8146c8234b37270e7a Mon Sep 17 00:00:00 2001 From: gedoor Date: Sat, 8 Jun 2019 12:16:47 +0800 Subject: [PATCH 33/66] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/legado/app/ui/config/ConfigActivity.kt | 2 +- .../ui/main/bookshelf/BookshelfFragment.kt | 2 +- .../ui/main/booksource/BookSourceFragment.kt | 2 +- .../app/ui/main/findbook/FindBookFragment.kt | 2 +- .../app/ui/main/myconfig/MyConfigFragment.kt | 2 +- .../java/io/legado/app/ui/widget/SearchBar.kt | 204 ++++++++++++++++++ .../java/io/legado/app/ui/widget/TitleBar.kt | 2 +- .../main/res/layout/fragment_book_source.xml | 2 +- app/src/main/res/layout/view_search_bar.xml | 17 ++ .../{view_titlebar.xml => view_title_bar.xml} | 0 10 files changed, 228 insertions(+), 7 deletions(-) create mode 100644 app/src/main/java/io/legado/app/ui/widget/SearchBar.kt create mode 100644 app/src/main/res/layout/view_search_bar.xml rename app/src/main/res/layout/{view_titlebar.xml => view_title_bar.xml} (100%) diff --git a/app/src/main/java/io/legado/app/ui/config/ConfigActivity.kt b/app/src/main/java/io/legado/app/ui/config/ConfigActivity.kt index 6b8a67517..26894c7e2 100644 --- a/app/src/main/java/io/legado/app/ui/config/ConfigActivity.kt +++ b/app/src/main/java/io/legado/app/ui/config/ConfigActivity.kt @@ -5,7 +5,7 @@ import io.legado.app.R import io.legado.app.base.BaseActivity import io.legado.app.utils.getViewModel import kotlinx.android.synthetic.main.activity_config.* -import kotlinx.android.synthetic.main.view_titlebar.* +import kotlinx.android.synthetic.main.view_title_bar.* class ConfigActivity : BaseActivity() { override val viewModel: ConfigViewModel diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfFragment.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfFragment.kt index a50d9f32f..610d99e43 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfFragment.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfFragment.kt @@ -5,7 +5,7 @@ import android.view.Menu import android.view.View import io.legado.app.R import io.legado.app.base.BaseFragment -import kotlinx.android.synthetic.main.view_titlebar.* +import kotlinx.android.synthetic.main.view_title_bar.* class BookshelfFragment : BaseFragment(R.layout.fragment_bookshelf) { diff --git a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt index 007cb95f0..49416dcb8 100644 --- a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt +++ b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt @@ -19,7 +19,7 @@ import io.legado.app.data.entities.BookSource import io.legado.app.help.ItemTouchCallback import io.legado.app.ui.sourceedit.SourceEditActivity import kotlinx.android.synthetic.main.fragment_book_source.* -import kotlinx.android.synthetic.main.view_titlebar.* +import kotlinx.android.synthetic.main.view_title_bar.* import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import org.jetbrains.anko.startActivity diff --git a/app/src/main/java/io/legado/app/ui/main/findbook/FindBookFragment.kt b/app/src/main/java/io/legado/app/ui/main/findbook/FindBookFragment.kt index f3a412af5..9a6c1e1ea 100644 --- a/app/src/main/java/io/legado/app/ui/main/findbook/FindBookFragment.kt +++ b/app/src/main/java/io/legado/app/ui/main/findbook/FindBookFragment.kt @@ -6,7 +6,7 @@ import android.view.MenuItem import android.view.View import io.legado.app.R import io.legado.app.base.BaseFragment -import kotlinx.android.synthetic.main.view_titlebar.* +import kotlinx.android.synthetic.main.view_title_bar.* class FindBookFragment : BaseFragment(R.layout.fragment_find_book) { diff --git a/app/src/main/java/io/legado/app/ui/main/myconfig/MyConfigFragment.kt b/app/src/main/java/io/legado/app/ui/main/myconfig/MyConfigFragment.kt index f54a7243b..1b8b81452 100644 --- a/app/src/main/java/io/legado/app/ui/main/myconfig/MyConfigFragment.kt +++ b/app/src/main/java/io/legado/app/ui/main/myconfig/MyConfigFragment.kt @@ -7,7 +7,7 @@ import android.view.View import io.legado.app.R import io.legado.app.base.BaseFragment import io.legado.app.ui.search.SearchActivity -import kotlinx.android.synthetic.main.view_titlebar.* +import kotlinx.android.synthetic.main.view_title_bar.* import org.jetbrains.anko.startActivity class MyConfigFragment : BaseFragment(R.layout.fragment_my_config) { diff --git a/app/src/main/java/io/legado/app/ui/widget/SearchBar.kt b/app/src/main/java/io/legado/app/ui/widget/SearchBar.kt new file mode 100644 index 000000000..393619d6e --- /dev/null +++ b/app/src/main/java/io/legado/app/ui/widget/SearchBar.kt @@ -0,0 +1,204 @@ +package io.legado.app.ui.widget + +import android.content.Context +import android.content.res.ColorStateList +import android.graphics.PorterDuff +import android.graphics.drawable.Drawable +import android.util.AttributeSet +import android.view.Menu +import android.view.View +import androidx.annotation.ColorInt +import androidx.annotation.StyleRes +import androidx.appcompat.app.AppCompatActivity +import androidx.appcompat.widget.Toolbar +import androidx.core.graphics.drawable.DrawableCompat +import com.google.android.material.appbar.AppBarLayout +import io.legado.app.R +import io.legado.app.lib.theme.DrawableUtils +import io.legado.app.lib.theme.ThemeStore +import io.legado.app.lib.theme.getPrimaryTextColor +import io.legado.app.lib.theme.isDarkTheme +import io.legado.app.utils.getStatusBarHeight +import org.jetbrains.anko.bottomPadding +import org.jetbrains.anko.topPadding + +class SearchBar(context: Context, attrs: AttributeSet?) : AppBarLayout(context, attrs) { + + val toolbar: Toolbar + val menu: Menu + get() = toolbar.menu + + var title: CharSequence? + get() = toolbar.title + set(title) { + toolbar.title = title + } + + var subtitle: CharSequence? + get() = toolbar.subtitle + set(subtitle) { + toolbar.subtitle = subtitle + } + + private val displayHomeAsUp: Boolean + private val navigationIconTint: ColorStateList? + private val navigationIconTintMode: Int + private val attachToActivity: Boolean + + init { + inflate(context, R.layout.view_search_bar, this) + setBackgroundColor(ThemeStore.primaryColor(context)) + toolbar = findViewById(R.id.toolbar) + val a = context.obtainStyledAttributes( + attrs, R.styleable.TitleBar, + R.attr.titleBarStyle, 0 + ) + navigationIconTint = a.getColorStateList(R.styleable.TitleBar_navigationIconTint) + navigationIconTintMode = a.getInt(R.styleable.TitleBar_navigationIconTintMode, 9) + attachToActivity = a.getBoolean(R.styleable.TitleBar_attachToActivity, true) + displayHomeAsUp = a.getBoolean(R.styleable.TitleBar_displayHomeAsUp, true) + + val navigationIcon = a.getDrawable(R.styleable.TitleBar_navigationIcon) + val navigationContentDescription = a.getText(R.styleable.TitleBar_navigationContentDescription) + val titleText = a.getString(R.styleable.TitleBar_title) + val subtitleText = a.getString(R.styleable.TitleBar_subtitle) + + toolbar.apply { + navigationIcon?.let { + this.navigationIcon = it + this.navigationContentDescription = navigationContentDescription + } + + if (a.hasValue(R.styleable.TitleBar_titleTextAppearance)) { + this.setTitleTextAppearance(context, a.getResourceId(R.styleable.TitleBar_titleTextAppearance, 0)) + } + + if (a.hasValue(R.styleable.TitleBar_titleTextColor)) { + this.setTitleTextColor(a.getColor(R.styleable.TitleBar_titleTextColor, -0x1)) + } + + if (a.hasValue(R.styleable.TitleBar_subtitleTextAppearance)) { + this.setSubtitleTextAppearance(context, a.getResourceId(R.styleable.TitleBar_subtitleTextAppearance, 0)) + } + + if (a.hasValue(R.styleable.TitleBar_subtitleTextColor)) { + this.setSubtitleTextColor(a.getColor(R.styleable.TitleBar_subtitleTextColor, -0x1)) + } + + if (!titleText.isNullOrBlank()) { + this.title = titleText + } + + if (!subtitleText.isNullOrBlank()) { + this.subtitle = subtitleText + } + } + + if (a.getBoolean(R.styleable.TitleBar_fitStatusBar, true)) { + topPadding = context.getStatusBarHeight() + } + + if (a.getBoolean(R.styleable.TitleBar_fitNavigationBar, false)) { + bottomPadding = context.getStatusBarHeight() + } + + a.recycle() + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + if (attachToActivity) { + attachToActivity(context) + } + wrapAppTheme() + } + + fun setNavigationOnClickListener(clickListener: ((View) -> Unit)) { + toolbar.setNavigationOnClickListener(clickListener) + } + + fun setTitle(titleId: Int) { + toolbar.setTitle(titleId) + } + + fun setSubTitle(subtitleId: Int) { + toolbar.setSubtitle(subtitleId) + } + + fun setTitleTextColor(@ColorInt color: Int) { + toolbar.setTitleTextColor(color) + } + + fun setTitleTextAppearance(@StyleRes resId: Int) { + toolbar.setTitleTextAppearance(context, resId) + } + + fun setSubTitleTextColor(@ColorInt color: Int) { + toolbar.setSubtitleTextColor(color) + } + + fun setSubTitleTextAppearance(@StyleRes resId: Int) { + toolbar.setSubtitleTextAppearance(context, resId) + } + + private fun wrapAppTheme() { + val primaryTextColor = context.getPrimaryTextColor(context.isDarkTheme()) + DrawableUtils.setTint(toolbar.overflowIcon, primaryTextColor) + toolbar.setTitleTextColor(primaryTextColor) + + if (navigationIconTint != null) { + wrapDrawableTint(toolbar.navigationIcon, navigationIconTint, navigationIconTintMode) + } else { + wrapDrawableTint(toolbar.navigationIcon, ColorStateList.valueOf(primaryTextColor), navigationIconTintMode) + } + } + + private fun attachToActivity(context: Context) { + val activity = getCompatActivity(context) + activity?.let { + it.setSupportActionBar(toolbar) + it.supportActionBar?.setDisplayHomeAsUpEnabled(displayHomeAsUp) + } + } + + private fun getCompatActivity(context: Context?): AppCompatActivity? { + if (context == null) return null + return when (context) { + is AppCompatActivity -> context + is androidx.appcompat.view.ContextThemeWrapper -> getCompatActivity(context.baseContext) + is android.view.ContextThemeWrapper -> getCompatActivity(context.baseContext) + else -> null + } + } + + private fun wrapDrawableTint(drawable: Drawable?, tintList: ColorStateList?, tintMode: Int) { + if (drawable == null || tintList == null) return + val wrappedDrawable = DrawableCompat.wrap(drawable.mutate()) + DrawableCompat.setTintList(wrappedDrawable, tintList) + DrawableCompat.setTintMode(wrappedDrawable, intToMode(tintMode)) + } + + private fun intToMode(`val`: Int): PorterDuff.Mode { + when (`val`) { + 0 -> return PorterDuff.Mode.CLEAR + 1 -> return PorterDuff.Mode.SRC + 2 -> return PorterDuff.Mode.DST + 3 -> return PorterDuff.Mode.SRC_OVER + 4 -> return PorterDuff.Mode.DST_OVER + 5 -> return PorterDuff.Mode.SRC_IN + 6 -> return PorterDuff.Mode.DST_IN + 7 -> return PorterDuff.Mode.SRC_OUT + 8 -> return PorterDuff.Mode.DST_OUT + 9 -> return PorterDuff.Mode.SRC_ATOP + 10 -> return PorterDuff.Mode.DST_ATOP + 11 -> return PorterDuff.Mode.XOR + 16 -> return PorterDuff.Mode.DARKEN + 17 -> return PorterDuff.Mode.LIGHTEN + 13 -> return PorterDuff.Mode.MULTIPLY + 14 -> return PorterDuff.Mode.SCREEN + 12 -> return PorterDuff.Mode.ADD + 15 -> return PorterDuff.Mode.OVERLAY + else -> return PorterDuff.Mode.CLEAR + } + } +} \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/widget/TitleBar.kt b/app/src/main/java/io/legado/app/ui/widget/TitleBar.kt index 3191f43a7..cdd758919 100644 --- a/app/src/main/java/io/legado/app/ui/widget/TitleBar.kt +++ b/app/src/main/java/io/legado/app/ui/widget/TitleBar.kt @@ -46,7 +46,7 @@ class TitleBar(context: Context, attrs: AttributeSet?) : AppBarLayout(context, a private val attachToActivity: Boolean init { - inflate(context, R.layout.view_titlebar, this) + inflate(context, R.layout.view_title_bar, this) setBackgroundColor(ThemeStore.primaryColor(context)) toolbar = findViewById(R.id.toolbar) val a = context.obtainStyledAttributes( diff --git a/app/src/main/res/layout/fragment_book_source.xml b/app/src/main/res/layout/fragment_book_source.xml index 1fd3e5cd8..b652d71a5 100644 --- a/app/src/main/res/layout/fragment_book_source.xml +++ b/app/src/main/res/layout/fragment_book_source.xml @@ -6,7 +6,7 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - + + + + + diff --git a/app/src/main/res/layout/view_titlebar.xml b/app/src/main/res/layout/view_title_bar.xml similarity index 100% rename from app/src/main/res/layout/view_titlebar.xml rename to app/src/main/res/layout/view_title_bar.xml From 128421dfc574e37a59f88e52a0a36b16d4726360 Mon Sep 17 00:00:00 2001 From: gedoor Date: Sat, 8 Jun 2019 12:41:06 +0800 Subject: [PATCH 34/66] =?UTF-8?q?=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/ui/widget/SearchBar.kt | 204 ------------------ .../main/res/layout/fragment_book_source.xml | 2 +- app/src/main/res/layout/view_search_bar.xml | 17 -- app/src/main/res/layout/view_title_bar.xml | 11 +- 4 files changed, 11 insertions(+), 223 deletions(-) delete mode 100644 app/src/main/java/io/legado/app/ui/widget/SearchBar.kt delete mode 100644 app/src/main/res/layout/view_search_bar.xml diff --git a/app/src/main/java/io/legado/app/ui/widget/SearchBar.kt b/app/src/main/java/io/legado/app/ui/widget/SearchBar.kt deleted file mode 100644 index 393619d6e..000000000 --- a/app/src/main/java/io/legado/app/ui/widget/SearchBar.kt +++ /dev/null @@ -1,204 +0,0 @@ -package io.legado.app.ui.widget - -import android.content.Context -import android.content.res.ColorStateList -import android.graphics.PorterDuff -import android.graphics.drawable.Drawable -import android.util.AttributeSet -import android.view.Menu -import android.view.View -import androidx.annotation.ColorInt -import androidx.annotation.StyleRes -import androidx.appcompat.app.AppCompatActivity -import androidx.appcompat.widget.Toolbar -import androidx.core.graphics.drawable.DrawableCompat -import com.google.android.material.appbar.AppBarLayout -import io.legado.app.R -import io.legado.app.lib.theme.DrawableUtils -import io.legado.app.lib.theme.ThemeStore -import io.legado.app.lib.theme.getPrimaryTextColor -import io.legado.app.lib.theme.isDarkTheme -import io.legado.app.utils.getStatusBarHeight -import org.jetbrains.anko.bottomPadding -import org.jetbrains.anko.topPadding - -class SearchBar(context: Context, attrs: AttributeSet?) : AppBarLayout(context, attrs) { - - val toolbar: Toolbar - val menu: Menu - get() = toolbar.menu - - var title: CharSequence? - get() = toolbar.title - set(title) { - toolbar.title = title - } - - var subtitle: CharSequence? - get() = toolbar.subtitle - set(subtitle) { - toolbar.subtitle = subtitle - } - - private val displayHomeAsUp: Boolean - private val navigationIconTint: ColorStateList? - private val navigationIconTintMode: Int - private val attachToActivity: Boolean - - init { - inflate(context, R.layout.view_search_bar, this) - setBackgroundColor(ThemeStore.primaryColor(context)) - toolbar = findViewById(R.id.toolbar) - val a = context.obtainStyledAttributes( - attrs, R.styleable.TitleBar, - R.attr.titleBarStyle, 0 - ) - navigationIconTint = a.getColorStateList(R.styleable.TitleBar_navigationIconTint) - navigationIconTintMode = a.getInt(R.styleable.TitleBar_navigationIconTintMode, 9) - attachToActivity = a.getBoolean(R.styleable.TitleBar_attachToActivity, true) - displayHomeAsUp = a.getBoolean(R.styleable.TitleBar_displayHomeAsUp, true) - - val navigationIcon = a.getDrawable(R.styleable.TitleBar_navigationIcon) - val navigationContentDescription = a.getText(R.styleable.TitleBar_navigationContentDescription) - val titleText = a.getString(R.styleable.TitleBar_title) - val subtitleText = a.getString(R.styleable.TitleBar_subtitle) - - toolbar.apply { - navigationIcon?.let { - this.navigationIcon = it - this.navigationContentDescription = navigationContentDescription - } - - if (a.hasValue(R.styleable.TitleBar_titleTextAppearance)) { - this.setTitleTextAppearance(context, a.getResourceId(R.styleable.TitleBar_titleTextAppearance, 0)) - } - - if (a.hasValue(R.styleable.TitleBar_titleTextColor)) { - this.setTitleTextColor(a.getColor(R.styleable.TitleBar_titleTextColor, -0x1)) - } - - if (a.hasValue(R.styleable.TitleBar_subtitleTextAppearance)) { - this.setSubtitleTextAppearance(context, a.getResourceId(R.styleable.TitleBar_subtitleTextAppearance, 0)) - } - - if (a.hasValue(R.styleable.TitleBar_subtitleTextColor)) { - this.setSubtitleTextColor(a.getColor(R.styleable.TitleBar_subtitleTextColor, -0x1)) - } - - if (!titleText.isNullOrBlank()) { - this.title = titleText - } - - if (!subtitleText.isNullOrBlank()) { - this.subtitle = subtitleText - } - } - - if (a.getBoolean(R.styleable.TitleBar_fitStatusBar, true)) { - topPadding = context.getStatusBarHeight() - } - - if (a.getBoolean(R.styleable.TitleBar_fitNavigationBar, false)) { - bottomPadding = context.getStatusBarHeight() - } - - a.recycle() - } - - override fun onAttachedToWindow() { - super.onAttachedToWindow() - if (attachToActivity) { - attachToActivity(context) - } - wrapAppTheme() - } - - fun setNavigationOnClickListener(clickListener: ((View) -> Unit)) { - toolbar.setNavigationOnClickListener(clickListener) - } - - fun setTitle(titleId: Int) { - toolbar.setTitle(titleId) - } - - fun setSubTitle(subtitleId: Int) { - toolbar.setSubtitle(subtitleId) - } - - fun setTitleTextColor(@ColorInt color: Int) { - toolbar.setTitleTextColor(color) - } - - fun setTitleTextAppearance(@StyleRes resId: Int) { - toolbar.setTitleTextAppearance(context, resId) - } - - fun setSubTitleTextColor(@ColorInt color: Int) { - toolbar.setSubtitleTextColor(color) - } - - fun setSubTitleTextAppearance(@StyleRes resId: Int) { - toolbar.setSubtitleTextAppearance(context, resId) - } - - private fun wrapAppTheme() { - val primaryTextColor = context.getPrimaryTextColor(context.isDarkTheme()) - DrawableUtils.setTint(toolbar.overflowIcon, primaryTextColor) - toolbar.setTitleTextColor(primaryTextColor) - - if (navigationIconTint != null) { - wrapDrawableTint(toolbar.navigationIcon, navigationIconTint, navigationIconTintMode) - } else { - wrapDrawableTint(toolbar.navigationIcon, ColorStateList.valueOf(primaryTextColor), navigationIconTintMode) - } - } - - private fun attachToActivity(context: Context) { - val activity = getCompatActivity(context) - activity?.let { - it.setSupportActionBar(toolbar) - it.supportActionBar?.setDisplayHomeAsUpEnabled(displayHomeAsUp) - } - } - - private fun getCompatActivity(context: Context?): AppCompatActivity? { - if (context == null) return null - return when (context) { - is AppCompatActivity -> context - is androidx.appcompat.view.ContextThemeWrapper -> getCompatActivity(context.baseContext) - is android.view.ContextThemeWrapper -> getCompatActivity(context.baseContext) - else -> null - } - } - - private fun wrapDrawableTint(drawable: Drawable?, tintList: ColorStateList?, tintMode: Int) { - if (drawable == null || tintList == null) return - val wrappedDrawable = DrawableCompat.wrap(drawable.mutate()) - DrawableCompat.setTintList(wrappedDrawable, tintList) - DrawableCompat.setTintMode(wrappedDrawable, intToMode(tintMode)) - } - - private fun intToMode(`val`: Int): PorterDuff.Mode { - when (`val`) { - 0 -> return PorterDuff.Mode.CLEAR - 1 -> return PorterDuff.Mode.SRC - 2 -> return PorterDuff.Mode.DST - 3 -> return PorterDuff.Mode.SRC_OVER - 4 -> return PorterDuff.Mode.DST_OVER - 5 -> return PorterDuff.Mode.SRC_IN - 6 -> return PorterDuff.Mode.DST_IN - 7 -> return PorterDuff.Mode.SRC_OUT - 8 -> return PorterDuff.Mode.DST_OUT - 9 -> return PorterDuff.Mode.SRC_ATOP - 10 -> return PorterDuff.Mode.DST_ATOP - 11 -> return PorterDuff.Mode.XOR - 16 -> return PorterDuff.Mode.DARKEN - 17 -> return PorterDuff.Mode.LIGHTEN - 13 -> return PorterDuff.Mode.MULTIPLY - 14 -> return PorterDuff.Mode.SCREEN - 12 -> return PorterDuff.Mode.ADD - 15 -> return PorterDuff.Mode.OVERLAY - else -> return PorterDuff.Mode.CLEAR - } - } -} \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_book_source.xml b/app/src/main/res/layout/fragment_book_source.xml index b652d71a5..1fd3e5cd8 100644 --- a/app/src/main/res/layout/fragment_book_source.xml +++ b/app/src/main/res/layout/fragment_book_source.xml @@ -6,7 +6,7 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - - - - - - diff --git a/app/src/main/res/layout/view_title_bar.xml b/app/src/main/res/layout/view_title_bar.xml index beb4cd073..981fa6af9 100644 --- a/app/src/main/res/layout/view_title_bar.xml +++ b/app/src/main/res/layout/view_title_bar.xml @@ -6,4 +6,13 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="?attr/actionBarStyle" - app:popupTheme="@style/AppTheme.PopupOverlay"/> + app:popupTheme="@style/AppTheme.PopupOverlay"> + + + + From 7b77644b4bd2be6c9070a39a9435e3ccd839ecd3 Mon Sep 17 00:00:00 2001 From: gedoor Date: Sat, 8 Jun 2019 12:52:32 +0800 Subject: [PATCH 35/66] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../legado/app/ui/main/booksource/BookSourceFragment.kt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt index 49416dcb8..7ace4bfce 100644 --- a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt +++ b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt @@ -33,6 +33,7 @@ class BookSourceFragment : BaseFragment(R.layout.fragment_book_source), BookSour setSupportToolbar(toolbar) initRecyclerView() initDataObservers() + initSearchView() } override fun onCompatCreateOptionsMenu(menu: Menu) { @@ -59,6 +60,13 @@ class BookSourceFragment : BaseFragment(R.layout.fragment_book_source), BookSour ItemTouchHelper(itemTouchCallback).attachToRecyclerView(recycler_view) } + private fun initSearchView() { + search_view.visibility = View.VISIBLE + search_view.onActionViewExpanded() + search_view.queryHint = getString(R.string.search_book_source) + search_view.clearFocus() + } + private fun initDataObservers() { bookSourceLiveDate?.removeObservers(viewLifecycleOwner) bookSourceLiveDate = LivePagedListBuilder(App.db.bookSourceDao().observeAll(), 30).build() From 01d23aacf1e9b43aabcab1918b03192a1dc0ae91 Mon Sep 17 00:00:00 2001 From: gedoor Date: Sat, 8 Jun 2019 13:08:09 +0800 Subject: [PATCH 36/66] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/ui/main/booksource/BookSourceFragment.kt | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt index 7ace4bfce..760920011 100644 --- a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt +++ b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt @@ -4,6 +4,7 @@ import android.os.Bundle import android.view.Menu import android.view.MenuItem import android.view.View +import androidx.appcompat.widget.SearchView import androidx.lifecycle.LiveData import androidx.lifecycle.Observer import androidx.paging.LivePagedListBuilder @@ -11,7 +12,6 @@ import androidx.paging.PagedList import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.RecyclerView import io.legado.app.App import io.legado.app.R import io.legado.app.base.BaseFragment @@ -24,7 +24,7 @@ import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import org.jetbrains.anko.startActivity -class BookSourceFragment : BaseFragment(R.layout.fragment_book_source), BookSourceAdapter.CallBack { +class BookSourceFragment : BaseFragment(R.layout.fragment_book_source), BookSourceAdapter.CallBack, SearchView.OnQueryTextListener { private lateinit var adapter: BookSourceAdapter private var bookSourceLiveDate: LiveData>? = null @@ -65,6 +65,7 @@ class BookSourceFragment : BaseFragment(R.layout.fragment_book_source), BookSour search_view.onActionViewExpanded() search_view.queryHint = getString(R.string.search_book_source) search_view.clearFocus() + search_view.setOnQueryTextListener(this) } private fun initDataObservers() { @@ -73,6 +74,14 @@ class BookSourceFragment : BaseFragment(R.layout.fragment_book_source), BookSour bookSourceLiveDate?.observe(viewLifecycleOwner, Observer { adapter.submitList(it) }) } + override fun onQueryTextChange(newText: String?): Boolean { + return false + } + + override fun onQueryTextSubmit(query: String?): Boolean { + return false + } + override fun del(bookSource: BookSource) { GlobalScope.launch { App.db.bookSourceDao().delete(bookSource) } } From 138a327258ace048049573aac30c2926c05d5b8b Mon Sep 17 00:00:00 2001 From: gedoor Date: Sat, 8 Jun 2019 13:29:53 +0800 Subject: [PATCH 37/66] =?UTF-8?q?=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/data/dao/BookSourceDao.kt | 3 +++ .../io/legado/app/ui/main/booksource/BookSourceFragment.kt | 6 ++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt b/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt index ee977b6ff..82fb01304 100644 --- a/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt +++ b/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt @@ -10,6 +10,9 @@ interface BookSourceDao { @Query("select * from book_sources order by customOrder asc") fun observeAll(): DataSource.Factory + @Query("select * from book_sources where name like :searchKey or `group` like :searchKey or origin like :searchKey order by customOrder asc") + fun observeSearch(searchKey:String = ""): DataSource.Factory + @Query("select * from book_sources where origin = :key") fun findByKey(key:String): BookSource? diff --git a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt index 760920011..88ae2af00 100644 --- a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt +++ b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt @@ -68,13 +68,15 @@ class BookSourceFragment : BaseFragment(R.layout.fragment_book_source), BookSour search_view.setOnQueryTextListener(this) } - private fun initDataObservers() { + private fun initDataObservers(searchKey:String = "") { bookSourceLiveDate?.removeObservers(viewLifecycleOwner) - bookSourceLiveDate = LivePagedListBuilder(App.db.bookSourceDao().observeAll(), 30).build() + val dataFactory = if (searchKey.isEmpty()) App.db.bookSourceDao().observeAll() else App.db.bookSourceDao().observeSearch(searchKey) + bookSourceLiveDate = LivePagedListBuilder(dataFactory, 30).build() bookSourceLiveDate?.observe(viewLifecycleOwner, Observer { adapter.submitList(it) }) } override fun onQueryTextChange(newText: String?): Boolean { + newText?.let { initDataObservers("%$it%") } return false } From b400ab884bf1b95b18fe36165ae046fbd0505ade Mon Sep 17 00:00:00 2001 From: gedoor Date: Sat, 8 Jun 2019 13:34:47 +0800 Subject: [PATCH 38/66] =?UTF-8?q?=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/layout/fragment_book_source.xml | 5 ++--- app/src/main/res/layout/fragment_bookshelf.xml | 5 ++--- app/src/main/res/layout/fragment_find_book.xml | 4 ++-- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/app/src/main/res/layout/fragment_book_source.xml b/app/src/main/res/layout/fragment_book_source.xml index 1fd3e5cd8..f60a278ac 100644 --- a/app/src/main/res/layout/fragment_book_source.xml +++ b/app/src/main/res/layout/fragment_book_source.xml @@ -1,5 +1,5 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_bookshelf.xml b/app/src/main/res/layout/fragment_bookshelf.xml index 4469491be..771b58344 100644 --- a/app/src/main/res/layout/fragment_bookshelf.xml +++ b/app/src/main/res/layout/fragment_bookshelf.xml @@ -1,5 +1,5 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_find_book.xml b/app/src/main/res/layout/fragment_find_book.xml index 09fe650ea..bd902b84c 100644 --- a/app/src/main/res/layout/fragment_find_book.xml +++ b/app/src/main/res/layout/fragment_find_book.xml @@ -1,5 +1,5 @@ - - \ No newline at end of file + \ No newline at end of file From 2539b1a67fdc0a08cd7ddd5c901b705bc16e05af Mon Sep 17 00:00:00 2001 From: gedoor Date: Sat, 8 Jun 2019 20:51:29 +0800 Subject: [PATCH 39/66] =?UTF-8?q?=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/ui/widget/BadgeView.kt | 233 ++++++++++++++++++ .../io/legado/app/ui/widget/RotateLoading.kt | 207 ++++++++++++++++ .../app/ui/widget/image/CoverImageView.kt | 56 +++++ .../app/ui/widget/image/FilletImageView.kt | 92 +++++++ .../main/res/layout/item_bookshelf_list.xml | 175 +++++++++++++ app/src/main/res/values/attrs.xml | 6 + 6 files changed, 769 insertions(+) create mode 100644 app/src/main/java/io/legado/app/ui/widget/BadgeView.kt create mode 100644 app/src/main/java/io/legado/app/ui/widget/RotateLoading.kt create mode 100644 app/src/main/java/io/legado/app/ui/widget/image/CoverImageView.kt create mode 100644 app/src/main/java/io/legado/app/ui/widget/image/FilletImageView.kt create mode 100644 app/src/main/res/layout/item_bookshelf_list.xml diff --git a/app/src/main/java/io/legado/app/ui/widget/BadgeView.kt b/app/src/main/java/io/legado/app/ui/widget/BadgeView.kt new file mode 100644 index 000000000..5f09a8744 --- /dev/null +++ b/app/src/main/java/io/legado/app/ui/widget/BadgeView.kt @@ -0,0 +1,233 @@ +package io.legado.app.ui.widget + +import android.content.Context +import android.graphics.Color +import android.graphics.drawable.ShapeDrawable +import android.graphics.drawable.shapes.RoundRectShape +import android.text.TextUtils +import android.util.AttributeSet +import android.util.TypedValue +import android.view.Gravity +import android.view.View +import android.view.ViewGroup +import android.widget.FrameLayout +import android.widget.FrameLayout.LayoutParams +import android.widget.TabWidget +import androidx.appcompat.widget.AppCompatTextView +import io.legado.app.R + + +/** + * Created by milad heydari on 5/6/2016. + */ +class BadgeView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyle: Int = android.R.attr.textViewStyle +) : AppCompatTextView(context, attrs, defStyle) { + + /** + * @return Returns true if view is hidden on badge value 0 or null; + */ + /** + * @param hideOnNull the hideOnNull to set + */ + var isHideOnNull = true + set(hideOnNull) { + field = hideOnNull + text = text + } + private var radius: Float = 0.toFloat() + + val badgeCount: Int? + get() { + if (text == null) { + return null + } + val text = text.toString() + try { + return Integer.parseInt(text) + } catch (e: NumberFormatException) { + return null + } + + } + + var badgeGravity: Int + get() { + val params = layoutParams as LayoutParams + return params.gravity + } + set(gravity) { + val params = layoutParams as LayoutParams + params.gravity = gravity + layoutParams = params + } + + val badgeMargin: IntArray + get() { + val params = layoutParams as LayoutParams + return intArrayOf(params.leftMargin, params.topMargin, params.rightMargin, params.bottomMargin) + } + + init { + + init() + } + + private fun init() { + if (layoutParams !is LayoutParams) { + val layoutParams = LayoutParams( + ViewGroup.LayoutParams.WRAP_CONTENT, + ViewGroup.LayoutParams.WRAP_CONTENT, + Gravity.CENTER + ) + setLayoutParams(layoutParams) + } + + // set default font + setTextColor(Color.WHITE) + //setTypeface(Typeface.DEFAULT_BOLD); + setTextSize(TypedValue.COMPLEX_UNIT_SP, 11f) + setPadding(dip2Px(5f), dip2Px(1f), dip2Px(5f), dip2Px(1f)) + radius = 8f + + // set default background + setBackground(radius, Color.parseColor("#d3321b")) + + gravity = Gravity.CENTER + + // default values + isHideOnNull = true + setBadgeCount(0) + minWidth = dip2Px(16f) + minHeight = dip2Px(16f) + } + + fun setBackground(dipRadius: Float, badgeColor: Int) { + val radius = dip2Px(dipRadius) + val radiusArray = floatArrayOf( + radius.toFloat(), + radius.toFloat(), + radius.toFloat(), + radius.toFloat(), + radius.toFloat(), + radius.toFloat(), + radius.toFloat(), + radius.toFloat() + ) + + val roundRect = RoundRectShape(radiusArray, null, null) + val bgDrawable = ShapeDrawable(roundRect) + bgDrawable.paint.color = badgeColor + background = bgDrawable + } + + fun setBackground(badgeColor: Int) { + setBackground(radius, badgeColor) + } + + /** + * @see android.widget.TextView.setText + */ + override fun setText(text: CharSequence, type: BufferType) { + if (isHideOnNull && TextUtils.isEmpty(text)) { + visibility = View.GONE + } else { + visibility = View.VISIBLE + } + super.setText(text, type) + } + + fun setBadgeCount(count: Int) { + text = count.toString() + if (count == 0) { + visibility = View.GONE + } + } + + fun setHighlight(highlight: Boolean) { + setBackground(resources.getColor(if (highlight) R.color.highlight else R.color.darker_gray)) + } + + fun setBadgeMargin(dipMargin: Int) { + setBadgeMargin(dipMargin, dipMargin, dipMargin, dipMargin) + } + + fun setBadgeMargin(leftDipMargin: Int, topDipMargin: Int, rightDipMargin: Int, bottomDipMargin: Int) { + val params = layoutParams as LayoutParams + params.leftMargin = dip2Px(leftDipMargin.toFloat()) + params.topMargin = dip2Px(topDipMargin.toFloat()) + params.rightMargin = dip2Px(rightDipMargin.toFloat()) + params.bottomMargin = dip2Px(bottomDipMargin.toFloat()) + layoutParams = params + } + + fun incrementBadgeCount(increment: Int) { + val count = badgeCount + if (count == null) { + setBadgeCount(increment) + } else { + setBadgeCount(increment + count) + } + } + + fun decrementBadgeCount(decrement: Int) { + incrementBadgeCount(-decrement) + } + + /** + * Attach the BadgeView to the TabWidget + * @param target the TabWidget to attach the BadgeView + * @param tabIndex index of the tab + */ + fun setTargetView(target: TabWidget, tabIndex: Int) { + val tabView = target.getChildTabViewAt(tabIndex) + setTargetView(tabView) + } + + /** + * Attach the BadgeView to the target view + * @param target the view to attach the BadgeView + */ + fun setTargetView(target: View?) { + if (parent != null) { + (parent as ViewGroup).removeView(this) + } + + if (target == null) { + return + } + + if (target.parent is FrameLayout) { + (target.parent as FrameLayout).addView(this) + + } else if (target.parent is ViewGroup) { + // use a new FrameLayout container for adding badge + val parentContainer = target.parent as ViewGroup + val groupIndex = parentContainer.indexOfChild(target) + parentContainer.removeView(target) + + val badgeContainer = FrameLayout(context) + val parentLayoutParams = target.layoutParams + + badgeContainer.layoutParams = parentLayoutParams + target.layoutParams = ViewGroup.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT + ) + + parentContainer.addView(badgeContainer, groupIndex, parentLayoutParams) + badgeContainer.addView(target) + + badgeContainer.addView(this) + } + + } + + /** + * converts dip to px + */ + private fun dip2Px(dip: Float): Int { + return (dip * context.resources.displayMetrics.density + 0.5f).toInt() + } +} diff --git a/app/src/main/java/io/legado/app/ui/widget/RotateLoading.kt b/app/src/main/java/io/legado/app/ui/widget/RotateLoading.kt new file mode 100644 index 000000000..c17bc7b5d --- /dev/null +++ b/app/src/main/java/io/legado/app/ui/widget/RotateLoading.kt @@ -0,0 +1,207 @@ +package io.legado.app.ui.widget + +import android.animation.Animator +import android.animation.AnimatorSet +import android.animation.ObjectAnimator +import android.content.Context +import android.graphics.Canvas +import android.graphics.Color +import android.graphics.Paint +import android.graphics.RectF +import android.util.AttributeSet +import android.util.TypedValue +import android.view.View +import android.view.animation.LinearInterpolator +import io.legado.app.R + +/** + * RotateLoading + * Created by Victor on 2015/4/28. + */ +class RotateLoading : View { + + private var mPaint: Paint? = null + + private var loadingRectF: RectF? = null + private var shadowRectF: RectF? = null + + private var topDegree = 10 + private var bottomDegree = 190 + + private var arc: Float = 0.toFloat() + + private var thisWidth: Int = 0 + + private var changeBigger = true + + private var shadowPosition: Int = 0 + + var isStart = false + private set + + var loadingColor: Int = 0 + + private var speedOfDegree: Int = 0 + + private var speedOfArc: Float = 0.toFloat() + + constructor(context: Context) : super(context) { + initView(context, null) + } + + constructor(context: Context, attrs: AttributeSet) : super(context, attrs) { + initView(context, attrs) + } + + constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super(context, attrs, defStyleAttr) { + initView(context, attrs) + } + + private fun initView(context: Context, attrs: AttributeSet?) { + loadingColor = Color.WHITE + thisWidth = dpToPx(context, DEFAULT_WIDTH.toFloat()) + shadowPosition = dpToPx(getContext(), DEFAULT_SHADOW_POSITION.toFloat()) + speedOfDegree = DEFAULT_SPEED_OF_DEGREE + + if (null != attrs) { + val typedArray = context.obtainStyledAttributes(attrs, R.styleable.RotateLoading) + loadingColor = typedArray.getColor(R.styleable.RotateLoading_loading_color, Color.WHITE) + thisWidth = typedArray.getDimensionPixelSize( + R.styleable.RotateLoading_loading_width, + dpToPx(context, DEFAULT_WIDTH.toFloat()) + ) + shadowPosition = typedArray.getInt(R.styleable.RotateLoading_shadow_position, DEFAULT_SHADOW_POSITION) + speedOfDegree = typedArray.getInt(R.styleable.RotateLoading_loading_speed, DEFAULT_SPEED_OF_DEGREE) + typedArray.recycle() + } + speedOfArc = (speedOfDegree / 4).toFloat() + mPaint = Paint() + mPaint!!.color = loadingColor + mPaint!!.isAntiAlias = true + mPaint!!.style = Paint.Style.STROKE + mPaint!!.strokeWidth = thisWidth.toFloat() + mPaint!!.strokeCap = Paint.Cap.ROUND + } + + override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) { + super.onSizeChanged(w, h, oldw, oldh) + + arc = 10f + + loadingRectF = + RectF((2 * thisWidth).toFloat(), (2 * thisWidth).toFloat(), (w - 2 * thisWidth).toFloat(), (h - 2 * thisWidth).toFloat()) + shadowRectF = RectF( + (2 * thisWidth + shadowPosition).toFloat(), + (2 * thisWidth + shadowPosition).toFloat(), + (w - 2 * thisWidth + shadowPosition).toFloat(), + (h - 2 * thisWidth + shadowPosition).toFloat() + ) + } + + + override fun onDraw(canvas: Canvas) { + super.onDraw(canvas) + + if (!isStart) { + return + } + + mPaint!!.color = Color.parseColor("#1a000000") + canvas.drawArc(shadowRectF!!, topDegree.toFloat(), arc, false, mPaint!!) + canvas.drawArc(shadowRectF!!, bottomDegree.toFloat(), arc, false, mPaint!!) + + mPaint!!.color = loadingColor + canvas.drawArc(loadingRectF!!, topDegree.toFloat(), arc, false, mPaint!!) + canvas.drawArc(loadingRectF!!, bottomDegree.toFloat(), arc, false, mPaint!!) + + topDegree += speedOfDegree + bottomDegree += speedOfDegree + if (topDegree > 360) { + topDegree = topDegree - 360 + } + if (bottomDegree > 360) { + bottomDegree = bottomDegree - 360 + } + + if (changeBigger) { + if (arc < 160) { + arc += speedOfArc + invalidate() + } + } else { + if (arc > speedOfDegree) { + arc -= 2 * speedOfArc + invalidate() + } + } + if (arc >= 160 || arc <= 10) { + changeBigger = !changeBigger + invalidate() + } + } + + fun start() { + startAnimator() + isStart = true + invalidate() + } + + fun stop() { + stopAnimator() + invalidate() + } + + private fun startAnimator() { + val scaleXAnimator = ObjectAnimator.ofFloat(this, "scaleX", 0.0f, 1f) + val scaleYAnimator = ObjectAnimator.ofFloat(this, "scaleY", 0.0f, 1f) + scaleXAnimator.setDuration(300) + scaleXAnimator.setInterpolator(LinearInterpolator()) + scaleYAnimator.setDuration(300) + scaleYAnimator.setInterpolator(LinearInterpolator()) + val animatorSet = AnimatorSet() + animatorSet.playTogether(scaleXAnimator, scaleYAnimator) + animatorSet.start() + } + + private fun stopAnimator() { + val scaleXAnimator = ObjectAnimator.ofFloat(this, "scaleX", 1f, 0f) + val scaleYAnimator = ObjectAnimator.ofFloat(this, "scaleY", 1f, 0f) + scaleXAnimator.setDuration(300) + scaleXAnimator.setInterpolator(LinearInterpolator()) + scaleYAnimator.setDuration(300) + scaleYAnimator.setInterpolator(LinearInterpolator()) + val animatorSet = AnimatorSet() + animatorSet.playTogether(scaleXAnimator, scaleYAnimator) + animatorSet.addListener(object : Animator.AnimatorListener { + override fun onAnimationStart(animation: Animator) { + + } + + override fun onAnimationEnd(animation: Animator) { + isStart = false + } + + override fun onAnimationCancel(animation: Animator) { + + } + + override fun onAnimationRepeat(animation: Animator) { + + } + }) + animatorSet.start() + } + + + fun dpToPx(context: Context, dpVal: Float): Int { + return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpVal, context.resources.displayMetrics).toInt() + } + + companion object { + + private val DEFAULT_WIDTH = 6 + private val DEFAULT_SHADOW_POSITION = 2 + private val DEFAULT_SPEED_OF_DEGREE = 10 + } + +} \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/widget/image/CoverImageView.kt b/app/src/main/java/io/legado/app/ui/widget/image/CoverImageView.kt new file mode 100644 index 000000000..289790a1a --- /dev/null +++ b/app/src/main/java/io/legado/app/ui/widget/image/CoverImageView.kt @@ -0,0 +1,56 @@ +package io.legado.app.ui.widget.image + +import android.annotation.SuppressLint +import android.content.Context +import android.graphics.Canvas +import android.graphics.Path +import android.util.AttributeSet + + +class CoverImageView : androidx.appcompat.widget.AppCompatImageView { + internal var width: Float = 0.toFloat() + internal var height: Float = 0.toFloat() + + constructor(context: Context) : super(context) + + constructor(context: Context, attrs: AttributeSet) : super(context, attrs) + + constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super(context, attrs, defStyleAttr) + + override fun onLayout(changed: Boolean, left: Int, top: Int, right: Int, bottom: Int) { + super.onLayout(changed, left, top, right, bottom) + width = getWidth().toFloat() + height = getHeight().toFloat() + } + + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + val measuredWidth = MeasureSpec.getSize(widthMeasureSpec) + val measuredHeight = measuredWidth * 7 / 5 + super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(measuredHeight, MeasureSpec.EXACTLY)) + } + + override fun onDraw(canvas: Canvas) { + if (width >= 10 && height > 10) { + @SuppressLint("DrawAllocation") + val path = Path() + //四个圆角 + path.moveTo(10f, 0f) + path.lineTo(width - 10, 0f) + path.quadTo(width, 0f, width, 10f) + path.lineTo(width, height - 10) + path.quadTo(width, height, width - 10, height) + path.lineTo(10f, height) + path.quadTo(0f, height, 0f, height - 10) + path.lineTo(0f, 10f) + path.quadTo(0f, 0f, 10f, 0f) + + canvas.clipPath(path) + } + super.onDraw(canvas) + } + + fun setHeight(height: Int) { + val width = height * 5 / 7 + minimumWidth = width + } +} diff --git a/app/src/main/java/io/legado/app/ui/widget/image/FilletImageView.kt b/app/src/main/java/io/legado/app/ui/widget/image/FilletImageView.kt new file mode 100644 index 000000000..bb6a4461e --- /dev/null +++ b/app/src/main/java/io/legado/app/ui/widget/image/FilletImageView.kt @@ -0,0 +1,92 @@ +package io.legado.app.ui.widget.image + +import android.annotation.SuppressLint +import android.content.Context +import android.graphics.Canvas +import android.graphics.Path +import android.util.AttributeSet +import androidx.appcompat.widget.AppCompatImageView +import io.legado.app.R + +class FilletImageView : AppCompatImageView { + internal var width: Float = 0.toFloat() + internal var height: Float = 0.toFloat() + private var leftTopRadius: Int = 0 + private var rightTopRadius: Int = 0 + private var rightBottomRadius: Int = 0 + private var leftBottomRadius: Int = 0 + + constructor(context: Context) : super(context) + + constructor(context: Context, attrs: AttributeSet) : super(context, attrs) { + init(context, attrs) + } + + constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super(context, attrs, defStyleAttr) { + init(context, attrs) + } + + private fun init(context: Context, attrs: AttributeSet) { + // 读取配置 + val array = context.obtainStyledAttributes(attrs, R.styleable.FilletImageView) + val defaultRadius = 5 + val radius = array.getDimensionPixelOffset(R.styleable.FilletImageView_radius, defaultRadius) + leftTopRadius = array.getDimensionPixelOffset(R.styleable.FilletImageView_left_top_radius, defaultRadius) + rightTopRadius = array.getDimensionPixelOffset(R.styleable.FilletImageView_right_top_radius, defaultRadius) + rightBottomRadius = + array.getDimensionPixelOffset(R.styleable.FilletImageView_right_bottom_radius, defaultRadius) + leftBottomRadius = array.getDimensionPixelOffset(R.styleable.FilletImageView_left_bottom_radius, defaultRadius) + + //如果四个角的值没有设置,那么就使用通用的radius的值。 + if (defaultRadius == leftTopRadius) { + leftTopRadius = radius + } + if (defaultRadius == rightTopRadius) { + rightTopRadius = radius + } + if (defaultRadius == rightBottomRadius) { + rightBottomRadius = radius + } + if (defaultRadius == leftBottomRadius) { + leftBottomRadius = radius + } + array.recycle() + + } + + override fun onLayout(changed: Boolean, left: Int, top: Int, right: Int, bottom: Int) { + super.onLayout(changed, left, top, right, bottom) + width = getWidth().toFloat() + height = getHeight().toFloat() + } + + override fun onDraw(canvas: Canvas) { + //这里做下判断,只有图片的宽高大于设置的圆角距离的时候才进行裁剪 + val maxLeft = Math.max(leftTopRadius, leftBottomRadius) + val maxRight = Math.max(rightTopRadius, rightBottomRadius) + val minWidth = maxLeft + maxRight + val maxTop = Math.max(leftTopRadius, rightTopRadius) + val maxBottom = Math.max(leftBottomRadius, rightBottomRadius) + val minHeight = maxTop + maxBottom + if (width >= minWidth && height > minHeight) { + @SuppressLint("DrawAllocation") val path = Path() + //四个角:右上,右下,左下,左上 + path.moveTo(leftTopRadius.toFloat(), 0f) + path.lineTo(width - rightTopRadius, 0f) + path.quadTo(width, 0f, width, rightTopRadius.toFloat()) + + path.lineTo(width, height - rightBottomRadius) + path.quadTo(width, height, width - rightBottomRadius, height) + + path.lineTo(leftBottomRadius.toFloat(), height) + path.quadTo(0f, height, 0f, height - leftBottomRadius) + + path.lineTo(0f, leftTopRadius.toFloat()) + path.quadTo(0f, 0f, leftTopRadius.toFloat(), 0f) + + canvas.clipPath(path) + } + super.onDraw(canvas) + } + +} diff --git a/app/src/main/res/layout/item_bookshelf_list.xml b/app/src/main/res/layout/item_bookshelf_list.xml new file mode 100644 index 000000000..03845fa18 --- /dev/null +++ b/app/src/main/res/layout/item_bookshelf_list.xml @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index 75b4d171f..42b4963d2 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -101,4 +101,10 @@ + + + + + + \ No newline at end of file From ca3b1a8334a3f01ea4773b2291a0b038cac126fa Mon Sep 17 00:00:00 2001 From: gedoor Date: Sat, 8 Jun 2019 23:07:57 +0800 Subject: [PATCH 40/66] =?UTF-8?q?=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/ui/main/MainActivity.kt | 2 ++ .../io/legado/app/ui/main/booksource/BookSourceAdapter.kt | 5 +++++ .../java/io/legado/app/ui/sourcedebug/SourceDebugActivity.kt | 2 ++ 3 files changed, 9 insertions(+) create mode 100644 app/src/main/java/io/legado/app/ui/sourcedebug/SourceDebugActivity.kt diff --git a/app/src/main/java/io/legado/app/ui/main/MainActivity.kt b/app/src/main/java/io/legado/app/ui/main/MainActivity.kt index ae30e38c8..b7ebfc759 100644 --- a/app/src/main/java/io/legado/app/ui/main/MainActivity.kt +++ b/app/src/main/java/io/legado/app/ui/main/MainActivity.kt @@ -16,6 +16,7 @@ import io.legado.app.constant.Bus import io.legado.app.help.permission.Permissions import io.legado.app.help.permission.PermissionsCompat import io.legado.app.help.storage.Restore +import io.legado.app.lib.theme.ThemeStore import io.legado.app.ui.main.bookshelf.BookshelfFragment import io.legado.app.ui.main.booksource.BookSourceFragment import io.legado.app.ui.main.findbook.FindBookFragment @@ -33,6 +34,7 @@ class MainActivity : BaseActivity(), BottomNavigationView.OnNavig get() = R.layout.activity_main override fun onViewModelCreated(viewModel: MainViewModel, savedInstanceState: Bundle?) { + bottom_navigation_view.setBackgroundColor(ThemeStore.backgroundColor(this)) view_pager_main.offscreenPageLimit = 3 view_pager_main.adapter = TabFragmentPageAdapter(supportFragmentManager) view_pager_main.addOnPageChangeListener(this) diff --git a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt index 6f468b563..92581f4e1 100644 --- a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt @@ -13,6 +13,7 @@ import io.legado.app.R import io.legado.app.data.entities.BookSource import io.legado.app.help.ItemTouchCallback import io.legado.app.help.ItemTouchCallback.OnItemTouchCallbackListener +import io.legado.app.lib.theme.ThemeStore import kotlinx.android.synthetic.main.item_book_source.view.* import org.jetbrains.anko.sdk27.listeners.onClick import java.util.* @@ -71,6 +72,10 @@ class BookSourceAdapter : PagedListAdapter, callBack: CallBack?) = with(itemView) { cb_book_source.text = String.format("%s (%s)", bookSource.name, bookSource.group) cb_book_source.onClick { diff --git a/app/src/main/java/io/legado/app/ui/sourcedebug/SourceDebugActivity.kt b/app/src/main/java/io/legado/app/ui/sourcedebug/SourceDebugActivity.kt new file mode 100644 index 000000000..3509d5dca --- /dev/null +++ b/app/src/main/java/io/legado/app/ui/sourcedebug/SourceDebugActivity.kt @@ -0,0 +1,2 @@ +package io.legado.app.ui.sourcedebug + From 35a1ce62cd82071e5fbce94f1dd5a7ef169fcc89 Mon Sep 17 00:00:00 2001 From: gedoor Date: Sat, 8 Jun 2019 23:11:27 +0800 Subject: [PATCH 41/66] =?UTF-8?q?=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/App.kt | 68 +++++++++++++------------- 1 file changed, 35 insertions(+), 33 deletions(-) diff --git a/app/src/main/java/io/legado/app/App.kt b/app/src/main/java/io/legado/app/App.kt index 41e8dffaf..3d689582a 100644 --- a/app/src/main/java/io/legado/app/App.kt +++ b/app/src/main/java/io/legado/app/App.kt @@ -89,41 +89,43 @@ class App : Application() { */ @RequiresApi(Build.VERSION_CODES.O) private fun createChannelId() { - val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager - //用唯一的ID创建渠道对象 - val downloadChannel = NotificationChannel( - channelIdDownload, - getString(R.string.download_offline), - NotificationManager.IMPORTANCE_LOW - ) - //初始化channel - downloadChannel.enableLights(false) - downloadChannel.enableVibration(false) - downloadChannel.setSound(null, null) + val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as? NotificationManager + notificationManager?.let { + //用唯一的ID创建渠道对象 + val downloadChannel = NotificationChannel( + channelIdDownload, + getString(R.string.download_offline), + NotificationManager.IMPORTANCE_LOW + ) + //初始化channel + downloadChannel.enableLights(false) + downloadChannel.enableVibration(false) + downloadChannel.setSound(null, null) - //用唯一的ID创建渠道对象 - val readAloudChannel = NotificationChannel( - channelIdReadAloud, - getString(R.string.read_aloud), - NotificationManager.IMPORTANCE_LOW - ) - //初始化channel - readAloudChannel.enableLights(false) - readAloudChannel.enableVibration(false) - readAloudChannel.setSound(null, null) + //用唯一的ID创建渠道对象 + val readAloudChannel = NotificationChannel( + channelIdReadAloud, + getString(R.string.read_aloud), + NotificationManager.IMPORTANCE_LOW + ) + //初始化channel + readAloudChannel.enableLights(false) + readAloudChannel.enableVibration(false) + readAloudChannel.setSound(null, null) - //用唯一的ID创建渠道对象 - val webChannel = NotificationChannel( - channelIdWeb, - getString(R.string.web_service), - NotificationManager.IMPORTANCE_LOW - ) - //初始化channel - webChannel.enableLights(false) - webChannel.enableVibration(false) - webChannel.setSound(null, null) + //用唯一的ID创建渠道对象 + val webChannel = NotificationChannel( + channelIdWeb, + getString(R.string.web_service), + NotificationManager.IMPORTANCE_LOW + ) + //初始化channel + webChannel.enableLights(false) + webChannel.enableVibration(false) + webChannel.setSound(null, null) - //向notification manager 提交channel - notificationManager.createNotificationChannels(Arrays.asList(downloadChannel, readAloudChannel, webChannel)) + //向notification manager 提交channel + it.createNotificationChannels(Arrays.asList(downloadChannel, readAloudChannel, webChannel)) + } } } From 0b019531f9d55a09e7cc6977beb53d4bb46a523f Mon Sep 17 00:00:00 2001 From: gedoor Date: Sat, 8 Jun 2019 23:14:03 +0800 Subject: [PATCH 42/66] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 4b63459b6..59f718d71 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -121,7 +121,7 @@ dependencies { //Retrofit implementation 'com.squareup.okhttp3:logging-interceptor:3.14.0' - implementation 'com.squareup.retrofit2:retrofit:2.5.0' + implementation 'com.squareup.retrofit2:retrofit:2.6.0' //Glide implementation 'com.github.bumptech.glide:glide:4.9.0' From 3039f993f3ad2c021f7c3d714b3a4c9605f61c60 Mon Sep 17 00:00:00 2001 From: gedoor Date: Sat, 8 Jun 2019 23:18:15 +0800 Subject: [PATCH 43/66] reformat code --- app/src/main/java/io/legado/app/App.kt | 2 +- .../java/io/legado/app/base/BaseFragment.kt | 4 +- .../base/adapter/InfiniteScrollListener.kt | 2 +- .../legado/app/base/adapter/ItemAnimation.kt | 7 +- .../app/base/adapter/ItemViewDelegate.kt | 2 +- .../adapter/animations/AlphaInAnimation.kt | 2 +- .../animations/SlideInBottomAnimation.kt | 3 +- .../animations/SlideInLeftAnimation.kt | 3 +- .../animations/SlideInRightAnimation.kt | 3 +- .../java/io/legado/app/constant/AppUtils.kt | 10 +- .../java/io/legado/app/data/AppDatabase.kt | 10 +- .../io/legado/app/data/dao/BookSourceDao.kt | 4 +- .../java/io/legado/app/data/entities/Book.kt | 65 ++-- .../io/legado/app/data/entities/BookSource.kt | 6 +- .../io/legado/app/data/entities/Chapter.kt | 27 +- .../app/data/entities/ExploreSearchUrl.kt | 14 +- .../legado/app/data/entities/ReplaceRule.kt | 26 +- .../legado/app/data/entities/SearchKeyword.kt | 4 +- .../app/data/entities/rule/BookInfoRule.kt | 2 +- .../app/data/entities/rule/ChapterRule.kt | 2 +- .../app/data/entities/rule/ContentRule.kt | 2 +- .../app/data/entities/rule/ExploreRule.kt | 2 +- .../legado/app/data/entities/rule/PutRule.kt | 2 +- .../io/legado/app/data/entities/rule/Rule.kt | 4 +- .../app/data/entities/rule/SearchRule.kt | 2 +- .../app/help/permission/RequestSource.kt | 1 - .../io/legado/app/lib/theme/view/ATESwitch.kt | 1 - .../java/io/legado/app/lib/webdav/WebDav.kt | 33 +- .../app/ui/config/ThemeConfigFragment.kt | 3 +- .../io/legado/app/ui/main/MainActivity.kt | 1 - .../io/legado/app/ui/main/MainViewModel.kt | 1 - .../ui/main/booksource/BookSourceAdapter.kt | 30 +- .../ui/main/booksource/BookSourceFragment.kt | 10 +- .../app/ui/main/findbook/FindBookFragment.kt | 1 - .../app/ui/replacerule/ReplaceRuleActivity.kt | 7 +- .../app/ui/replacerule/ReplaceRuleAdapter.kt | 10 +- .../io/legado/app/ui/search/SearchActivity.kt | 1 - .../app/ui/sourceedit/SourceEditActivity.kt | 6 +- .../app/ui/sourceedit/SourceEditAdapter.kt | 4 +- .../app/ui/sourceedit/SourceEditViewModel.kt | 3 +- .../io/legado/app/ui/widget/RotateLoading.kt | 7 +- .../ui/widget/dynamiclayout/ViewSwitcher.kt | 12 +- .../io/legado/app/utils/AnkoExtensions.kt | 2 - .../io/legado/app/utils/MenuExtensions.kt | 4 +- .../io/legado/app/utils/StringExtensions.kt | 3 +- .../java/io/legado/app/utils/ViewModelKt.kt | 3 +- .../main/res/layout/item_bookshelf_list.xml | 288 +++++++++--------- app/src/main/res/layout/item_relace_rule.xml | 3 +- app/src/main/res/layout/item_source_edit.xml | 12 +- app/src/main/res/layout/view_dynamic.xml | 24 +- app/src/main/res/layout/view_error.xml | 34 +-- 51 files changed, 357 insertions(+), 357 deletions(-) diff --git a/app/src/main/java/io/legado/app/App.kt b/app/src/main/java/io/legado/app/App.kt index 3d689582a..463ba1621 100644 --- a/app/src/main/java/io/legado/app/App.kt +++ b/app/src/main/java/io/legado/app/App.kt @@ -79,7 +79,7 @@ class App : Application() { } } - fun applyDayNight(){ + fun applyDayNight() { upThemeStore() initNightTheme() } diff --git a/app/src/main/java/io/legado/app/base/BaseFragment.kt b/app/src/main/java/io/legado/app/base/BaseFragment.kt index 559631422..0a35d8a1f 100644 --- a/app/src/main/java/io/legado/app/base/BaseFragment.kt +++ b/app/src/main/java/io/legado/app/base/BaseFragment.kt @@ -6,11 +6,9 @@ import android.view.MenuItem import androidx.appcompat.view.SupportMenuInflater import androidx.appcompat.widget.Toolbar import androidx.fragment.app.Fragment -import androidx.lifecycle.LifecycleOwner -import androidx.lifecycle.LifecycleRegistry import io.legado.app.utils.setIconColor -abstract class BaseFragment(contentLayoutId: Int = 0) : Fragment(contentLayoutId){ +abstract class BaseFragment(contentLayoutId: Int = 0) : Fragment(contentLayoutId) { var supportToolbar: Toolbar? = null private set diff --git a/app/src/main/java/io/legado/app/base/adapter/InfiniteScrollListener.kt b/app/src/main/java/io/legado/app/base/adapter/InfiniteScrollListener.kt index fc7c48bab..a679f3e08 100644 --- a/app/src/main/java/io/legado/app/base/adapter/InfiniteScrollListener.kt +++ b/app/src/main/java/io/legado/app/base/adapter/InfiniteScrollListener.kt @@ -14,7 +14,7 @@ abstract class InfiniteScrollListener() : RecyclerView.OnScrollListener() { override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) { // if (dy < 0 || dataLoading.isDataLoading()) return - val layoutManager:LinearLayoutManager = recyclerView.layoutManager as LinearLayoutManager + val layoutManager: LinearLayoutManager = recyclerView.layoutManager as LinearLayoutManager val visibleItemCount = recyclerView.childCount val totalItemCount = layoutManager.itemCount val firstVisibleItem = layoutManager.findFirstVisibleItemPosition() diff --git a/app/src/main/java/io/legado/app/base/adapter/ItemAnimation.kt b/app/src/main/java/io/legado/app/base/adapter/ItemAnimation.kt index 6db4a7415..cf2f40305 100644 --- a/app/src/main/java/io/legado/app/base/adapter/ItemAnimation.kt +++ b/app/src/main/java/io/legado/app/base/adapter/ItemAnimation.kt @@ -2,12 +2,7 @@ package io.legado.app.base.adapter import android.view.animation.Interpolator import android.view.animation.LinearInterpolator -import io.legado.app.base.adapter.animations.AlphaInAnimation -import io.legado.app.base.adapter.animations.BaseAnimation -import io.legado.app.base.adapter.animations.ScaleInAnimation -import io.legado.app.base.adapter.animations.SlideInBottomAnimation -import io.legado.app.base.adapter.animations.SlideInLeftAnimation -import io.legado.app.base.adapter.animations.SlideInRightAnimation +import io.legado.app.base.adapter.animations.* /** * Created by Invincible on 2017/12/15. diff --git a/app/src/main/java/io/legado/app/base/adapter/ItemViewDelegate.kt b/app/src/main/java/io/legado/app/base/adapter/ItemViewDelegate.kt index e3ec89060..b4cd06a2f 100644 --- a/app/src/main/java/io/legado/app/base/adapter/ItemViewDelegate.kt +++ b/app/src/main/java/io/legado/app/base/adapter/ItemViewDelegate.kt @@ -7,7 +7,7 @@ import android.content.Context * * item代理, */ -abstract class ItemViewDelegate(protected val context: Context, val layoutId: Int) { +abstract class ItemViewDelegate(protected val context: Context, val layoutId: Int) { abstract fun convert(holder: ItemViewHolder, item: ITEM, payloads: MutableList) diff --git a/app/src/main/java/io/legado/app/base/adapter/animations/AlphaInAnimation.kt b/app/src/main/java/io/legado/app/base/adapter/animations/AlphaInAnimation.kt index b307300a3..e3a5b523a 100644 --- a/app/src/main/java/io/legado/app/base/adapter/animations/AlphaInAnimation.kt +++ b/app/src/main/java/io/legado/app/base/adapter/animations/AlphaInAnimation.kt @@ -8,7 +8,7 @@ import android.view.View class AlphaInAnimation @JvmOverloads constructor(private val mFrom: Float = DEFAULT_ALPHA_FROM) : BaseAnimation { override fun getAnimators(view: View): Array = - arrayOf(ObjectAnimator.ofFloat(view, "alpha", mFrom, 1f)) + arrayOf(ObjectAnimator.ofFloat(view, "alpha", mFrom, 1f)) companion object { diff --git a/app/src/main/java/io/legado/app/base/adapter/animations/SlideInBottomAnimation.kt b/app/src/main/java/io/legado/app/base/adapter/animations/SlideInBottomAnimation.kt index 0fd2bfde6..941562201 100644 --- a/app/src/main/java/io/legado/app/base/adapter/animations/SlideInBottomAnimation.kt +++ b/app/src/main/java/io/legado/app/base/adapter/animations/SlideInBottomAnimation.kt @@ -3,11 +3,10 @@ package io.legado.app.base.adapter.animations import android.animation.Animator import android.animation.ObjectAnimator import android.view.View -import io.legado.app.base.adapter.animations.BaseAnimation class SlideInBottomAnimation : BaseAnimation { override fun getAnimators(view: View): Array = - arrayOf(ObjectAnimator.ofFloat(view, "translationY", view.measuredHeight.toFloat(), 0f)) + arrayOf(ObjectAnimator.ofFloat(view, "translationY", view.measuredHeight.toFloat(), 0f)) } diff --git a/app/src/main/java/io/legado/app/base/adapter/animations/SlideInLeftAnimation.kt b/app/src/main/java/io/legado/app/base/adapter/animations/SlideInLeftAnimation.kt index daa6f17a1..8cfae170b 100644 --- a/app/src/main/java/io/legado/app/base/adapter/animations/SlideInLeftAnimation.kt +++ b/app/src/main/java/io/legado/app/base/adapter/animations/SlideInLeftAnimation.kt @@ -3,12 +3,11 @@ package io.legado.app.base.adapter.animations import android.animation.Animator import android.animation.ObjectAnimator import android.view.View -import io.legado.app.base.adapter.animations.BaseAnimation class SlideInLeftAnimation : BaseAnimation { override fun getAnimators(view: View): Array = - arrayOf(ObjectAnimator.ofFloat(view, "translationX", -view.rootView.width.toFloat(), 0f)) + arrayOf(ObjectAnimator.ofFloat(view, "translationX", -view.rootView.width.toFloat(), 0f)) } diff --git a/app/src/main/java/io/legado/app/base/adapter/animations/SlideInRightAnimation.kt b/app/src/main/java/io/legado/app/base/adapter/animations/SlideInRightAnimation.kt index 71c8feac7..e7f1c85e5 100644 --- a/app/src/main/java/io/legado/app/base/adapter/animations/SlideInRightAnimation.kt +++ b/app/src/main/java/io/legado/app/base/adapter/animations/SlideInRightAnimation.kt @@ -3,12 +3,11 @@ package io.legado.app.base.adapter.animations import android.animation.Animator import android.animation.ObjectAnimator import android.view.View -import io.legado.app.base.adapter.animations.BaseAnimation class SlideInRightAnimation : BaseAnimation { override fun getAnimators(view: View): Array = - arrayOf(ObjectAnimator.ofFloat(view, "translationX", view.rootView.width.toFloat(), 0f)) + arrayOf(ObjectAnimator.ofFloat(view, "translationX", view.rootView.width.toFloat(), 0f)) } diff --git a/app/src/main/java/io/legado/app/constant/AppUtils.kt b/app/src/main/java/io/legado/app/constant/AppUtils.kt index 836736ee5..4910553be 100644 --- a/app/src/main/java/io/legado/app/constant/AppUtils.kt +++ b/app/src/main/java/io/legado/app/constant/AppUtils.kt @@ -4,9 +4,9 @@ import com.google.gson.Gson import com.google.gson.GsonBuilder object AppUtils { - val GSON_CONVERTER: Gson = GsonBuilder() - .disableHtmlEscaping() - .setPrettyPrinting() - .setDateFormat("yyyy-MM-dd HH:mm:ssZ") - .create() + val GSON_CONVERTER: Gson = GsonBuilder() + .disableHtmlEscaping() + .setPrettyPrinting() + .setDateFormat("yyyy-MM-dd HH:mm:ssZ") + .create() } \ No newline at end of file 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 81cd4db5d..60501adb2 100644 --- a/app/src/main/java/io/legado/app/data/AppDatabase.kt +++ b/app/src/main/java/io/legado/app/data/AppDatabase.kt @@ -7,15 +7,19 @@ import androidx.room.RoomDatabase import androidx.room.migration.Migration import androidx.sqlite.db.SupportSQLiteDatabase import io.legado.app.data.dao.BookDao -import io.legado.app.data.dao.ReplaceRuleDao import io.legado.app.data.dao.BookSourceDao +import io.legado.app.data.dao.ReplaceRuleDao import io.legado.app.data.entities.Book import io.legado.app.data.entities.BookSource import io.legado.app.data.entities.Chapter import io.legado.app.data.entities.ReplaceRule -@Database(entities = [Book::class, BookSource::class, Chapter::class, ReplaceRule::class], version = 1, exportSchema = true) +@Database( + entities = [Book::class, BookSource::class, Chapter::class, ReplaceRule::class], + version = 1, + exportSchema = true +) abstract class AppDatabase : RoomDatabase() { companion object { @@ -46,5 +50,5 @@ abstract class AppDatabase : RoomDatabase() { abstract fun bookDao(): BookDao abstract fun replaceRuleDao(): ReplaceRuleDao - abstract fun bookSourceDao() : BookSourceDao + abstract fun bookSourceDao(): BookSourceDao } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt b/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt index 82fb01304..a60ed4dca 100644 --- a/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt +++ b/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt @@ -11,10 +11,10 @@ interface BookSourceDao { fun observeAll(): DataSource.Factory @Query("select * from book_sources where name like :searchKey or `group` like :searchKey or origin like :searchKey order by customOrder asc") - fun observeSearch(searchKey:String = ""): DataSource.Factory + fun observeSearch(searchKey: String = ""): DataSource.Factory @Query("select * from book_sources where origin = :key") - fun findByKey(key:String): BookSource? + fun findByKey(key: String): BookSource? @Query("select count(*) from book_sources") fun allCount(): Int diff --git a/app/src/main/java/io/legado/app/data/entities/Book.kt b/app/src/main/java/io/legado/app/data/entities/Book.kt index 78b3694e8..b1a18961f 100644 --- a/app/src/main/java/io/legado/app/data/entities/Book.kt +++ b/app/src/main/java/io/legado/app/data/entities/Book.kt @@ -1,42 +1,45 @@ package io.legado.app.data.entities import android.os.Parcelable -import androidx.room.* +import androidx.room.Entity +import androidx.room.Index +import androidx.room.PrimaryKey import io.legado.app.constant.AppConst.NOT_AVAILABLE import kotlinx.android.parcel.Parcelize @Parcelize @Entity(tableName = "books", indices = [(Index(value = ["descUrl"], unique = true))]) -data class Book(@PrimaryKey - var descUrl: String = "", // 详情页Url(本地书源存储完整文件路径) - var tocUrl: String = "", // 目录页Url (toc=table of Contents) - var sourceId: Int = -1, // 书源规则id(默认-1,表示本地书籍) - var name: String? = null, // 书籍名称(书源获取) - var customName: String? = null, // 书籍名称(用户修改) - var author: String? = null, // 作者名称(书源获取) - var customAuthor: String? = null, // 作者名称(用户修改) - var tag: String? = null, // 分类信息(书源获取) - var customTag: String? = null, // 分类信息(用户修改) - var coverUrl: String? = null, // 封面Url(书源获取) - var customCoverUrl: String? = null, // 封面Url(用户修改) - var description: String? = null, // 简介内容(书源获取) - var customDescription: String? = null, // 简介内容(用户修改) - var charset: String? = null, // 自定义字符集名称(仅适用于本地书籍) - var type: Int = 0, // 0: 文本读物, 1: 有声读物 - var group: Int = 0, // 自定义分组索引号 - var latestChapterTitle: String? = null, // 最新章节标题 - var latestChapterTime: Long = 0, // 最新章节标题更新时间 - var lastCheckTime: Long = 0, // 最近一次更新书籍信息的时间 - var lastCheckCount: Int = 0, // 最近一次发现新章节的数量 - var totalChapterNum: Int = 0, // 书籍目录总数 - var durChapterTitle: String? = null, // 当前章节名称 - var durChapterIndex: Int = 0, // 当前章节索引 - var durChapterPos: Int = 0, // 当前阅读的进度(首行字符的索引位置) - var durChapterTime: Long = 0, // 最近一次阅读书籍的时间(打开正文的时间) - var canUpdate: Boolean = true, // 刷新书架时更新书籍信息 - var order: Int = 0, // 手动排序 - var useReplaceRule: Boolean = true, // 正文使用净化替换规则 - var variable: String? = null // 自定义书籍变量信息(用于书源规则检索书籍信息) +data class Book( + @PrimaryKey + var descUrl: String = "", // 详情页Url(本地书源存储完整文件路径) + var tocUrl: String = "", // 目录页Url (toc=table of Contents) + var sourceId: Int = -1, // 书源规则id(默认-1,表示本地书籍) + var name: String? = null, // 书籍名称(书源获取) + var customName: String? = null, // 书籍名称(用户修改) + var author: String? = null, // 作者名称(书源获取) + var customAuthor: String? = null, // 作者名称(用户修改) + var tag: String? = null, // 分类信息(书源获取) + var customTag: String? = null, // 分类信息(用户修改) + var coverUrl: String? = null, // 封面Url(书源获取) + var customCoverUrl: String? = null, // 封面Url(用户修改) + var description: String? = null, // 简介内容(书源获取) + var customDescription: String? = null, // 简介内容(用户修改) + var charset: String? = null, // 自定义字符集名称(仅适用于本地书籍) + var type: Int = 0, // 0: 文本读物, 1: 有声读物 + var group: Int = 0, // 自定义分组索引号 + var latestChapterTitle: String? = null, // 最新章节标题 + var latestChapterTime: Long = 0, // 最新章节标题更新时间 + var lastCheckTime: Long = 0, // 最近一次更新书籍信息的时间 + var lastCheckCount: Int = 0, // 最近一次发现新章节的数量 + var totalChapterNum: Int = 0, // 书籍目录总数 + var durChapterTitle: String? = null, // 当前章节名称 + var durChapterIndex: Int = 0, // 当前章节索引 + var durChapterPos: Int = 0, // 当前阅读的进度(首行字符的索引位置) + var durChapterTime: Long = 0, // 最近一次阅读书籍的时间(打开正文的时间) + var canUpdate: Boolean = true, // 刷新书架时更新书籍信息 + var order: Int = 0, // 手动排序 + var useReplaceRule: Boolean = true, // 正文使用净化替换规则 + var variable: String? = null // 自定义书籍变量信息(用于书源规则检索书籍信息) ) : Parcelable { fun getUnreadChapterNum() = Math.max(totalChapterNum - durChapterIndex - 1, 0) diff --git a/app/src/main/java/io/legado/app/data/entities/BookSource.kt b/app/src/main/java/io/legado/app/data/entities/BookSource.kt index 40a975434..64d1ce1b2 100644 --- a/app/src/main/java/io/legado/app/data/entities/BookSource.kt +++ b/app/src/main/java/io/legado/app/data/entities/BookSource.kt @@ -1,7 +1,9 @@ package io.legado.app.data.entities import android.os.Parcelable -import androidx.room.* +import androidx.room.Entity +import androidx.room.Index +import androidx.room.PrimaryKey import io.legado.app.constant.AppUtils.GSON_CONVERTER import io.legado.app.data.entities.rule.* import kotlinx.android.parcel.IgnoredOnParcel @@ -12,7 +14,7 @@ import kotlinx.android.parcel.Parcelize tableName = "book_sources", indices = [(Index(value = ["origin"], unique = false))] ) -data class BookSource ( +data class BookSource( @PrimaryKey var origin: String = "", // 地址,包括 http/https var name: String = "", // 名称 diff --git a/app/src/main/java/io/legado/app/data/entities/Chapter.kt b/app/src/main/java/io/legado/app/data/entities/Chapter.kt index 3513143d3..288a1bd94 100644 --- a/app/src/main/java/io/legado/app/data/entities/Chapter.kt +++ b/app/src/main/java/io/legado/app/data/entities/Chapter.kt @@ -4,26 +4,29 @@ import android.os.Parcelable import androidx.room.Entity import androidx.room.ForeignKey import androidx.room.Index -import androidx.room.PrimaryKey import kotlinx.android.parcel.Parcelize @Parcelize -@Entity(tableName = "chapters", +@Entity( + tableName = "chapters", primaryKeys = ["url", "bookUrl"], indices = [(Index(value = ["url"], unique = true)), (Index(value = ["bookUrl", "index"], unique = true))], - foreignKeys = [(ForeignKey(entity = Book::class, + foreignKeys = [(ForeignKey( + entity = Book::class, parentColumns = ["descUrl"], childColumns = ["bookUrl"], - onDelete = ForeignKey.CASCADE))]) // 删除书籍时自动删除章节 + onDelete = ForeignKey.CASCADE + ))] +) // 删除书籍时自动删除章节 data class Chapter( - var url: String = "", // 章节地址 - var title: String = "", // 章节标题 - var bookUrl: String = "", // 书籍地址 - var index: Int = 0, // 章节序号 - var resourceUrl: String? = null, // 音频真实URL - var tag: String? = null, // - var start: Long? = null, // 章节起始位置 - var end: Long? = null // 章节终止位置 + var url: String = "", // 章节地址 + var title: String = "", // 章节标题 + var bookUrl: String = "", // 书籍地址 + var index: Int = 0, // 章节序号 + var resourceUrl: String? = null, // 音频真实URL + var tag: String? = null, // + var start: Long? = null, // 章节起始位置 + var end: Long? = null // 章节终止位置 ) : Parcelable diff --git a/app/src/main/java/io/legado/app/data/entities/ExploreSearchUrl.kt b/app/src/main/java/io/legado/app/data/entities/ExploreSearchUrl.kt index 97a4d2bfb..4b8c8cde2 100644 --- a/app/src/main/java/io/legado/app/data/entities/ExploreSearchUrl.kt +++ b/app/src/main/java/io/legado/app/data/entities/ExploreSearchUrl.kt @@ -8,13 +8,17 @@ import androidx.room.PrimaryKey import kotlinx.android.parcel.Parcelize @Parcelize -@Entity(tableName = "explore_search_urls", +@Entity( + tableName = "explore_search_urls", indices = [(Index(value = ["sourceId", "url"], unique = true))], - foreignKeys = [(ForeignKey(entity = BookSource::class, + foreignKeys = [(ForeignKey( + entity = BookSource::class, parentColumns = ["sourceId"], childColumns = ["sourceId"], - onDelete = ForeignKey.CASCADE))]) // 删除书源时自动删除章节 -data class ExploreSearchUrl ( + onDelete = ForeignKey.CASCADE + ))] +) // 删除书源时自动删除章节 +data class ExploreSearchUrl( @PrimaryKey(autoGenerate = true) var esId: Int = 0, // 编号 var sourceId: Int = 0, // 书源Id @@ -25,5 +29,5 @@ data class ExploreSearchUrl ( var defOrder: Int = 0, // 默认排序,是在编辑书源的时候的顺序 var usage: Int = 0, // 使用次数,用于按使用次数排序 var lastUseTime: Long = 0L // 最后一次使用的时间 - ) : Parcelable +) : Parcelable diff --git a/app/src/main/java/io/legado/app/data/entities/ReplaceRule.kt b/app/src/main/java/io/legado/app/data/entities/ReplaceRule.kt index 8b5a0fda6..e43699c36 100644 --- a/app/src/main/java/io/legado/app/data/entities/ReplaceRule.kt +++ b/app/src/main/java/io/legado/app/data/entities/ReplaceRule.kt @@ -8,19 +8,21 @@ import androidx.room.PrimaryKey import kotlinx.android.parcel.Parcelize @Parcelize -@Entity(tableName = "replace_rules", - indices = [(Index(value = ["id"]))]) +@Entity( + tableName = "replace_rules", + indices = [(Index(value = ["id"]))] +) data class ReplaceRule( - @PrimaryKey(autoGenerate = true) - var id: Int = 0, - var name: String? = null, - var pattern: String? = null, - var replacement: String? = null, - var scope: String? = null, - var isEnabled: Boolean = true, - var isRegex: Boolean = true, - @ColumnInfo(name = "sortOrder") - var order: Int = 0 + @PrimaryKey(autoGenerate = true) + var id: Int = 0, + var name: String? = null, + var pattern: String? = null, + var replacement: String? = null, + var scope: String? = null, + var isEnabled: Boolean = true, + var isRegex: Boolean = true, + @ColumnInfo(name = "sortOrder") + var order: Int = 0 ) : Parcelable diff --git a/app/src/main/java/io/legado/app/data/entities/SearchKeyword.kt b/app/src/main/java/io/legado/app/data/entities/SearchKeyword.kt index e8dce4fd9..1c1c5015b 100644 --- a/app/src/main/java/io/legado/app/data/entities/SearchKeyword.kt +++ b/app/src/main/java/io/legado/app/data/entities/SearchKeyword.kt @@ -9,9 +9,9 @@ import kotlinx.android.parcel.Parcelize @Parcelize @Entity(tableName = "search_keywords", indices = [(Index(value = ["word"], unique = true))]) -data class SearchKeyword ( +data class SearchKeyword( @PrimaryKey var word: String = "", // 搜索关键词 var usage: Int = 1, // 使用次数 var lastUseTime: Long = 0 // 最后一次使用时间 -): Parcelable +) : Parcelable diff --git a/app/src/main/java/io/legado/app/data/entities/rule/BookInfoRule.kt b/app/src/main/java/io/legado/app/data/entities/rule/BookInfoRule.kt index 3dea36204..230da5358 100644 --- a/app/src/main/java/io/legado/app/data/entities/rule/BookInfoRule.kt +++ b/app/src/main/java/io/legado/app/data/entities/rule/BookInfoRule.kt @@ -1,6 +1,6 @@ package io.legado.app.data.entities.rule -data class BookInfoRule ( +data class BookInfoRule( var name: Rule, var author: Rule, var desc: Rule, diff --git a/app/src/main/java/io/legado/app/data/entities/rule/ChapterRule.kt b/app/src/main/java/io/legado/app/data/entities/rule/ChapterRule.kt index 830d1295a..e3799d048 100644 --- a/app/src/main/java/io/legado/app/data/entities/rule/ChapterRule.kt +++ b/app/src/main/java/io/legado/app/data/entities/rule/ChapterRule.kt @@ -1,6 +1,6 @@ package io.legado.app.data.entities.rule -data class ChapterRule ( +data class ChapterRule( var chapterList: Rule, var isReversed: Boolean = false, var title: Rule, diff --git a/app/src/main/java/io/legado/app/data/entities/rule/ContentRule.kt b/app/src/main/java/io/legado/app/data/entities/rule/ContentRule.kt index 9b809c9a2..a301c114e 100644 --- a/app/src/main/java/io/legado/app/data/entities/rule/ContentRule.kt +++ b/app/src/main/java/io/legado/app/data/entities/rule/ContentRule.kt @@ -1,6 +1,6 @@ package io.legado.app.data.entities.rule -data class ContentRule ( +data class ContentRule( var fulltext: Rule, var resourceUrl: Rule, var nextUrl: Rule diff --git a/app/src/main/java/io/legado/app/data/entities/rule/ExploreRule.kt b/app/src/main/java/io/legado/app/data/entities/rule/ExploreRule.kt index dd444801f..f1fe3e425 100644 --- a/app/src/main/java/io/legado/app/data/entities/rule/ExploreRule.kt +++ b/app/src/main/java/io/legado/app/data/entities/rule/ExploreRule.kt @@ -1,6 +1,6 @@ package io.legado.app.data.entities.rule -data class ExploreRule ( +data class ExploreRule( var bookList: Rule, var name: Rule, var author: Rule, diff --git a/app/src/main/java/io/legado/app/data/entities/rule/PutRule.kt b/app/src/main/java/io/legado/app/data/entities/rule/PutRule.kt index f5e1824ba..2b315eccb 100644 --- a/app/src/main/java/io/legado/app/data/entities/rule/PutRule.kt +++ b/app/src/main/java/io/legado/app/data/entities/rule/PutRule.kt @@ -1,6 +1,6 @@ package io.legado.app.data.entities.rule -data class PutRule ( +data class PutRule( var selector: Rule, var key: String ) \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/data/entities/rule/Rule.kt b/app/src/main/java/io/legado/app/data/entities/rule/Rule.kt index 4caf219f0..8d43370d1 100644 --- a/app/src/main/java/io/legado/app/data/entities/rule/Rule.kt +++ b/app/src/main/java/io/legado/app/data/entities/rule/Rule.kt @@ -1,9 +1,9 @@ package io.legado.app.data.entities.rule -import io.legado.app.utils.splitNotBlank import io.legado.app.utils.safeTrim +import io.legado.app.utils.splitNotBlank -data class Rule ( +data class Rule( var selectors: List, var regex: String?, var replacement: String?, diff --git a/app/src/main/java/io/legado/app/data/entities/rule/SearchRule.kt b/app/src/main/java/io/legado/app/data/entities/rule/SearchRule.kt index fbcb77da9..def4cfee0 100644 --- a/app/src/main/java/io/legado/app/data/entities/rule/SearchRule.kt +++ b/app/src/main/java/io/legado/app/data/entities/rule/SearchRule.kt @@ -1,6 +1,6 @@ package io.legado.app.data.entities.rule -data class SearchRule ( +data class SearchRule( var bookList: Rule, var name: Rule, var author: Rule, diff --git a/app/src/main/java/io/legado/app/help/permission/RequestSource.kt b/app/src/main/java/io/legado/app/help/permission/RequestSource.kt index 73c89df43..a822ff5ad 100644 --- a/app/src/main/java/io/legado/app/help/permission/RequestSource.kt +++ b/app/src/main/java/io/legado/app/help/permission/RequestSource.kt @@ -2,7 +2,6 @@ package io.legado.app.help.permission import android.content.Context import android.content.Intent -import androidx.fragment.app.FragmentManager interface RequestSource { diff --git a/app/src/main/java/io/legado/app/lib/theme/view/ATESwitch.kt b/app/src/main/java/io/legado/app/lib/theme/view/ATESwitch.kt index a27798055..8009d817a 100644 --- a/app/src/main/java/io/legado/app/lib/theme/view/ATESwitch.kt +++ b/app/src/main/java/io/legado/app/lib/theme/view/ATESwitch.kt @@ -3,7 +3,6 @@ package io.legado.app.lib.theme.view import android.content.Context import android.util.AttributeSet import android.view.View -import android.widget.Switch import androidx.appcompat.widget.SwitchCompat import io.legado.app.lib.theme.ATH import io.legado.app.lib.theme.ThemeStore diff --git a/app/src/main/java/io/legado/app/lib/webdav/WebDav.kt b/app/src/main/java/io/legado/app/lib/webdav/WebDav.kt index d06630002..452f07c15 100644 --- a/app/src/main/java/io/legado/app/lib/webdav/WebDav.kt +++ b/app/src/main/java/io/legado/app/lib/webdav/WebDav.kt @@ -3,29 +3,16 @@ package io.legado.app.lib.webdav import io.legado.app.lib.webdav.http.Handler import io.legado.app.lib.webdav.http.HttpAuth import io.legado.app.lib.webdav.http.OkHttp - +import okhttp3.* import org.jsoup.Jsoup -import org.jsoup.nodes.Document -import org.jsoup.nodes.Element -import org.jsoup.select.Elements - import java.io.File -import java.io.FileOutputStream import java.io.IOException import java.io.InputStream import java.io.UnsupportedEncodingException -import java.lang.reflect.Field import java.net.MalformedURLException import java.net.URL import java.net.URLEncoder -import java.util.ArrayList - -import okhttp3.Credentials -import okhttp3.MediaType -import okhttp3.OkHttpClient -import okhttp3.Request -import okhttp3.RequestBody -import okhttp3.Response +import java.util.* class WebDav @Throws(MalformedURLException::class) constructor(url: String) { @@ -50,9 +37,9 @@ constructor(url: String) { get() = url.toString() private val inputStream: InputStream? - get() = getUrl()?.let {url -> + get() = getUrl()?.let { url -> val request = Request.Builder().url(url) - HttpAuth.auth?.let {request.header("Authorization", Credentials.basic(it.user, it.pass)) } + HttpAuth.auth?.let { request.header("Authorization", Credentials.basic(it.user, it.pass)) } try { return okHttpClient.newCall(request.build()).execute().body()?.byteStream() @@ -113,9 +100,9 @@ constructor(url: String) { @Throws(IOException::class) @JvmOverloads fun listFiles(propsList: ArrayList = ArrayList()): List { - propFindResponse(propsList)?.let {response-> + propFindResponse(propsList)?.let { response -> if (response.isSuccessful) { - response.body()?.let {body-> + response.body()?.let { body -> return parseDir(body.string()) } } @@ -136,14 +123,14 @@ constructor(url: String) { } else { String.format(DIR, requestProps.toString() + "\n") } - getUrl()?.let {url-> + getUrl()?.let { url -> val request = Request.Builder() .url(url) // 添加RequestBody对象,可以只返回的属性。如果设为null,则会返回全部属性 // 注意:尽量手动指定需要返回的属性。若返回全部属性,可能后由于Prop.java里没有该属性名,而崩溃。 .method("PROPFIND", RequestBody.create(MediaType.parse("text/plain"), requestPropsStr)) - HttpAuth.auth?.let {request.header("Authorization", Credentials.basic(it.user, it.pass)) } + HttpAuth.auth?.let { request.header("Authorization", Credentials.basic(it.user, it.pass)) } request.header("Depth", if (depth < 0) "infinity" else Integer.toString(depth)) @@ -156,7 +143,7 @@ constructor(url: String) { val list = ArrayList() val document = Jsoup.parse(s) val elements = document.getElementsByTag("d:response") - getUrl()?.let { url-> + getUrl()?.let { url -> val baseUrl = if (url.endsWith("/")) url else "$url/" for (element in elements) { val href = element.getElementsByTag("d:href")[0].text() @@ -184,7 +171,7 @@ constructor(url: String) { */ @Throws(IOException::class) fun makeAsDir(): Boolean { - getUrl()?.let { url-> + getUrl()?.let { url -> val request = Request.Builder() .url(url) .method("MKCOL", null) diff --git a/app/src/main/java/io/legado/app/ui/config/ThemeConfigFragment.kt b/app/src/main/java/io/legado/app/ui/config/ThemeConfigFragment.kt index 30b29b7dc..8f9ded816 100644 --- a/app/src/main/java/io/legado/app/ui/config/ThemeConfigFragment.kt +++ b/app/src/main/java/io/legado/app/ui/config/ThemeConfigFragment.kt @@ -3,7 +3,6 @@ package io.legado.app.ui.config import android.content.SharedPreferences import android.os.Bundle import android.os.Handler -import android.os.Looper import androidx.appcompat.app.AlertDialog import androidx.preference.PreferenceFragmentCompat import com.jeremyliao.liveeventbus.LiveEventBus @@ -87,7 +86,7 @@ class ThemeConfigFragment : PreferenceFragmentCompat(), SharedPreferences.OnShar if (App.INSTANCE.getPrefBoolean("isNightTheme", false) == isNightTheme) { App.INSTANCE.upThemeStore() LiveEventBus.get().with(Bus.recreate).post("") - Handler().postDelayed({activity?.recreate()}, 100) + Handler().postDelayed({ activity?.recreate() }, 100) } } diff --git a/app/src/main/java/io/legado/app/ui/main/MainActivity.kt b/app/src/main/java/io/legado/app/ui/main/MainActivity.kt index b7ebfc759..973380645 100644 --- a/app/src/main/java/io/legado/app/ui/main/MainActivity.kt +++ b/app/src/main/java/io/legado/app/ui/main/MainActivity.kt @@ -1,7 +1,6 @@ package io.legado.app.ui.main import android.os.Bundle -import android.view.Menu import android.view.MenuItem import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager diff --git a/app/src/main/java/io/legado/app/ui/main/MainViewModel.kt b/app/src/main/java/io/legado/app/ui/main/MainViewModel.kt index 671f1c660..82a9146c5 100644 --- a/app/src/main/java/io/legado/app/ui/main/MainViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/main/MainViewModel.kt @@ -6,5 +6,4 @@ import androidx.lifecycle.AndroidViewModel class MainViewModel(application: Application) : AndroidViewModel(application) { - } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt index 92581f4e1..7e0a40998 100644 --- a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt @@ -4,20 +4,16 @@ import android.view.LayoutInflater import android.view.Menu import android.view.View import android.view.ViewGroup -import android.widget.CompoundButton import android.widget.PopupMenu import androidx.paging.PagedListAdapter import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.RecyclerView import io.legado.app.R import io.legado.app.data.entities.BookSource -import io.legado.app.help.ItemTouchCallback import io.legado.app.help.ItemTouchCallback.OnItemTouchCallbackListener import io.legado.app.lib.theme.ThemeStore import kotlinx.android.synthetic.main.item_book_source.view.* import org.jetbrains.anko.sdk27.listeners.onClick -import java.util.* -import kotlin.collections.HashSet class BookSourceAdapter : PagedListAdapter(DIFF_CALLBACK) { @@ -48,8 +44,8 @@ class BookSourceAdapter : PagedListAdapter - targetSource?.let { b-> + srcSource?.let { a -> + targetSource?.let { b -> a.customOrder = targetPosition b.customOrder = srcPosition callBack?.update(a, b) @@ -86,25 +82,31 @@ class BookSourceAdapter : PagedListAdapter{ + R.id.menu_edit -> { callBack?.edit(bookSource) - true} - R.id.menu_del ->{ + true + } + R.id.menu_del -> { callBack?.del(bookSource) - true} - R.id.menu_top ->{ true} - else -> {false} + true + } + R.id.menu_top -> { + true + } + else -> { + false + } } } popupMenu.show() diff --git a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt index 88ae2af00..de7e9e7e6 100644 --- a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt +++ b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt @@ -24,7 +24,8 @@ import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import org.jetbrains.anko.startActivity -class BookSourceFragment : BaseFragment(R.layout.fragment_book_source), BookSourceAdapter.CallBack, SearchView.OnQueryTextListener { +class BookSourceFragment : BaseFragment(R.layout.fragment_book_source), BookSourceAdapter.CallBack, + SearchView.OnQueryTextListener { private lateinit var adapter: BookSourceAdapter private var bookSourceLiveDate: LiveData>? = null @@ -68,9 +69,12 @@ class BookSourceFragment : BaseFragment(R.layout.fragment_book_source), BookSour search_view.setOnQueryTextListener(this) } - private fun initDataObservers(searchKey:String = "") { + private fun initDataObservers(searchKey: String = "") { bookSourceLiveDate?.removeObservers(viewLifecycleOwner) - val dataFactory = if (searchKey.isEmpty()) App.db.bookSourceDao().observeAll() else App.db.bookSourceDao().observeSearch(searchKey) + val dataFactory = + if (searchKey.isEmpty()) App.db.bookSourceDao().observeAll() else App.db.bookSourceDao().observeSearch( + searchKey + ) bookSourceLiveDate = LivePagedListBuilder(dataFactory, 30).build() bookSourceLiveDate?.observe(viewLifecycleOwner, Observer { adapter.submitList(it) }) } diff --git a/app/src/main/java/io/legado/app/ui/main/findbook/FindBookFragment.kt b/app/src/main/java/io/legado/app/ui/main/findbook/FindBookFragment.kt index 9a6c1e1ea..7a1804151 100644 --- a/app/src/main/java/io/legado/app/ui/main/findbook/FindBookFragment.kt +++ b/app/src/main/java/io/legado/app/ui/main/findbook/FindBookFragment.kt @@ -2,7 +2,6 @@ package io.legado.app.ui.main.findbook import android.os.Bundle import android.view.Menu -import android.view.MenuItem import android.view.View import io.legado.app.R import io.legado.app.base.BaseFragment diff --git a/app/src/main/java/io/legado/app/ui/replacerule/ReplaceRuleActivity.kt b/app/src/main/java/io/legado/app/ui/replacerule/ReplaceRuleActivity.kt index 22d27b639..c78d2cf73 100644 --- a/app/src/main/java/io/legado/app/ui/replacerule/ReplaceRuleActivity.kt +++ b/app/src/main/java/io/legado/app/ui/replacerule/ReplaceRuleActivity.kt @@ -40,19 +40,21 @@ class ReplaceRuleActivity : BaseActivity() { private fun initRecyclerView() { rv_replace_rule.layoutManager = LinearLayoutManager(this) adapter = ReplaceRuleAdapter(this) - adapter.onClickListener = object: ReplaceRuleAdapter.OnClickListener { + adapter.onClickListener = object : ReplaceRuleAdapter.OnClickListener { override fun update(rule: ReplaceRule) { doAsync { App.db.replaceRuleDao().update(rule) updateEnableAll() } } + override fun delete(rule: ReplaceRule) { doAsync { App.db.replaceRuleDao().delete(rule) updateEnableAll() } } + override fun edit(rule: ReplaceRule) { doAsync { App.db.replaceRuleDao().enableAll(!allEnabled) @@ -67,7 +69,8 @@ class ReplaceRuleActivity : BaseActivity() { DividerItemDecoration(this, DividerItemDecoration.VERTICAL).apply { ContextCompat.getDrawable(baseContext, R.drawable.ic_divider)?.let { Log.e(APP_TAG, it.toString()) - this.setDrawable(it) } + this.setDrawable(it) + } }) } diff --git a/app/src/main/java/io/legado/app/ui/replacerule/ReplaceRuleAdapter.kt b/app/src/main/java/io/legado/app/ui/replacerule/ReplaceRuleAdapter.kt index d9befdd97..80cc79cce 100644 --- a/app/src/main/java/io/legado/app/ui/replacerule/ReplaceRuleAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/replacerule/ReplaceRuleAdapter.kt @@ -1,7 +1,6 @@ package io.legado.app.ui.replacerule import android.content.Context -import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -10,7 +9,6 @@ import androidx.paging.PagedListAdapter import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.RecyclerView import io.legado.app.R -import io.legado.app.constant.AppConst.APP_TAG import io.legado.app.data.entities.ReplaceRule import kotlinx.android.synthetic.main.item_relace_rule.view.* import org.jetbrains.anko.sdk27.listeners.onClick @@ -52,11 +50,11 @@ class ReplaceRuleAdapter(context: Context) : class MyViewHolder(view: View) : RecyclerView.ViewHolder(view) { fun bind(rule: ReplaceRule, listener: OnClickListener?) = with(itemView) { - tv_name.text = rule.name - swt_enabled.isChecked = rule.isEnabled + tv_name.text = rule.name + swt_enabled.isChecked = rule.isEnabled // divider.isGone = hideDivider - iv_delete.isGone = true - iv_edit.isGone = true + iv_delete.isGone = true + iv_edit.isGone = true // iv_delete.onClick { listener?.delete(rule) } // iv_edit.onClick { listener?.edit(rule) } swt_enabled.onClick { diff --git a/app/src/main/java/io/legado/app/ui/search/SearchActivity.kt b/app/src/main/java/io/legado/app/ui/search/SearchActivity.kt index d11694683..6a6a02fb0 100644 --- a/app/src/main/java/io/legado/app/ui/search/SearchActivity.kt +++ b/app/src/main/java/io/legado/app/ui/search/SearchActivity.kt @@ -4,7 +4,6 @@ import android.os.Bundle import io.legado.app.R import io.legado.app.base.BaseActivity import io.legado.app.utils.getViewModel -import org.jetbrains.anko.startActivity class SearchActivity : BaseActivity() { diff --git a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt index 178f0fc68..68a0d71df 100644 --- a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt +++ b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt @@ -5,14 +5,14 @@ import android.view.Menu import android.view.MenuItem import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager -import io.legado.app.App import io.legado.app.R import io.legado.app.base.BaseActivity import io.legado.app.data.entities.BookSource import io.legado.app.utils.getViewModel import kotlinx.android.synthetic.main.activity_source_edit.* -import kotlinx.coroutines.* -import org.jetbrains.anko.UI +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.launch import org.jetbrains.anko.toast class SourceEditActivity : BaseActivity() { diff --git a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditAdapter.kt b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditAdapter.kt index be301e4c1..8b54223fe 100644 --- a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditAdapter.kt @@ -11,7 +11,7 @@ import kotlinx.android.synthetic.main.item_source_edit.view.* class SourceEditAdapter : RecyclerView.Adapter() { - var sourceEditEntities:ArrayList = ArrayList() + var sourceEditEntities: ArrayList = ArrayList() override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { return MyViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.item_source_edit, parent, false)) @@ -60,7 +60,7 @@ class SourceEditAdapter : RecyclerView.Adapter() } override fun afterTextChanged(s: Editable?) { - sourceEditEntity.value=(s?.toString()) + sourceEditEntity.value = (s?.toString()) } } editText.addTextChangedListener(textWatcher) diff --git a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditViewModel.kt b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditViewModel.kt index ed90408f9..b1af68e88 100644 --- a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditViewModel.kt @@ -4,14 +4,13 @@ import android.app.Application import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.MutableLiveData import io.legado.app.App -import io.legado.app.data.dao.BookSourceDao import io.legado.app.data.entities.BookSource import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch class SourceEditViewModel(application: Application) : AndroidViewModel(application) { - val sourceLiveData:MutableLiveData = MutableLiveData() + val sourceLiveData: MutableLiveData = MutableLiveData() fun setBookSource(key: String) { GlobalScope.launch { diff --git a/app/src/main/java/io/legado/app/ui/widget/RotateLoading.kt b/app/src/main/java/io/legado/app/ui/widget/RotateLoading.kt index c17bc7b5d..441efc6e0 100644 --- a/app/src/main/java/io/legado/app/ui/widget/RotateLoading.kt +++ b/app/src/main/java/io/legado/app/ui/widget/RotateLoading.kt @@ -89,7 +89,12 @@ class RotateLoading : View { arc = 10f loadingRectF = - RectF((2 * thisWidth).toFloat(), (2 * thisWidth).toFloat(), (w - 2 * thisWidth).toFloat(), (h - 2 * thisWidth).toFloat()) + RectF( + (2 * thisWidth).toFloat(), + (2 * thisWidth).toFloat(), + (w - 2 * thisWidth).toFloat(), + (h - 2 * thisWidth).toFloat() + ) shadowRectF = RectF( (2 * thisWidth + shadowPosition).toFloat(), (2 * thisWidth + shadowPosition).toFloat(), diff --git a/app/src/main/java/io/legado/app/ui/widget/dynamiclayout/ViewSwitcher.kt b/app/src/main/java/io/legado/app/ui/widget/dynamiclayout/ViewSwitcher.kt index b985d79f8..dbcc0f132 100644 --- a/app/src/main/java/io/legado/app/ui/widget/dynamiclayout/ViewSwitcher.kt +++ b/app/src/main/java/io/legado/app/ui/widget/dynamiclayout/ViewSwitcher.kt @@ -5,12 +5,12 @@ import androidx.annotation.StringRes interface ViewSwitcher { - companion object{ - const val SHOW_CONTENT_VIEW = 0 - const val SHOW_ERROR_VIEW = 1 - const val SHOW_EMPTY_VIEW = 2 - const val SHOW_PROGRESS_VIEW = 3 - } + companion object { + const val SHOW_CONTENT_VIEW = 0 + const val SHOW_ERROR_VIEW = 1 + const val SHOW_EMPTY_VIEW = 2 + const val SHOW_PROGRESS_VIEW = 3 + } @Retention(AnnotationRetention.SOURCE) @IntDef(SHOW_CONTENT_VIEW, SHOW_ERROR_VIEW, SHOW_EMPTY_VIEW, SHOW_PROGRESS_VIEW) diff --git a/app/src/main/java/io/legado/app/utils/AnkoExtensions.kt b/app/src/main/java/io/legado/app/utils/AnkoExtensions.kt index 591bd4ade..44bdf4f15 100644 --- a/app/src/main/java/io/legado/app/utils/AnkoExtensions.kt +++ b/app/src/main/java/io/legado/app/utils/AnkoExtensions.kt @@ -1,10 +1,8 @@ package io.legado.app.utils -import android.app.Activity import android.content.res.ColorStateList import android.graphics.drawable.Drawable import android.view.View -import android.view.WindowManager import androidx.annotation.ColorRes import androidx.annotation.DrawableRes import androidx.annotation.StringRes diff --git a/app/src/main/java/io/legado/app/utils/MenuExtensions.kt b/app/src/main/java/io/legado/app/utils/MenuExtensions.kt index 787f083dd..f573804c4 100644 --- a/app/src/main/java/io/legado/app/utils/MenuExtensions.kt +++ b/app/src/main/java/io/legado/app/utils/MenuExtensions.kt @@ -6,7 +6,9 @@ import androidx.appcompat.view.menu.MenuBuilder import androidx.appcompat.view.menu.MenuItemImpl import androidx.core.view.forEach import io.legado.app.R -import io.legado.app.lib.theme.* +import io.legado.app.lib.theme.DrawableUtils +import io.legado.app.lib.theme.getPrimaryTextColor +import io.legado.app.lib.theme.isDarkTheme fun Menu.setIconColor(context: Context): Menu = this.let { menu -> if (menu is MenuBuilder) { diff --git a/app/src/main/java/io/legado/app/utils/StringExtensions.kt b/app/src/main/java/io/legado/app/utils/StringExtensions.kt index 477ff0d19..92f2801de 100644 --- a/app/src/main/java/io/legado/app/utils/StringExtensions.kt +++ b/app/src/main/java/io/legado/app/utils/StringExtensions.kt @@ -1,4 +1,5 @@ package io.legado.app.utils + // import org.apache.commons.text.StringEscapeUtils fun String?.safeTrim() = if (this.isNullOrBlank()) null else this.trim() @@ -7,6 +8,6 @@ fun String.isAbsUrl() = this.startsWith("http://", true) || this.startsWith("https://", true) fun String.splitNotBlank(delim: String) = if (!this.contains(delim)) sequenceOf(this) else - this.split(delim).asSequence().map { it.trim() }.filterNot { it.isBlank() } + this.split(delim).asSequence().map { it.trim() }.filterNot { it.isBlank() } // fun String.unescapeJson() = StringEscapeUtils.unescapeJson(this) \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/utils/ViewModelKt.kt b/app/src/main/java/io/legado/app/utils/ViewModelKt.kt index 2d66826c1..c2ef64e53 100644 --- a/app/src/main/java/io/legado/app/utils/ViewModelKt.kt +++ b/app/src/main/java/io/legado/app/utils/ViewModelKt.kt @@ -9,4 +9,5 @@ fun AppCompatActivity.getViewModel(clazz: Class) = ViewModelP fun Fragment.getViewModel(clazz: Class) = ViewModelProviders.of(this).get(clazz) -fun Fragment.getViewModelOfActivity(clazz: Class) = ViewModelProviders.of(requireActivity()).get(clazz) \ No newline at end of file +fun Fragment.getViewModelOfActivity(clazz: Class) = + ViewModelProviders.of(requireActivity()).get(clazz) \ No newline at end of file diff --git a/app/src/main/res/layout/item_bookshelf_list.xml b/app/src/main/res/layout/item_bookshelf_list.xml index 03845fa18..71a7d9c3e 100644 --- a/app/src/main/res/layout/item_bookshelf_list.xml +++ b/app/src/main/res/layout/item_bookshelf_list.xml @@ -1,175 +1,175 @@ + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:id="@+id/cv_content" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:clickable="true" + android:focusable="true" + android:foreground="?android:attr/selectableItemBackground" + tools:ignore="UnusedAttribute"> + android:id="@+id/iv_cover" + android:layout_width="60dp" + android:layout_height="80dp" + android:layout_margin="8dp" + android:contentDescription="@string/img_cover" + android:scaleType="centerCrop" + android:src="@drawable/img_cover_default" + android:transitionName="img_cover" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintTop_toTopOf="parent" + tools:ignore="UnusedAttribute"/> - - + app:layout_constraintRight_toRightOf="parent" + app:layout_constraintTop_toTopOf="@id/tv_name"> + + + android:id="@+id/rl_loading" + android:layout_width="26dp" + android:layout_height="26dp" + android:layout_gravity="right" + android:visibility="invisible" + app:loading_color="@color/colorAccent" + app:loading_width="2dp" + tools:ignore="RtlHardcoded"/> + android:id="@+id/tv_name" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginLeft="8dp" + android:layout_marginTop="8dp" + android:includeFontPadding="false" + android:paddingLeft="4dp" + android:singleLine="true" + android:text="@string/book_name" + android:textColor="@color/tv_text_default" + android:textSize="16sp" + app:layout_constraintBottom_toTopOf="@+id/tv_author" + app:layout_constraintLeft_toRightOf="@+id/iv_cover" + app:layout_constraintRight_toLeftOf="@id/fl_has_new" + app:layout_constraintTop_toTopOf="parent" + tools:ignore="RtlHardcoded,RtlSymmetry"/> + android:id="@+id/iv_author" + android:layout_width="@dimen/desc_icon_size" + android:layout_height="@dimen/desc_icon_size" + android:layout_marginLeft="8dp" + android:contentDescription="@string/author" + android:paddingStart="2dp" + android:paddingEnd="2dp" + android:src="@drawable/ic_author" + app:layout_constraintBottom_toBottomOf="@+id/tv_author" + app:layout_constraintLeft_toRightOf="@+id/iv_cover" + app:layout_constraintTop_toTopOf="@+id/tv_author" + app:tint="@color/tv_text_secondary" + tools:ignore="RtlHardcoded,RtlSymmetry"/> + android:id="@+id/tv_author" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:includeFontPadding="false" + android:maxLines="1" + android:paddingEnd="6dp" + android:text="@string/author" + android:textColor="@color/tv_text_secondary" + android:textSize="13sp" + app:layout_constraintBottom_toTopOf="@+id/tv_read" + app:layout_constraintLeft_toRightOf="@+id/iv_author" + app:layout_constraintRight_toLeftOf="@id/fl_has_new" + app:layout_constraintTop_toBottomOf="@+id/tv_name" + tools:ignore="RtlSymmetry"/> + android:id="@+id/iv_read" + android:layout_width="@dimen/desc_icon_size" + android:layout_height="@dimen/desc_icon_size" + android:layout_marginLeft="8dp" + android:contentDescription="@string/read_dur_progress" + android:paddingStart="2dp" + android:paddingEnd="2dp" + android:src="@drawable/ic_history" + app:layout_constraintBottom_toBottomOf="@+id/tv_read" + app:layout_constraintLeft_toRightOf="@+id/iv_cover" + app:layout_constraintTop_toTopOf="@+id/tv_read" + app:tint="@color/tv_text_secondary" + tools:ignore="RtlHardcoded,RtlSymmetry"/> + android:id="@+id/tv_read" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:includeFontPadding="false" + android:singleLine="true" + android:text="@string/read_dur_progress" + android:textColor="@color/tv_text_secondary" + android:textSize="13sp" + app:layout_constraintBottom_toTopOf="@id/tv_last" + app:layout_constraintLeft_toRightOf="@+id/iv_read" + app:layout_constraintRight_toLeftOf="@id/fl_has_new" + app:layout_constraintTop_toBottomOf="@+id/tv_author"/> + android:id="@+id/iv_last" + android:layout_width="@dimen/desc_icon_size" + android:layout_height="@dimen/desc_icon_size" + android:layout_marginLeft="8dp" + android:contentDescription="@string/book_search_last" + android:paddingStart="2dp" + android:paddingEnd="2dp" + android:src="@drawable/ic_book_last" + app:layout_constraintBottom_toBottomOf="@+id/tv_last" + app:layout_constraintLeft_toRightOf="@+id/iv_cover" + app:layout_constraintTop_toTopOf="@+id/tv_last" + app:tint="@color/tv_text_secondary" + tools:ignore="RtlHardcoded,RtlSymmetry"/> + android:id="@+id/tv_last" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginBottom="8dp" + android:singleLine="true" + android:text="@string/book_search_last" + android:textColor="@color/tv_text_secondary" + android:textSize="13sp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintLeft_toRightOf="@+id/iv_last" + app:layout_constraintRight_toLeftOf="@id/fl_has_new" + app:layout_constraintTop_toBottomOf="@+id/tv_read"/> + android:id="@+id/vw_select" + android:layout_width="match_parent" + android:layout_height="0dp" + android:visibility="gone" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent"/> + android:layout_width="match_parent" + android:layout_height="0.5dp" + android:background="@color/btn_bg_press" + app:layout_constraintBottom_toBottomOf="parent"/> \ No newline at end of file diff --git a/app/src/main/res/layout/item_relace_rule.xml b/app/src/main/res/layout/item_relace_rule.xml index 34e28b5c9..af08d245e 100644 --- a/app/src/main/res/layout/item_relace_rule.xml +++ b/app/src/main/res/layout/item_relace_rule.xml @@ -2,7 +2,6 @@ @@ -46,7 +45,7 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toStartOf="@+id/tv_name" app:layout_constraintTop_toTopOf="parent" - app:layout_constraintBottom_toBottomOf="parent" /> + app:layout_constraintBottom_toBottomOf="parent"/> + android:id="@+id/textInputLayout" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + android:id="@+id/editText" + android:layout_width="match_parent" + android:layout_height="wrap_content"/> \ No newline at end of file diff --git a/app/src/main/res/layout/view_dynamic.xml b/app/src/main/res/layout/view_dynamic.xml index e94e2eaca..0531c97d3 100644 --- a/app/src/main/res/layout/view_dynamic.xml +++ b/app/src/main/res/layout/view_dynamic.xml @@ -1,20 +1,20 @@ + android:layout_width="match_parent" + android:layout_height="match_parent"> + android:id="@+id/errorViewStub" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:layout="@layout/view_error"/> + android:id="@+id/progressViewStub" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:layout="@layout/view_loading"/> \ No newline at end of file diff --git a/app/src/main/res/layout/view_error.xml b/app/src/main/res/layout/view_error.xml index 844a5a969..f104e00c3 100644 --- a/app/src/main/res/layout/view_error.xml +++ b/app/src/main/res/layout/view_error.xml @@ -1,27 +1,27 @@ + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:gravity="center_horizontal" + android:orientation="vertical"> + android:id="@+id/iv_error_image" + android:layout_width="wrap_content" + android:layout_height="wrap_content"/> + android:id="@+id/tv_error_message" + style="@style/Style.Text.Primary.Normal" + android:paddingTop="16dp" + android:paddingBottom="16dp"/> + android:id="@+id/btn_error_retry" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:backgroundTint="@color/colorAccent" + android:minWidth="96dp" + android:text="@string/dynamic_click_retry"/> \ No newline at end of file From b7b3a4b3952e14563acca9fbc5dc5d23475926db Mon Sep 17 00:00:00 2001 From: gedoor Date: Sat, 8 Jun 2019 23:29:08 +0800 Subject: [PATCH 44/66] reformat code --- app/src/main/res/layout/activity_config.xml | 3 ++- .../main/res/layout/activity_source_edit.xml | 3 ++- app/src/main/res/layout/item_book_source.xml | 3 ++- .../main/res/layout/item_bookshelf_list.xml | 21 ++++++++++--------- .../main/res/layout/item_icon_preference.xml | 3 ++- app/src/main/res/layout/item_source_edit.xml | 3 ++- app/src/main/res/layout/view_error.xml | 3 ++- app/src/main/res/layout/view_icon.xml | 3 ++- app/src/main/res/layout/view_loading.xml | 3 ++- 9 files changed, 27 insertions(+), 18 deletions(-) diff --git a/app/src/main/res/layout/activity_config.xml b/app/src/main/res/layout/activity_config.xml index 70d5ad0f7..3c78442fd 100644 --- a/app/src/main/res/layout/activity_config.xml +++ b/app/src/main/res/layout/activity_config.xml @@ -1,5 +1,6 @@ - - - - + - - diff --git a/app/src/main/res/layout/view_error.xml b/app/src/main/res/layout/view_error.xml index f104e00c3..7ef3931bd 100644 --- a/app/src/main/res/layout/view_error.xml +++ b/app/src/main/res/layout/view_error.xml @@ -1,5 +1,6 @@ - - \ No newline at end of file diff --git a/app/src/main/res/layout/view_loading.xml b/app/src/main/res/layout/view_loading.xml index db49f3211..f4b998efe 100644 --- a/app/src/main/res/layout/view_loading.xml +++ b/app/src/main/res/layout/view_loading.xml @@ -1,5 +1,6 @@ - Date: Sat, 8 Jun 2019 23:29:58 +0800 Subject: [PATCH 45/66] reformat code --- app/src/main/res/layout/activity_config.xml | 8 ++++---- app/src/main/res/layout/activity_source_edit.xml | 10 +++++----- app/src/main/res/layout/item_book_source.xml | 12 ++++++------ app/src/main/res/layout/item_icon_preference.xml | 8 ++++---- app/src/main/res/layout/item_source_edit.xml | 6 +++--- app/src/main/res/layout/view_error.xml | 8 ++++---- app/src/main/res/layout/view_icon.xml | 6 +++--- app/src/main/res/layout/view_loading.xml | 8 ++++---- 8 files changed, 33 insertions(+), 33 deletions(-) diff --git a/app/src/main/res/layout/activity_config.xml b/app/src/main/res/layout/activity_config.xml index 3c78442fd..50249cbb7 100644 --- a/app/src/main/res/layout/activity_config.xml +++ b/app/src/main/res/layout/activity_config.xml @@ -1,10 +1,10 @@ + xmlns:app="http://schemas.android.com/apk/res-auto" + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="match_parent"> + xmlns:app="http://schemas.android.com/apk/res-auto" + android:id="@+id/ll_content" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + android:layout_width="match_parent" + android:layout_height="wrap_content" xmlns:app="http://schemas.android.com/apk/res-auto" + android:background="@color/background" + android:padding="16dp" + android:orientation="horizontal" + android:gravity="center_vertical"> + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="?android:attr/listPreferredItemHeight" + android:padding="6dip"> + android:id="@+id/textInputLayout" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:gravity="center_horizontal" + android:orientation="vertical"> \ No newline at end of file + xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="48dp" + android:layout_height="48dp"/> \ No newline at end of file diff --git a/app/src/main/res/layout/view_loading.xml b/app/src/main/res/layout/view_loading.xml index f4b998efe..4626086d6 100644 --- a/app/src/main/res/layout/view_loading.xml +++ b/app/src/main/res/layout/view_loading.xml @@ -1,10 +1,10 @@ + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:gravity="center_horizontal" + android:orientation="vertical"> Date: Sat, 8 Jun 2019 23:34:39 +0800 Subject: [PATCH 46/66] reformat code --- app/src/main/res/drawable-v21/bg_ib_pre.xml | 6 +- .../main/res/drawable-v21/bg_ib_pre_round.xml | 2 +- .../drawable-v24/ic_launcher_foreground.xml | 46 +-- .../res/drawable/bg_chapter_item_divider.xml | 10 +- app/src/main/res/drawable/bg_edit.xml | 7 +- app/src/main/res/drawable/bg_ib_pre.xml | 4 +- app/src/main/res/drawable/bg_ib_pre_round.xml | 2 +- .../main/res/drawable/bg_textfield_search.xml | 13 +- .../main/res/drawable/fastscroll_bubble.xml | 28 +- .../main/res/drawable/fastscroll_handle.xml | 18 +- .../main/res/drawable/fastscroll_track.xml | 14 +- app/src/main/res/drawable/ic_about.xml | 12 +- app/src/main/res/drawable/ic_add.xml | 12 +- app/src/main/res/drawable/ic_add_online.xml | 12 +- app/src/main/res/drawable/ic_arrange.xml | 20 +- app/src/main/res/drawable/ic_arrow_back.xml | 12 +- .../main/res/drawable/ic_arrow_drop_down.xml | 12 +- .../main/res/drawable/ic_arrow_drop_up.xml | 12 +- app/src/main/res/drawable/ic_author.xml | 16 +- app/src/main/res/drawable/ic_auto_page.xml | 16 +- .../main/res/drawable/ic_auto_page_stop.xml | 20 +- app/src/main/res/drawable/ic_back_last.xml | 12 +- app/src/main/res/drawable/ic_backup.xml | 36 +-- app/src/main/res/drawable/ic_book_has.xml | 16 +- app/src/main/res/drawable/ic_book_last.xml | 20 +- .../res/drawable/ic_book_source_manage.xml | 24 +- app/src/main/res/drawable/ic_bookmark.xml | 12 +- app/src/main/res/drawable/ic_brightness.xml | 12 +- app/src/main/res/drawable/ic_cancel.xml | 16 +- app/src/main/res/drawable/ic_chapter_list.xml | 24 +- app/src/main/res/drawable/ic_check.xml | 12 +- app/src/main/res/drawable/ic_check_source.xml | 16 +- app/src/main/res/drawable/ic_copy.xml | 20 +- app/src/main/res/drawable/ic_daytime.xml | 44 +-- app/src/main/res/drawable/ic_disclaimer.xml | 20 +- app/src/main/res/drawable/ic_donate.xml | 12 +- app/src/main/res/drawable/ic_download.xml | 12 +- .../main/res/drawable/ic_download_line.xml | 16 +- app/src/main/res/drawable/ic_exchange.xml | 20 +- .../main/res/drawable/ic_expand_less_24dp.xml | 12 +- .../main/res/drawable/ic_expand_more_24dp.xml | 12 +- app/src/main/res/drawable/ic_faq.xml | 20 +- app/src/main/res/drawable/ic_find_replace.xml | 16 +- app/src/main/res/drawable/ic_folder.xml | 14 +- .../res/drawable/ic_format_line_spacing.xml | 24 +- app/src/main/res/drawable/ic_groups.xml | 24 +- app/src/main/res/drawable/ic_history.xml | 16 +- app/src/main/res/drawable/ic_import.xml | 49 +-- .../res/drawable/ic_interface_setting.xml | 16 +- app/src/main/res/drawable/ic_last_read.xml | 18 +- app/src/main/res/drawable/ic_launch.xml | 16 +- .../res/drawable/ic_launcher_background.xml | 240 ++++++++++----- app/src/main/res/drawable/ic_list.xml | 32 +- .../res/drawable/ic_live_help_black_24dp.xml | 10 +- app/src/main/res/drawable/ic_mail.xml | 12 +- app/src/main/res/drawable/ic_menu_camera.xml | 16 +- app/src/main/res/drawable/ic_menu_gallery.xml | 12 +- app/src/main/res/drawable/ic_menu_manage.xml | 12 +- app/src/main/res/drawable/ic_menu_send.xml | 12 +- app/src/main/res/drawable/ic_menu_share.xml | 12 +- .../main/res/drawable/ic_menu_slideshow.xml | 12 +- app/src/main/res/drawable/ic_more_vert.xml | 12 +- .../main/res/drawable/ic_network_check.xml | 12 +- app/src/main/res/drawable/ic_pause_24dp.xml | 12 +- .../res/drawable/ic_pause_outline_24dp.xml | 16 +- app/src/main/res/drawable/ic_play_24dp.xml | 12 +- .../res/drawable/ic_play_outline_24dp.xml | 12 +- app/src/main/res/drawable/ic_qq_group.xml | 12 +- app/src/main/res/drawable/ic_read_aloud.xml | 12 +- .../res/drawable/ic_refresh_black_24dp.xml | 16 +- .../res/drawable/ic_refresh_white_24dp.xml | 12 +- app/src/main/res/drawable/ic_restore.xml | 32 +- app/src/main/res/drawable/ic_save.xml | 16 +- app/src/main/res/drawable/ic_scan.xml | 12 +- app/src/main/res/drawable/ic_scoring.xml | 12 +- app/src/main/res/drawable/ic_search.xml | 26 +- app/src/main/res/drawable/ic_select_all.xml | 28 +- app/src/main/res/drawable/ic_settings.xml | 16 +- app/src/main/res/drawable/ic_share.xml | 16 +- app/src/main/res/drawable/ic_skip_next.xml | 12 +- .../main/res/drawable/ic_skip_previous.xml | 12 +- .../main/res/drawable/ic_stop_black_24dp.xml | 12 +- .../res/drawable/ic_swap_outline_24dp.xml | 24 +- app/src/main/res/drawable/ic_theme.xml | 24 +- .../main/res/drawable/ic_time_add_24dp.xml | 12 +- .../main/res/drawable/ic_timer_black_24dp.xml | 24 +- app/src/main/res/drawable/ic_toc.xml | 32 +- app/src/main/res/drawable/ic_top_source.xml | 16 +- app/src/main/res/drawable/ic_translate.xml | 16 +- app/src/main/res/drawable/ic_tune.xml | 20 +- app/src/main/res/drawable/ic_update.xml | 16 +- app/src/main/res/drawable/ic_version.xml | 12 +- app/src/main/res/drawable/ic_view_quilt.xml | 36 +-- app/src/main/res/drawable/ic_volume_up.xml | 12 +- app/src/main/res/drawable/ic_web_outline.xml | 20 +- .../main/res/drawable/ic_web_service_noti.xml | 14 +- .../res/drawable/ic_web_service_phone.xml | 20 +- app/src/main/res/drawable/image_welcome.xml | 100 +++--- .../main/res/drawable/selector_common_bg.xml | 9 +- .../res/drawable/selector_fillet_btn_bg.xml | 4 +- .../main/res/drawable/selector_tv_black.xml | 6 +- app/src/main/res/drawable/shape_card_view.xml | 6 +- .../main/res/drawable/shape_fillet_btn.xml | 6 +- .../res/drawable/shape_fillet_btn_press.xml | 6 +- .../drawable/shape_pop_checkaddshelf_bg.xml | 6 +- .../main/res/drawable/shape_radius_1dp.xml | 9 +- .../main/res/drawable/shape_space_divider.xml | 4 +- .../main/res/drawable/shape_text_cursor.xml | 8 +- app/src/main/res/drawable/side_nav_bar.xml | 12 +- app/src/main/res/layout/activity_about.xml | 11 +- app/src/main/res/layout/activity_config.xml | 29 +- app/src/main/res/layout/activity_main.xml | 35 +-- .../main/res/layout/activity_replace_rule.xml | 45 ++- app/src/main/res/layout/activity_search.xml | 36 +-- .../main/res/layout/activity_source_edit.xml | 89 +++--- .../main/res/layout/fragment_book_source.xml | 27 +- .../main/res/layout/fragment_bookshelf.xml | 21 +- .../main/res/layout/fragment_find_book.xml | 23 +- .../main/res/layout/fragment_my_config.xml | 29 +- app/src/main/res/layout/item_book_source.xml | 56 ++-- .../main/res/layout/item_bookshelf_list.xml | 291 +++++++++--------- .../main/res/layout/item_icon_preference.xml | 51 +-- app/src/main/res/layout/item_relace_rule.xml | 125 ++++---- app/src/main/res/layout/item_search.xml | 23 +- app/src/main/res/layout/item_source_edit.xml | 15 +- app/src/main/res/layout/view_dynamic.xml | 24 +- app/src/main/res/layout/view_error.xml | 37 ++- app/src/main/res/layout/view_icon.xml | 9 +- app/src/main/res/layout/view_loading.xml | 27 +- app/src/main/res/layout/view_title_bar.xml | 25 +- app/src/main/res/menu/activity_main_bnv.xml | 28 +- app/src/main/res/menu/book_source.xml | 115 +++---- app/src/main/res/menu/bookshelf.xml | 42 +-- app/src/main/res/menu/find_book.xml | 9 +- app/src/main/res/menu/my_config.xml | 11 +- .../res/mipmap-anydpi-v26/ic_launcher.xml | 4 +- .../mipmap-anydpi-v26/ic_launcher_round.xml | 4 +- app/src/main/res/values/attrs.xml | 148 ++++----- app/src/main/res/values/ids.xml | 10 +- app/src/main/res/values/styles.xml | 6 +- app/src/main/res/xml/pref_config.xml | 3 +- app/src/main/res/xml/pref_config_theme.xml | 133 ++++---- app/src/main/res/xml/pref_config_web_dav.xml | 12 +- app/src/main/res/xml/pref_main.xml | 39 ++- 144 files changed, 1863 insertions(+), 1770 deletions(-) diff --git a/app/src/main/res/drawable-v21/bg_ib_pre.xml b/app/src/main/res/drawable-v21/bg_ib_pre.xml index 9fdfe8c17..06af9ee57 100644 --- a/app/src/main/res/drawable-v21/bg_ib_pre.xml +++ b/app/src/main/res/drawable-v21/bg_ib_pre.xml @@ -1,5 +1,7 @@ - + android:color="@color/btn_bg_press_2"> + \ No newline at end of file diff --git a/app/src/main/res/drawable-v21/bg_ib_pre_round.xml b/app/src/main/res/drawable-v21/bg_ib_pre_round.xml index c43b5c490..e996f918f 100644 --- a/app/src/main/res/drawable-v21/bg_ib_pre_round.xml +++ b/app/src/main/res/drawable-v21/bg_ib_pre_round.xml @@ -1,3 +1,3 @@ \ No newline at end of file + android:color="@color/btn_bg_press" /> \ No newline at end of file diff --git a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml index 6348baae3..c7bd21dbd 100644 --- a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +++ b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -1,34 +1,34 @@ + xmlns:aapt="http://schemas.android.com/aapt" + android:width="108dp" + android:height="108dp" + android:viewportHeight="108" + android:viewportWidth="108"> + android:fillType="evenOdd" + android:pathData="M32,64C32,64 38.39,52.99 44.13,50.95C51.37,48.37 70.14,49.57 70.14,49.57L108.26,87.69L108,109.01L75.97,107.97L32,64Z" + android:strokeColor="#00000000" + android:strokeWidth="1"> + android:endX="78.5885" + android:endY="90.9159" + android:startX="48.7653" + android:startY="61.0927" + android:type="linear"> + android:color="#44000000" + android:offset="0.0" /> + android:color="#00000000" + android:offset="1.0" /> + android:fillColor="#FFFFFF" + android:fillType="nonZero" + android:pathData="M66.94,46.02L66.94,46.02C72.44,50.07 76,56.61 76,64L32,64C32,56.61 35.56,50.11 40.98,46.06L36.18,41.19C35.45,40.45 35.45,39.3 36.18,38.56C36.91,37.81 38.05,37.81 38.78,38.56L44.25,44.05C47.18,42.57 50.48,41.71 54,41.71C57.48,41.71 60.78,42.57 63.68,44.05L69.11,38.56C69.84,37.81 70.98,37.81 71.71,38.56C72.44,39.3 72.44,40.45 71.71,41.19L66.94,46.02ZM62.94,56.92C64.08,56.92 65,56.01 65,54.88C65,53.76 64.08,52.85 62.94,52.85C61.8,52.85 60.88,53.76 60.88,54.88C60.88,56.01 61.8,56.92 62.94,56.92ZM45.06,56.92C46.2,56.92 47.13,56.01 47.13,54.88C47.13,53.76 46.2,52.85 45.06,52.85C43.92,52.85 43,53.76 43,54.88C43,56.01 43.92,56.92 45.06,56.92Z" + android:strokeColor="#00000000" + android:strokeWidth="1" /> diff --git a/app/src/main/res/drawable/bg_chapter_item_divider.xml b/app/src/main/res/drawable/bg_chapter_item_divider.xml index 423a6bb03..a8bce5ae4 100644 --- a/app/src/main/res/drawable/bg_chapter_item_divider.xml +++ b/app/src/main/res/drawable/bg_chapter_item_divider.xml @@ -1,10 +1,10 @@ + android:shape="line"> + android:width="1dp" + android:color="@color/bg_divider_line" + android:dashWidth="3dp" + android:dashGap="3dp" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_edit.xml b/app/src/main/res/drawable/bg_edit.xml index 8a3c4e59e..9653cca5e 100644 --- a/app/src/main/res/drawable/bg_edit.xml +++ b/app/src/main/res/drawable/bg_edit.xml @@ -1,6 +1,7 @@ - + android:shape="rectangle"> + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_ib_pre.xml b/app/src/main/res/drawable/bg_ib_pre.xml index d44a8b2f0..6dd3de7d4 100644 --- a/app/src/main/res/drawable/bg_ib_pre.xml +++ b/app/src/main/res/drawable/bg_ib_pre.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_ib_pre_round.xml b/app/src/main/res/drawable/bg_ib_pre_round.xml index a370bb64b..b0ffc0e7e 100644 --- a/app/src/main/res/drawable/bg_ib_pre_round.xml +++ b/app/src/main/res/drawable/bg_ib_pre_round.xml @@ -1,4 +1,4 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_textfield_search.xml b/app/src/main/res/drawable/bg_textfield_search.xml index 9db913814..8069a07d8 100644 --- a/app/src/main/res/drawable/bg_textfield_search.xml +++ b/app/src/main/res/drawable/bg_textfield_search.xml @@ -1,10 +1,7 @@ - - - - - + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/fastscroll_bubble.xml b/app/src/main/res/drawable/fastscroll_bubble.xml index 566919858..f72b616ae 100644 --- a/app/src/main/res/drawable/fastscroll_bubble.xml +++ b/app/src/main/res/drawable/fastscroll_bubble.xml @@ -1,5 +1,4 @@ - - - + - + + android:topLeftRadius="@dimen/fastscroll_bubble_radius" + android:topRightRadius="@dimen/fastscroll_bubble_radius" + android:bottomLeftRadius="@dimen/fastscroll_bubble_radius" + android:bottomRightRadius="0dp" /> + android:height="@dimen/fastscroll_bubble_size" + android:width="@dimen/fastscroll_bubble_size" /> + android:left="@dimen/fastscroll_bubble_padding" + android:right="@dimen/fastscroll_bubble_padding" /> diff --git a/app/src/main/res/drawable/fastscroll_handle.xml b/app/src/main/res/drawable/fastscroll_handle.xml index 7cc91b9ea..8671a01cf 100644 --- a/app/src/main/res/drawable/fastscroll_handle.xml +++ b/app/src/main/res/drawable/fastscroll_handle.xml @@ -1,5 +1,4 @@ - - - + - + - + + android:height="@dimen/fastscroll_handle_height" + android:width="@dimen/fastscroll_handle_width" /> diff --git a/app/src/main/res/drawable/fastscroll_track.xml b/app/src/main/res/drawable/fastscroll_track.xml index d60893c04..854768787 100644 --- a/app/src/main/res/drawable/fastscroll_track.xml +++ b/app/src/main/res/drawable/fastscroll_track.xml @@ -1,5 +1,4 @@ - - - + - + - + diff --git a/app/src/main/res/drawable/ic_about.xml b/app/src/main/res/drawable/ic_about.xml index 1c6a7f643..3f2b1987a 100644 --- a/app/src/main/res/drawable/ic_about.xml +++ b/app/src/main/res/drawable/ic_about.xml @@ -1,11 +1,11 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M7.699,18.758 L7.699,13.219 L4,9.742 L20,5.242 L13.332,18.574 L10.785,16.125 L7.699,18.758 Z M9.455,13.035 L12.888,16.267 L16.987,8.288 L9.455,13.035 Z M9.035,14.477 L9.035,15.887 L9.81,15.209 L9.035,14.477 Z M6.655,10.398 L8.449,12.086 L14.544,8.248 L6.655,10.398 Z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_add.xml b/app/src/main/res/drawable/ic_add.xml index 67a246c89..c7542ba87 100644 --- a/app/src/main/res/drawable/ic_add.xml +++ b/app/src/main/res/drawable/ic_add.xml @@ -1,11 +1,11 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M12.822,20 L11.177,20 L11.177,12.821 L4,12.821 L4,11.178 L11.178,11.178 L11.178,4 L12.823,4 L12.823,11.179 L20,11.179 L20,12.822 L12.822,12.822 L12.822,20 Z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_add_online.xml b/app/src/main/res/drawable/ic_add_online.xml index 1b1387f70..8a3cc9b8b 100644 --- a/app/src/main/res/drawable/ic_add_online.xml +++ b/app/src/main/res/drawable/ic_add_online.xml @@ -1,11 +1,11 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M5.689,20 C5.164,20,4.74,19.844,4.432,19.537 C3.242,18.345,4.772,15.546,5.863,13.892 C5.683,13.308,5.595,12.688,5.595,12 C5.595,8.469,8.467,5.596,11.998,5.596 C12.684,5.596,13.308,5.685,13.898,5.868 C15.013,5.131,16.948,4,18.339,4 C18.84,4,19.242,4.146,19.531,4.435 C20.308,5.212,20.118,6.648,18.965,8.697 C18.724,9.127,18.433,9.588,18.099,10.076 C18.296,10.703,18.396,11.345,18.396,11.986 C18.396,15.524,15.526,18.403,11.998,18.403 C11.349,18.403,10.7,18.304,10.067,18.103 C8.774,18.991,7.013,20,5.689,20 Z M6.51,15.317 C5.331,17.292,5.196,18.449,5.357,18.611 C5.418,18.673,5.543,18.706,5.709,18.706 C6.337,18.706,7.422,18.249,8.669,17.469 C7.791,16.935,7.046,16.193,6.51,15.317 Z M11.473,17.068 C11.651,17.087,11.826,17.096,11.998,17.096 C14.806,17.096,17.089,14.803,17.089,11.985 C17.089,11.82,17.081,11.651,17.063,11.482 C16.282,12.473,15.398,13.461,14.428,14.43 C13.48,15.38,12.47,16.28,11.473,17.068 Z M11.998,6.901 C9.188,6.901,6.902,9.19,6.902,12 C6.902,14.017,8.066,15.818,9.885,16.641 C11.084,15.764,12.301,14.711,13.504,13.508 C14.686,12.326,15.765,11.076,16.635,9.883 C15.811,8.068,14.011,6.901,11.998,6.901 Z M15.317,6.516 C16.19,7.051,16.929,7.791,17.461,8.666 C17.598,8.448,17.72,8.247,17.827,8.055 C18.848,6.24,18.729,5.482,18.607,5.36 C18.605,5.357,18.549,5.304,18.335,5.304 C18.084,5.304,17.163,5.396,15.317,6.516 Z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_arrange.xml b/app/src/main/res/drawable/ic_arrange.xml index 130079315..ce2d50152 100644 --- a/app/src/main/res/drawable/ic_arrange.xml +++ b/app/src/main/res/drawable/ic_arrange.xml @@ -1,17 +1,17 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M12.167,4h-2.025c-0.604,0-1.08,0.529-1.08,1.206v13.588c0,0.677,0.476,1.206,1.08,1.206h2.025 c0.605,0,1.08-0.529,1.08-1.206V5.206C13.247,4.529,12.772,4,12.167,4z M11.792,5.454v9.531h-1.273V5.454H11.792z M10.519,18.546 v-2.106h1.273v2.106H10.519z" /> + android:fillColor="#595757" + android:pathData="M7.104,6.693H5.079c-0.596,0-1.078,0.501-1.078,1.117v11.072C4.001,19.499,4.483,20,5.079,20h2.025 c0.596,0,1.081-0.501,1.081-1.117V7.811C8.186,7.195,7.7,6.693,7.104,6.693z M6.729,8.148v6.837H5.455V8.148H6.729z M5.455,18.546 v-2.106h1.274v2.106H5.455z" /> + android:fillColor="#595757" + android:pathData="M17.976,7.433c-0.098-0.534-0.551-0.921-1.075-0.921l-2.183,0.383 c-0.584,0.108-0.969,0.689-0.858,1.294l2.006,10.89c0.099,0.534,0.55,0.92,1.074,0.92l2.183-0.383 c0.585-0.108,0.969-0.689,0.859-1.294L17.976,7.433z M15.354,8.256l1.25-0.234l1.289,7.004l-1.256,0.209L15.354,8.256z M17.235,18.484L16.9,16.667l1.257-0.209l0.33,1.797L17.235,18.484z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_arrow_back.xml b/app/src/main/res/drawable/ic_arrow_back.xml index e1d42df18..2d68f797b 100644 --- a/app/src/main/res/drawable/ic_arrow_back.xml +++ b/app/src/main/res/drawable/ic_arrow_back.xml @@ -1,9 +1,9 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + android:fillColor="#FF000000" + android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8 8,8 1.41,-1.41L7.83,13H20v-2z" /> diff --git a/app/src/main/res/drawable/ic_arrow_drop_down.xml b/app/src/main/res/drawable/ic_arrow_drop_down.xml index f7def8a08..df5ff10d0 100644 --- a/app/src/main/res/drawable/ic_arrow_drop_down.xml +++ b/app/src/main/res/drawable/ic_arrow_drop_down.xml @@ -1,9 +1,9 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + android:fillColor="#FF000000" + android:pathData="M7,10l5,5 5,-5z" /> diff --git a/app/src/main/res/drawable/ic_arrow_drop_up.xml b/app/src/main/res/drawable/ic_arrow_drop_up.xml index a6d5895e2..ed31816be 100644 --- a/app/src/main/res/drawable/ic_arrow_drop_up.xml +++ b/app/src/main/res/drawable/ic_arrow_drop_up.xml @@ -1,9 +1,9 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + android:fillColor="#FF000000" + android:pathData="M7,14l5,-5 5,5z" /> diff --git a/app/src/main/res/drawable/ic_author.xml b/app/src/main/res/drawable/ic_author.xml index d14ffaf39..3e3cf2d19 100644 --- a/app/src/main/res/drawable/ic_author.xml +++ b/app/src/main/res/drawable/ic_author.xml @@ -1,12 +1,12 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:pathData="M12,3c-4.963,0 -9,4.037 -9,9s4.037,9 9,9s9,-4.037 9,-9S16.963,3 12,3zM12,13.826c-2.277,0 -4.371,1.177 -5.542,3.092C5.245,15.554 4.581,13.82 4.581,12c0,-4.091 3.328,-7.419 7.419,-7.419S19.419,7.909 19.419,12c0,1.82 -0.664,3.554 -1.877,4.918C16.371,15.003 14.277,13.826 12,13.826zM12,15.407c1.811,0 3.489,1.013 4.33,2.598c-1.27,0.926 -2.762,1.414 -4.33,1.414c-1.568,0 -3.062,-0.488 -4.332,-1.414C8.511,16.42 10.189,15.407 12,15.407z" + android:fillColor="#4A4B4A" /> + android:pathData="M12,6.014c-2.178,0 -3.951,1.746 -3.951,3.893c0,2.149 1.772,3.899 3.951,3.899s3.951,-1.75 3.951,-3.899C15.951,7.76 14.178,6.014 12,6.014zM12,12.225c-1.307,0 -2.37,-1.041 -2.37,-2.318c0,-1.274 1.063,-2.312 2.37,-2.312s2.37,1.037 2.37,2.312C14.37,11.184 13.307,12.225 12,12.225z" + android:fillColor="#4A4B4A" /> diff --git a/app/src/main/res/drawable/ic_auto_page.xml b/app/src/main/res/drawable/ic_auto_page.xml index f720abd23..bec2a48f1 100644 --- a/app/src/main/res/drawable/ic_auto_page.xml +++ b/app/src/main/res/drawable/ic_auto_page.xml @@ -1,14 +1,14 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M19.109,6.212h-2.16l-0.002-0.817c0-0.366-0.164-0.66-0.44-0.788 c-0.133-0.062-0.278-0.091-0.445-0.091c-0.295,0-0.595,0.092-0.885,0.181l-5.121,1.516H4.891c-0.569,0-1.016,0.407-1.016,0.927 v9.907c0,0.52,0.446,0.926,1.016,0.926h5.283c0.693,0.19,4.949,1.359,5.308,1.463c0.115,0.033,0.229,0.05,0.339,0.05 c0.529,0,1.083-0.422,1.098-0.84l0.002-0.673h2.189c0.569,0,1.016-0.406,1.016-0.926V7.139C20.125,6.619,19.679,6.212,19.109,6.212 z M18.687,7.65v8.883h-1.763l0.023-8.883H18.687z M15.516,17.95c-0.723-0.204-2.282-0.65-3.459-0.988 c-0.794-0.228-1.414-0.405-1.485-0.425l-5.258-0.004V7.65h5.225l4.972-1.524L15.516,17.95z" /> + android:fillColor="#595757" + android:pathData="M 9.544 8.915 L 6.366 12.092 L 9.544 15.269 L 10.562 14.252 L 9.12 12.811 L 14.217 12.811 L 14.217 11.372 L 9.12 11.372 L 10.562 9.932 Z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_auto_page_stop.xml b/app/src/main/res/drawable/ic_auto_page_stop.xml index bebcd8680..6a6c74535 100644 --- a/app/src/main/res/drawable/ic_auto_page_stop.xml +++ b/app/src/main/res/drawable/ic_auto_page_stop.xml @@ -1,17 +1,17 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M19.109,6.212h-2.16l-0.002-0.817c0-0.366-0.164-0.66-0.44-0.788 c-0.133-0.062-0.278-0.091-0.445-0.091c-0.295,0-0.595,0.092-0.885,0.181l-5.121,1.516H4.891c-0.569,0-1.016,0.407-1.016,0.927 v9.907c0,0.52,0.446,0.926,1.016,0.926h5.283c0.693,0.19,4.949,1.359,5.308,1.463c0.115,0.033,0.229,0.05,0.339,0.05 c0.529,0,1.083-0.422,1.098-0.84l0.002-0.673h2.189c0.569,0,1.016-0.406,1.016-0.926V7.139C20.125,6.619,19.679,6.212,19.109,6.212 z M12.057,16.962c-0.794-0.228-1.414-0.405-1.485-0.425l-5.258-0.004V7.65h5.225l4.972-1.524l0.006,11.824 C14.793,17.746,13.233,17.3,12.057,16.962z M18.687,16.533h-1.763l0.023-8.883h1.739V16.533z" /> + android:fillColor="#595757" + android:pathData="M 8.208 9.5 H 9.646 V 14.5 H 8.208 V 9.5 Z" /> + android:fillColor="#595757" + android:pathData="M 11.396 9.5 H 12.834 V 14.5 H 11.396 V 9.5 Z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_back_last.xml b/app/src/main/res/drawable/ic_back_last.xml index 243d0386e..f1355c878 100644 --- a/app/src/main/res/drawable/ic_back_last.xml +++ b/app/src/main/res/drawable/ic_back_last.xml @@ -1,11 +1,11 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="64.063" + android:viewportHeight="64"> + android:fillColor="#000000" + android:pathData="M54.054,49.348H24.72c-3.033,0-5.5-2.466-5.5-5.499V18.94l5.12,5.121c0.358,0.358,0.828,0.537,1.296,0.537 c0.469,0,0.938-0.179,1.297-0.537c0.715-0.716,0.715-1.877,0-2.592l-8.25-8.25c-0.716-0.716-1.876-0.716-2.592,0l-8.25,8.25 c-0.715,0.715-0.715,1.876,0,2.592c0.717,0.716,1.877,0.716,2.593,0l5.12-5.121v24.908c0,5.054,4.113,9.166,9.167,9.166h29.333 c1.014,0,1.833-0.819,1.833-1.833S55.067,49.348,54.054,49.348L54.054,49.348z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_backup.xml b/app/src/main/res/drawable/ic_backup.xml index 8b17ca37c..fe8737deb 100644 --- a/app/src/main/res/drawable/ic_backup.xml +++ b/app/src/main/res/drawable/ic_backup.xml @@ -1,29 +1,29 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M15.923,11.848 C13.675,11.848,11.846,13.678,11.846,15.924 C11.846,18.172,13.675,20,15.923,20 S20,18.172,20,15.924 C20,13.678,18.171,11.848,15.923,11.848 Z M15.923,18.713 C14.385,18.713,13.133,17.461,13.133,15.924 C13.133,14.385,14.385,13.135,15.923,13.135 C17.461,13.135,18.713,14.385,18.713,15.924 C18.713,17.461,17.461,18.713,15.923,18.713 Z" /> + android:fillColor="#595757" + android:pathData="M16.567,13.961 L15.279,13.961 L15.279,16.568 L17.886,16.568 L17.886,15.279 L16.567,15.279 Z" /> + android:fillColor="#595757" + android:pathData="M5.287,5.623 C5.287,5.439,5.439,5.289,5.625,5.289 L16.412,5.289 C16.599,5.289,16.751,5.439,16.751,5.623 L16.751,11.019 L18.038,11.019 L18.038,5.623 C18.038,4.729,17.309,4,16.412,4 L5.625,4 C4.73,4,4,4.729,4,5.623 L4,18.375 C4,19.273,4.73,20,5.625,20 L11.018,20 L11.018,18.713 L5.625,18.713 C5.439,18.713,5.287,18.561,5.287,18.375 L5.287,18.039 L11.018,18.039 L11.018,16.752 L5.287,16.752 L5.287,5.623 Z" /> + android:fillColor="#595757" + android:pathData="M5.96,6.115 L7.247,6.115 L7.247,7.095 L5.96,7.095 L5.96,6.115 Z" /> + android:fillColor="#595757" + android:pathData="M14.788,6.115 L16.075,6.115 L16.075,7.095 L14.788,7.095 L14.788,6.115 Z" /> + android:fillColor="#595757" + android:pathData="M5.96,14.943 L7.247,14.943 L7.247,15.923 L5.96,15.923 L5.96,14.943 Z" /> + android:fillColor="#595757" + android:pathData="M11.474,11.475 L13.387,9.561 C13.65,9.987,13.809,10.483,13.809,11.02 L15.096,11.02 C15.096,10.127,14.799,9.308,14.311,8.636 L14.908,8.039 L13.997,7.131 L13.4,7.727 C12.728,7.24,11.909,6.944,11.018,6.944 C8.77,6.944,6.941,8.772,6.941,11.02 S8.77,15.096,11.018,15.096 L11.018,13.807 C9.48,13.807,8.228,12.557,8.228,11.02 C8.228,9.479,9.479,8.229,11.018,8.229 C11.554,8.229,12.05,8.388,12.476,8.651 L10.563,10.563 L11.474,11.475 Z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_book_has.xml b/app/src/main/res/drawable/ic_book_has.xml index 0b7941616..a920e50ae 100644 --- a/app/src/main/res/drawable/ic_book_has.xml +++ b/app/src/main/res/drawable/ic_book_has.xml @@ -1,14 +1,14 @@ + android:width="24dp" + android:height="24dp" + android:viewportHeight="680.31" + android:viewportWidth="680.31"> + android:fillColor="#2C2C2C" + android:pathData="M339.865,79.038c-147.014,0-266.518,119.198-266.518,266.519 c0,147.011,119.198,266.519,266.518,266.519c147.013,0,266.52-119.201,266.52-266.519 C606.078,198.542,486.878,79.038,339.865,79.038L339.865,79.038z M339.865,587.929c-133.871,0-242.373-108.505-242.373-242.373 c0-133.872,108.502-242.066,242.373-242.066c133.868,0,242.372,108.5,242.372,242.373 C582.237,479.731,473.432,587.929,339.865,587.929L339.865,587.929z M339.865,587.929" /> + android:fillColor="#2C2C2C" + android:pathData="M305.329,491.346c20.782,0,28.118,33.619,28.118,33.619h12.836c0,0,7.337-33.619,28.12-33.619h133.869 c7.95,0,14.673-6.725,14.673-14.671V242.25c0-33.316-33.316-33.316-33.316-33.316H361.261c-10.697,0-21.396,13.449-21.396,20.479 c0-7.03-10.391-20.479-21.088-20.479H190.103c0,0-33.317,0-33.317,33.316v234.426c0,8.253,6.418,14.671,14.67,14.671H305.329z M348.117,236.75c0-6.115,4.89-11.31,11.005-11.31h139.065c3.973,0,7.336,3.361,7.336,7.64l0.607,235.647 c0,4.279-3.36,7.644-7.333,7.644H372.873c-14.06,0-24.756,15.589-24.756,15.589V236.75z M173.902,233.08 c0-4.279,3.364-7.64,7.336-7.64h139.066c6.112,0,11.003,4.891,11.003,11.31v254.903c0,0-11.003-15.589-24.759-15.589H180.627 c-3.974,0-7.337-3.36-7.337-7.639L173.902,233.08z M173.902,233.08" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_book_last.xml b/app/src/main/res/drawable/ic_book_last.xml index 3ee254c91..82b0842d6 100644 --- a/app/src/main/res/drawable/ic_book_last.xml +++ b/app/src/main/res/drawable/ic_book_last.xml @@ -1,15 +1,15 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:pathData="M12,12m-0.756,0a0.756,0.756 0,1 1,1.512 0a0.756,0.756 0,1 1,-1.512 0" + android:fillColor="#4A4B4A" /> + android:pathData="M7.038,16.963l6.94,-2.985l2.984,-6.939l-6.938,2.985L7.038,16.963zM14.195,9.804l-1.321,3.071l-3.069,1.322l1.321,-3.07L14.195,9.804z" + android:fillColor="#4A4B4A" /> + android:pathData="M12,3c-4.963,0 -9,4.037 -9,9s4.037,9 9,9s9,-4.037 9,-9S16.963,3 12,3zM12,19.419c-4.091,0 -7.419,-3.328 -7.419,-7.419S7.909,4.581 12,4.581S19.419,7.909 19.419,12S16.091,19.419 12,19.419z" + android:fillColor="#4A4B4A" /> diff --git a/app/src/main/res/drawable/ic_book_source_manage.xml b/app/src/main/res/drawable/ic_book_source_manage.xml index ac9acfc6c..11fb46c9e 100644 --- a/app/src/main/res/drawable/ic_book_source_manage.xml +++ b/app/src/main/res/drawable/ic_book_source_manage.xml @@ -1,20 +1,20 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M20,7.046 L4,7.046 L4,5.522 L20,5.522 L20,7.046 Z" /> + android:fillColor="#595757" + android:pathData="M20,10.855 L4,10.855 L4,9.334 L20,9.334 L20,10.855 Z" /> + android:fillColor="#595757" + android:pathData="M20,14.666 L4,14.666 L4,13.145 L20,13.145 L20,14.666 Z" /> + android:fillColor="#595757" + android:pathData="M20,18.477 L4,18.477 L4,16.954 L20,16.954 L20,18.477 Z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_bookmark.xml b/app/src/main/res/drawable/ic_bookmark.xml index 0eccdac3f..551bee2c8 100644 --- a/app/src/main/res/drawable/ic_bookmark.xml +++ b/app/src/main/res/drawable/ic_bookmark.xml @@ -1,11 +1,11 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M5.938,4v16h1.414l4.648-2.789L16.649,20h1.411V4H5.938z M16.606,18.278l-4.605-2.763l-4.609,2.764 V5.454h9.215V18.278z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_brightness.xml b/app/src/main/res/drawable/ic_brightness.xml index 095df912f..ac37ba7d5 100644 --- a/app/src/main/res/drawable/ic_brightness.xml +++ b/app/src/main/res/drawable/ic_brightness.xml @@ -1,11 +1,11 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M12,20 C7.59,20,4,16.412,4,12 S7.59,4,12,4 L12.848,4 L12.698,4.835 C12.693,4.862,12.221,7.656,13.793,9.529 C14.782,10.711,16.402,11.306,18.606,11.307 L18.606,11.307 C18.816,11.307,19.032,11.304,19.255,11.29 L20,11.256 L20,12 C20,16.412,16.411,20,12,20 Z M11.215,5.463 C7.955,5.854,5.418,8.635,5.418,12 C5.418,15.631,8.371,18.583,12,18.583 C15.384,18.583,18.18,16.015,18.543,12.727 C15.925,12.713,13.958,11.943,12.698,10.43 C11.305,8.762,11.165,6.641,11.215,5.463 Z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_cancel.xml b/app/src/main/res/drawable/ic_cancel.xml index 8b2b5cbb4..21715879d 100644 --- a/app/src/main/res/drawable/ic_cancel.xml +++ b/app/src/main/res/drawable/ic_cancel.xml @@ -1,14 +1,14 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M12,4c-4.412,0-8,3.588-8,8s3.588,8,8,8c4.41,0,8-3.588,8-8S16.41,4,12,4z M12,18.545 c-3.608,0-6.546-2.936-6.546-6.545S8.392,5.455,12,5.455c3.607,0,6.545,2.936,6.545,6.545S15.607,18.545,12,18.545z" /> + android:fillColor="#595757" + android:pathData="M 13.426 9.546 L 12.002 10.972 L 10.576 9.546 L 9.547 10.575 L 10.973 12 L 9.547 13.425 L 10.576 14.454 L 12.002 13.028 L 13.426 14.454 L 14.454 13.425 L 13.029 12 L 14.454 10.575 Z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_chapter_list.xml b/app/src/main/res/drawable/ic_chapter_list.xml index c667fa24e..d64d58dbf 100644 --- a/app/src/main/res/drawable/ic_chapter_list.xml +++ b/app/src/main/res/drawable/ic_chapter_list.xml @@ -1,20 +1,20 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M20,7.046H4V5.522h16V7.046z" /> + android:fillColor="#595757" + android:pathData="M20,10.855H4V9.334h16V10.855z" /> + android:fillColor="#595757" + android:pathData="M20,14.666H4v-1.521h16V14.666z" /> + android:fillColor="#595757" + android:pathData="M20,18.477H4v-1.523h16V18.477z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_check.xml b/app/src/main/res/drawable/ic_check.xml index a4f01346c..620bc9133 100644 --- a/app/src/main/res/drawable/ic_check.xml +++ b/app/src/main/res/drawable/ic_check.xml @@ -1,9 +1,9 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + android:fillColor="#FF000000" + android:pathData="M9,16.17L4.83,12l-1.42,1.41L9,19 21,7l-1.41,-1.41z" /> diff --git a/app/src/main/res/drawable/ic_check_source.xml b/app/src/main/res/drawable/ic_check_source.xml index 7384b9986..cbd10fd70 100644 --- a/app/src/main/res/drawable/ic_check_source.xml +++ b/app/src/main/res/drawable/ic_check_source.xml @@ -1,14 +1,14 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M20,6.182h-1.454v1.249C17.067,5.315,14.646,4,12,4c-4.412,0-8,3.589-8,8s3.588,8,8,8 c3.789,0,7.086-2.691,7.84-6.401l-1.426-0.289C17.798,16.344,15.1,18.546,12,18.546c-3.608,0-6.546-2.937-6.546-6.546 S8.392,5.454,12,5.454c2.399,0,4.576,1.32,5.721,3.395h-1.842v1.454H20V6.182z" /> + android:fillColor="#595757" + android:pathData="M11.273,8.363c-1.604,0-2.909,1.305-2.909,2.91c0,1.604,1.305,2.909,2.909,2.909 c0.537,0,1.035-0.157,1.468-0.412l2.14,2.139l1.027-1.029l-2.139-2.139c0.256-0.432,0.412-0.93,0.412-1.468 C14.182,9.668,12.877,8.363,11.273,8.363z M9.818,11.273c0-0.802,0.652-1.455,1.455-1.455c0.801,0,1.453,0.653,1.453,1.455 c0,0.801-0.652,1.454-1.453,1.454C10.471,12.727,9.818,12.074,9.818,11.273z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_copy.xml b/app/src/main/res/drawable/ic_copy.xml index 54c020707..cdf136c9c 100644 --- a/app/src/main/res/drawable/ic_copy.xml +++ b/app/src/main/res/drawable/ic_copy.xml @@ -1,17 +1,17 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M 18.303 8.091 L 14.939 8.091 L 14.939 4.727 L 15.848 4.727 L 15.848 7.182 L 18.303 7.182 Z" /> + android:fillColor="#595757" + android:pathData="M19.03,18.061H6.91V4h8.785l3.335,3.335V18.061z M8.363,16.606h9.213V7.938l-2.483-2.484H8.363 V16.606z" /> + android:fillColor="#595757" + android:pathData="M 17.09 20 L 4.969 20 L 4.969 5.939 L 7.636 5.939 L 7.636 7.394 L 6.424 7.394 L 6.424 18.546 L 15.636 18.546 L 15.636 17.333 L 17.09 17.333 Z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_daytime.xml b/app/src/main/res/drawable/ic_daytime.xml index 363491941..60921c1dc 100644 --- a/app/src/main/res/drawable/ic_daytime.xml +++ b/app/src/main/res/drawable/ic_daytime.xml @@ -1,35 +1,35 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M16.638,8.494l1.585-1.586l-1.132-1.131l-1.585,1.586C15.933,7.687,16.313,8.066,16.638,8.494z" /> + android:fillColor="#595757" + android:pathData="M8.495,7.363L6.909,5.777L5.778,6.909l1.584,1.585C7.687,8.067,8.067,7.687,8.495,7.363z" /> + android:fillColor="#595757" + android:pathData="M12.001,6.181c0.271,0,0.537,0.025,0.799,0.062V4h-1.6v2.242 C11.462,6.206,11.728,6.181,12.001,6.181z" /> + android:fillColor="#595757" + android:pathData="M6.181,12c0-0.271,0.025-0.537,0.062-0.8H4v1.6h2.242C6.206,12.538,6.181,12.272,6.181,12z" /> + android:fillColor="#595757" + android:pathData="M15.506,16.638l1.585,1.585l1.131-1.131l-1.584-1.586C16.313,15.934,15.933,16.313,15.506,16.638z" /> + android:fillColor="#595757" + android:pathData="M17.759,11.2c0.035,0.263,0.061,0.528,0.061,0.8c0,0.272-0.025,0.538-0.061,0.8H20v-1.6H17.759z" /> + android:fillColor="#595757" + android:pathData="M7.363,15.506l-1.585,1.586l1.131,1.131l1.585-1.586C8.067,16.313,7.687,15.934,7.363,15.506z" /> + android:fillColor="#595757" + android:pathData="M12.001,17.819c-0.273,0-0.539-0.024-0.801-0.062V20h1.6v-2.242 C12.538,17.795,12.272,17.819,12.001,17.819z" /> + android:fillColor="#595757" + android:pathData="M12,16.6c-2.536,0-4.6-2.063-4.6-4.6S9.464,7.4,12,7.4s4.6,2.063,4.6,4.6S14.536,16.6,12,16.6z M12,9 c-1.654,0-3,1.346-3,3s1.346,3,3,3s3-1.346,3-3S13.654,9,12,9z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_disclaimer.xml b/app/src/main/res/drawable/ic_disclaimer.xml index fd6ad6dd2..6cc4ea597 100644 --- a/app/src/main/res/drawable/ic_disclaimer.xml +++ b/app/src/main/res/drawable/ic_disclaimer.xml @@ -1,17 +1,17 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M11.999,4c-4.411,0-8,3.588-8,8s3.589,8,8,8c4.41,0,8-3.588,8-8S16.409,4,11.999,4z M11.999,18.546 c-3.609,0-6.547-2.937-6.547-6.546s2.938-6.546,6.547-6.546S18.544,8.391,18.544,12S15.608,18.546,11.999,18.546z" /> + android:fillColor="#595757" + android:pathData="M 12.727 10.546 L 11.271 10.546 L 11.271 14.667 L 11.028 14.667 L 11.028 16.121 L 12.969 16.121 L 12.969 14.667 L 12.727 14.667 Z" /> + android:fillColor="#595757" + android:pathData="M 11.271 8.121 H 12.727 V 9.091 H 11.271 V 8.121 Z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_donate.xml b/app/src/main/res/drawable/ic_donate.xml index b86f39cb5..1cf58b952 100644 --- a/app/src/main/res/drawable/ic_donate.xml +++ b/app/src/main/res/drawable/ic_donate.xml @@ -1,11 +1,11 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M15.045,19.68 L8.955,19.68 C7.274,19.68,5.854,18.367,5.726,16.696 L5.322,11.43 L4,11.43 L4,7.492 L6.722,7.492 C6.603,7.211,6.541,6.913,6.541,6.602 C6.541,5.344,7.567,4.321,8.826,4.321 C9.935,4.321,10.678,4.755,11.391,5.82 C11.481,5.956,11.683,6.285,12.001,6.82 C12.319,6.285,12.521,5.956,12.609,5.821 C13.322,4.755,14.066,4.321,15.175,4.321 C16.434,4.321,17.46,5.344,17.46,6.602 C17.46,6.914,17.397,7.211,17.279,7.493 L20,7.493 L20,11.431 L18.678,11.431 L18.273,16.697 C18.145,18.367,16.726,19.68,15.045,19.68 Z M12.698,18.287 L15.045,18.287 C16.002,18.287,16.808,17.539,16.88,16.586 L17.276,11.43 L12.698,11.43 L12.698,18.287 Z M6.723,11.43 L7.12,16.586 C7.191,17.539,7.998,18.287,8.955,18.287 L11.301,18.287 L11.301,11.43 L6.723,11.43 Z M12.698,10.033 L18.603,10.033 L18.603,8.89 L12.698,8.89 L12.698,10.033 Z M5.397,10.033 L11.301,10.033 L11.301,8.89 L5.397,8.89 L5.397,10.033 Z M13.224,7.492 L15.175,7.492 C15.665,7.492,16.065,7.094,16.065,6.601 C16.065,6.114,15.666,5.712,15.175,5.712 C14.609,5.712,14.272,5.84,13.772,6.593 C13.683,6.727,13.454,7.105,13.224,7.492 Z M8.825,5.713 C8.335,5.713,7.935,6.114,7.935,6.602 C7.935,7.094,8.334,7.493,8.825,7.493 L10.776,7.493 C10.546,7.106,10.318,6.727,10.23,6.597 C9.728,5.841,9.392,5.713,8.825,5.713 Z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_download.xml b/app/src/main/res/drawable/ic_download.xml index 0e2c939be..bf296eceb 100644 --- a/app/src/main/res/drawable/ic_download.xml +++ b/app/src/main/res/drawable/ic_download.xml @@ -1,9 +1,9 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + android:fillColor="#FFFFFFFF" + android:pathData="M19,9h-4V3H9v6H5l7,7 7,-7zM5,18v2h14v-2H5z" /> diff --git a/app/src/main/res/drawable/ic_download_line.xml b/app/src/main/res/drawable/ic_download_line.xml index 854a3ec99..3b0ae72ea 100644 --- a/app/src/main/res/drawable/ic_download_line.xml +++ b/app/src/main/res/drawable/ic_download_line.xml @@ -1,14 +1,14 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M16.712,20 L7.288,20 C5.474,20,4,18.633,4,16.952 L4,14.287 L5.524,14.287 L5.524,16.952 C5.524,17.792,6.316,18.476,7.288,18.476 L16.713,18.476 C17.685,18.476,18.477,17.791,18.477,16.952 L18.477,14.287 L20,14.287 L20,16.952 C20,18.633,18.526,20,16.712,20 Z" /> + android:fillColor="#595757" + android:pathData="M12,15.742 L7.382,11.127 L8.459,10.05 L11.239,12.827 L11.239,4 L12.761,4 L12.761,12.827 L15.541,10.05 L16.618,11.127 Z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_exchange.xml b/app/src/main/res/drawable/ic_exchange.xml index 2eb01190b..00fa9cc95 100644 --- a/app/src/main/res/drawable/ic_exchange.xml +++ b/app/src/main/res/drawable/ic_exchange.xml @@ -1,17 +1,17 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M17.139,8.073l-1.06,1.059l1.058,1.058L20,7.326l-2.863-2.863L16.079,5.52l1.06,1.06h-3.801 c-1.465,0-2.613,1.423-2.613,3.24v1.869v0.624v0.626v1.243c0,0.946-0.514,1.746-1.121,1.746H4v1.494h5.604 c1.467,0,2.614-1.423,2.614-3.24v-1.869v-0.624V9.819c0-0.946,0.515-1.746,1.12-1.746H17.139z" /> + android:fillColor="#595757" + android:pathData="M 16.079 14.867 L 17.139 15.926 L 13.338 15.926 L 13.338 17.42 L 17.139 17.42 L 16.079 18.48 L 17.137 19.537 L 20 16.673 L 17.137 13.81 Z" /> + android:fillColor="#595757" + android:pathData="M 4 6.586 H 9.604 V 8.08 H 4 V 6.586 Z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_expand_less_24dp.xml b/app/src/main/res/drawable/ic_expand_less_24dp.xml index 4ac9d39c4..f70feed92 100644 --- a/app/src/main/res/drawable/ic_expand_less_24dp.xml +++ b/app/src/main/res/drawable/ic_expand_less_24dp.xml @@ -1,9 +1,9 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#FF000000" + android:pathData="M12,8l-6,6 1.41,1.41L12,10.83l4.59,4.58L18,14l-6,-6z" /> diff --git a/app/src/main/res/drawable/ic_expand_more_24dp.xml b/app/src/main/res/drawable/ic_expand_more_24dp.xml index 82e7ee5de..5d10f3768 100644 --- a/app/src/main/res/drawable/ic_expand_more_24dp.xml +++ b/app/src/main/res/drawable/ic_expand_more_24dp.xml @@ -1,9 +1,9 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#FF000000" + android:pathData="M16.59,8.59L12,13.17 7.41,8.59 6,10l6,6 6,-6 -1.41,-1.41z" /> diff --git a/app/src/main/res/drawable/ic_faq.xml b/app/src/main/res/drawable/ic_faq.xml index 00835615d..b6d620eb5 100644 --- a/app/src/main/res/drawable/ic_faq.xml +++ b/app/src/main/res/drawable/ic_faq.xml @@ -1,17 +1,17 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M4,4v16h16V4H4z M18.546,5.454v0.485H5.454V5.454H18.546z M5.454,18.546V7.394h13.092v11.152H5.454z" /> + android:fillColor="#595757" + android:pathData="M 10.729 9.819 L 9.819 10.729 L 9.819 12 L 11.273 12 L 11.273 11.332 L 11.329 11.273 L 12.668 11.273 L 12.728 11.333 L 12.728 11.699 L 11.273 13.153 L 11.273 14.425 L 12.727 14.425 L 12.727 13.756 L 14.182 12.302 L 14.182 10.729 L 13.27 9.819 Z" /> + android:fillColor="#595757" + android:pathData="M 11.273 14.909 H 12.726 V 15.879 H 11.273 V 14.909 Z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_find_replace.xml b/app/src/main/res/drawable/ic_find_replace.xml index 3e9c524b1..07bbfc39c 100644 --- a/app/src/main/res/drawable/ic_find_replace.xml +++ b/app/src/main/res/drawable/ic_find_replace.xml @@ -1,14 +1,14 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M8.829,10.126 L7.502,11.451 C7.447,11.162,7.415,10.868,7.415,10.57 C7.415,7.997,9.506,5.907,12.077,5.907 C13.573,5.907,14.99,6.633,15.864,7.851 L16.947,7.071 C15.822,5.508,14.002,4.574,12.077,4.574 C8.772,4.574,6.083,7.263,6.083,10.57 C6.083,10.684,6.107,10.795,6.113,10.909 L5.33,10.126 L4.388,11.068 L7.078,13.757 L9.769,11.069 L8.829,10.126 Z" /> + android:fillColor="#595757" + android:pathData="M20.388,18.483 L16.501,14.596 C17.472,13.531,18.07,12.12,18.07,10.57 C18.07,10.536,18.064,10.503,18.064,10.468 L18.955,11.359 L19.897,10.417 L17.206,7.727 L14.515,10.416 L15.455,11.359 L16.708,10.107 C16.723,10.26,16.737,10.415,16.737,10.57 C16.737,13.138,14.647,15.228,12.076,15.228 C10.742,15.228,9.469,14.656,8.584,13.656 L7.586,14.539 C8.724,15.823,10.36,16.561,12.076,16.561 C13.349,16.561,14.528,16.159,15.5,15.48 L19.446,19.425 L20.388,18.483 Z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_folder.xml b/app/src/main/res/drawable/ic_folder.xml index 7f16bd7c1..cb2a84ca4 100644 --- a/app/src/main/res/drawable/ic_folder.xml +++ b/app/src/main/res/drawable/ic_folder.xml @@ -1,10 +1,10 @@ + android:width="24dp" + android:height="24dp" + android:tint="#707070" + android:viewportHeight="24.0" + android:viewportWidth="24.0"> + android:fillColor="#FF000000" + android:pathData="M10,4H4c-1.1,0 -1.99,0.9 -1.99,2L2,18c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2V8c0,-1.1 -0.9,-2 -2,-2h-8l-2,-2z" /> diff --git a/app/src/main/res/drawable/ic_format_line_spacing.xml b/app/src/main/res/drawable/ic_format_line_spacing.xml index b1586f195..3308038da 100644 --- a/app/src/main/res/drawable/ic_format_line_spacing.xml +++ b/app/src/main/res/drawable/ic_format_line_spacing.xml @@ -1,20 +1,20 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M7.451,18.062 L7.451,15.375 L7.451,13.6 L7.451,5.938 L8.736,7.23 L9.871,6.103 L6.651,2.866 L3.433,6.103 L4.567,7.23 L5.852,5.939 L5.852,13.6 L5.852,15.375 L5.852,18.061 L4.567,16.77 L3.433,17.897 L6.651,21.134 L9.871,17.897 L8.736,16.77 Z" /> + android:fillColor="#595757" + android:pathData="M10.895,4.8 L20,4.8 L20,6.4 L10.895,6.4 L10.895,4.8 Z" /> + android:fillColor="#595757" + android:pathData="M10.895,11.021 L20,11.021 L20,12.621 L10.895,12.621 L10.895,11.021 Z" /> + android:fillColor="#595757" + android:pathData="M10.895,17.512 L20,17.512 L20,19.112 L10.895,19.112 L10.895,17.512 Z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_groups.xml b/app/src/main/res/drawable/ic_groups.xml index 8a46a8295..0ebcd4526 100644 --- a/app/src/main/res/drawable/ic_groups.xml +++ b/app/src/main/res/drawable/ic_groups.xml @@ -1,20 +1,20 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M 11.221 5.832 L 11.221 6.608 L 11.221 11.094 L 9.57 11.094 L 9.57 12.647 L 11.221 12.647 L 11.221 17.909 L 11.229 17.909 L 11.229 18.686 L 13.939 18.686 L 13.939 17.132 L 12.773 17.132 L 12.773 6.608 L 13.939 6.608 L 13.939 5.055 L 11.221 5.055 Z" /> + android:fillColor="#595757" + android:pathData="M6.707,7.27H4.414C3.396,7.27,2.6,7.963,2.6,8.848v6.044c0,0.885,0.797,1.578,1.814,1.578h2.293 c1.019,0,1.816-0.693,1.816-1.578V8.848C8.523,7.963,7.726,7.27,6.707,7.27z M6.707,14.917H4.414c-0.131,0-0.215-0.041-0.246-0.041 c-0.01,0-0.014,0.003-0.015,0.012L4.137,8.913C4.15,8.895,4.24,8.823,4.414,8.823h2.293c0.17,0,0.26,0.067,0.263,0.029l0.017,5.975 C6.973,14.845,6.881,14.917,6.707,14.917z" /> + android:fillColor="#595757" + android:pathData="M16.91,8.793h2.805c0.86,0,1.561-0.699,1.561-1.559V4.429c0-0.86-0.7-1.559-1.561-1.559H16.91 c-0.859,0-1.559,0.699-1.559,1.559v2.805C15.352,8.094,16.051,8.793,16.91,8.793z M16.91,4.423l2.812,0.006L19.717,7.24 c0,0,0,0-0.002,0l-2.81-0.006L16.91,4.423z" /> + android:fillColor="#595757" + android:pathData="M19.84,14.947h-2.805c-0.859,0-1.558,0.699-1.558,1.559v2.805c0,0.86,0.698,1.559,1.558,1.559h2.805 c0.861,0,1.561-0.699,1.561-1.559v-2.805C21.4,15.646,20.701,14.947,19.84,14.947z M19.848,19.312c0,0-0.004,0.005-0.008,0.005 l-2.809-0.006l0.004-2.811l2.813,0.006V19.312z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_history.xml b/app/src/main/res/drawable/ic_history.xml index 7a17e5efd..095e0f7ab 100644 --- a/app/src/main/res/drawable/ic_history.xml +++ b/app/src/main/res/drawable/ic_history.xml @@ -1,12 +1,12 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:pathData="M12,3c-4.963,0 -9,4.037 -9,9s4.037,9 9,9s9,-4.037 9,-9S16.963,3 12,3zM12,19.419c-4.091,0 -7.419,-3.328 -7.419,-7.419S7.909,4.581 12,4.581S19.419,7.909 19.419,12S16.091,19.419 12,19.419z" + android:fillColor="#4A4B4A" /> + android:pathData="M12.082,12.53l0,-5.545l-1.582,0l0,6.456l4.441,2.559l0.788,-1.372z" + android:fillColor="#4a4b4a" /> diff --git a/app/src/main/res/drawable/ic_import.xml b/app/src/main/res/drawable/ic_import.xml index f2ebb9ced..b9929a808 100644 --- a/app/src/main/res/drawable/ic_import.xml +++ b/app/src/main/res/drawable/ic_import.xml @@ -1,19 +1,32 @@ - - - - - - + + + + + + diff --git a/app/src/main/res/drawable/ic_interface_setting.xml b/app/src/main/res/drawable/ic_interface_setting.xml index 12377d124..139b00724 100644 --- a/app/src/main/res/drawable/ic_interface_setting.xml +++ b/app/src/main/res/drawable/ic_interface_setting.xml @@ -1,14 +1,14 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M8.348,3.999L4,19.977h1.59l1.244-4.841h4.732l1.321,4.841h1.706L9.96,3.999H8.348z M7.266,13.414 l1.243-4.687c0.263-1.01,0.466-2.026,0.61-3.052c0.174,0.865,0.443,1.97,0.803,3.313l1.184,4.426H7.266z" /> + android:fillColor="#595757" + android:pathData="M20.261,19.962l-0.107-0.231c-0.116-0.251-0.195-0.515-0.235-0.783 c-0.027-0.2-0.06-0.721-0.06-2.064v-1.581c0-0.516-0.019-0.905-0.055-1.131c-0.065-0.358-0.176-0.647-0.338-0.883 c-0.167-0.243-0.425-0.445-0.765-0.599c-0.339-0.153-0.763-0.229-1.297-0.229c-0.529,0-1.001,0.088-1.399,0.263 c-0.418,0.18-0.731,0.435-0.961,0.779c-0.212,0.322-0.354,0.74-0.422,1.227c-0.005,0.015-0.009,0.028-0.014,0.045l-0.047,0.208 l1.34,0.181l0.032-0.153c0.096-0.444,0.244-0.766,0.43-0.929c0.187-0.163,0.48-0.242,0.898-0.242c0.444,0,0.766,0.111,0.983,0.34 c0.146,0.155,0.225,0.462,0.225,0.882l-0.001,0.175c-0.362,0.133-0.898,0.251-1.599,0.352c-0.409,0.059-0.707,0.119-0.909,0.187 c-0.284,0.094-0.544,0.235-0.773,0.422c-0.233,0.188-0.424,0.441-0.568,0.753c-0.14,0.311-0.21,0.654-0.21,1.021 c0,0.634,0.19,1.163,0.566,1.574c0.38,0.416,0.926,0.627,1.623,0.627c0.41,0,0.804-0.084,1.17-0.249 c0.269-0.122,0.549-0.329,0.826-0.61c0.042,0.226,0.105,0.423,0.193,0.605l0.048,0.1l0.848-0.032h0.563l-0.01-0.021L20.261,19.962z M18.464,16.601v0.136c0,0.494-0.049,0.869-0.145,1.111c-0.127,0.315-0.317,0.556-0.581,0.733c-0.26,0.176-0.563,0.265-0.904,0.265 c-0.333,0-0.565-0.081-0.733-0.255c-0.163-0.173-0.243-0.386-0.243-0.653c0-0.176,0.038-0.333,0.117-0.473 c0.068-0.134,0.168-0.233,0.302-0.303c0.15-0.077,0.421-0.15,0.803-0.217C17.645,16.848,18.109,16.732,18.464,16.601z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_last_read.xml b/app/src/main/res/drawable/ic_last_read.xml index b74e62b0b..9a2791b42 100644 --- a/app/src/main/res/drawable/ic_last_read.xml +++ b/app/src/main/res/drawable/ic_last_read.xml @@ -1,7 +1,13 @@ - - + + diff --git a/app/src/main/res/drawable/ic_launch.xml b/app/src/main/res/drawable/ic_launch.xml index fd066a65a..6b423cdc7 100644 --- a/app/src/main/res/drawable/ic_launch.xml +++ b/app/src/main/res/drawable/ic_launch.xml @@ -1,14 +1,14 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M18.545,18.304c0,0.131-0.11,0.242-0.241,0.242H5.696c-0.131,0-0.242-0.111-0.242-0.242V5.697 c0-0.131,0.111-0.243,0.242-0.243H12V4H5.696C4.76,4,4,4.762,4,5.697v12.606C4,19.239,4.76,20,5.696,20h12.607 C19.239,20,20,19.239,20,18.304v-6.303h-1.455V18.304z" /> + android:fillColor="#595757" + android:pathData="M 19.272 4 L 13.843 4 L 13.843 5.454 L 17.517 5.454 L 7.464 15.508 L 8.491 16.536 L 18.545 6.482 L 18.545 10.157 L 20 10.157 L 20 4.727 L 20 4 Z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml index a0ad202f9..d81b113f1 100644 --- a/app/src/main/res/drawable/ic_launcher_background.xml +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -1,74 +1,170 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_list.xml b/app/src/main/res/drawable/ic_list.xml index 447de0d25..4a1b0d561 100644 --- a/app/src/main/res/drawable/ic_list.xml +++ b/app/src/main/res/drawable/ic_list.xml @@ -1,26 +1,26 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M5.938,4v0.97H4v13.334C4,19.239,4.762,20,5.696,20h12.607C19.239,20,20,19.239,20,18.304V4H5.938z M5.454,18.304V6.424h0.484v11.88C5.938,18.57,5.454,18.57,5.454,18.304z M18.546,18.304c0,0.133-0.108,0.242-0.242,0.242H7.368 c0.013-0.08,0.025-0.159,0.025-0.242V5.454h11.152V18.304z" /> + android:fillColor="#595757" + android:pathData="M 9.089 11.061 H 16.849 V 11.97 H 9.089 V 11.061 Z" /> + android:fillColor="#595757" + android:pathData="M 9.089 13 H 16.849 V 13.909 H 9.089 V 13 Z" /> + android:fillColor="#595757" + android:pathData="M 9.089 7.182 H 16.849 V 8.091 H 9.089 V 7.182 Z" /> + android:fillColor="#595757" + android:pathData="M 9.089 9.12 H 16.849 V 10.03 H 9.089 V 9.12 Z" /> + android:fillColor="#595757" + android:pathData="M 9.089 14.939 H 16.849 V 15.848 H 9.089 V 14.939 Z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_live_help_black_24dp.xml b/app/src/main/res/drawable/ic_live_help_black_24dp.xml index 74f549430..8b9c1ac46 100644 --- a/app/src/main/res/drawable/ic_live_help_black_24dp.xml +++ b/app/src/main/res/drawable/ic_live_help_black_24dp.xml @@ -1,9 +1,9 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + android:pathData="M19,2L5,2c-1.11,0 -2,0.9 -2,2v14c0,1.1 0.89,2 2,2h4l3,3 3,-3h4c1.1,0 2,-0.9 2,-2L21,4c0,-1.1 -0.9,-2 -2,-2zM13,18h-2v-2h2v2zM15.07,10.25l-0.9,0.92C13.45,11.9 13,12.5 13,14h-2v-0.5c0,-1.1 0.45,-2.1 1.17,-2.83l1.24,-1.26c0.37,-0.36 0.59,-0.86 0.59,-1.41 0,-1.1 -0.9,-2 -2,-2s-2,0.9 -2,2L8,8c0,-2.21 1.79,-4 4,-4s4,1.79 4,4c0,0.88 -0.36,1.68 -0.93,2.25z" /> diff --git a/app/src/main/res/drawable/ic_mail.xml b/app/src/main/res/drawable/ic_mail.xml index 1a141c9ab..cbe92189a 100644 --- a/app/src/main/res/drawable/ic_mail.xml +++ b/app/src/main/res/drawable/ic_mail.xml @@ -1,11 +1,11 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M18.648,5.818H5.352C4.594,5.818,4,6.343,4,7.013v9.974c0,0.67,0.594,1.195,1.352,1.195h13.297 c0.758,0,1.352-0.525,1.352-1.195V7.013C20,6.343,19.406,5.818,18.648,5.818z M12,11.117L6.392,7.271l11.214,0.003L12,11.117z M5.454,16.725V8.394l6.134,4.206h0.823l6.136-4.206v8.334L5.454,16.725z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_menu_camera.xml b/app/src/main/res/drawable/ic_menu_camera.xml index 41688d5c0..634fe9221 100644 --- a/app/src/main/res/drawable/ic_menu_camera.xml +++ b/app/src/main/res/drawable/ic_menu_camera.xml @@ -1,12 +1,12 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + android:fillColor="#FF000000" + android:pathData="M12,12m-3.2,0a3.2,3.2 0,1 1,6.4 0a3.2,3.2 0,1 1,-6.4 0" /> + android:fillColor="#FF000000" + android:pathData="M9,2L7.17,4H4c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2V6c0,-1.1 -0.9,-2 -2,-2h-3.17L15,2H9zm3,15c-2.76,0 -5,-2.24 -5,-5s2.24,-5 5,-5 5,2.24 5,5 -2.24,5 -5,5z" /> diff --git a/app/src/main/res/drawable/ic_menu_gallery.xml b/app/src/main/res/drawable/ic_menu_gallery.xml index ff8ce529f..03c77099f 100644 --- a/app/src/main/res/drawable/ic_menu_gallery.xml +++ b/app/src/main/res/drawable/ic_menu_gallery.xml @@ -1,9 +1,9 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + android:fillColor="#FF000000" + android:pathData="M22,16V4c0,-1.1 -0.9,-2 -2,-2H8c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2zm-11,-4l2.03,2.71L16,11l4,5H8l3,-4zM2,6v14c0,1.1 0.9,2 2,2h14v-2H4V6H2z" /> diff --git a/app/src/main/res/drawable/ic_menu_manage.xml b/app/src/main/res/drawable/ic_menu_manage.xml index a0e423cd0..aeb047d02 100644 --- a/app/src/main/res/drawable/ic_menu_manage.xml +++ b/app/src/main/res/drawable/ic_menu_manage.xml @@ -1,9 +1,9 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + android:fillColor="#FF000000" + android:pathData="M22.7,19l-9.1,-9.1c0.9,-2.3 0.4,-5 -1.5,-6.9 -2,-2 -5,-2.4 -7.4,-1.3L9,6 6,9 1.6,4.7C0.4,7.1 0.9,10.1 2.9,12.1c1.9,1.9 4.6,2.4 6.9,1.5l9.1,9.1c0.4,0.4 1,0.4 1.4,0l2.3,-2.3c0.5,-0.4 0.5,-1.1 0.1,-1.4z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_menu_send.xml b/app/src/main/res/drawable/ic_menu_send.xml index 9745066f1..fdf1c9009 100644 --- a/app/src/main/res/drawable/ic_menu_send.xml +++ b/app/src/main/res/drawable/ic_menu_send.xml @@ -1,9 +1,9 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + android:fillColor="#FF000000" + android:pathData="M2.01,21L23,12 2.01,3 2,10l15,2 -15,2z" /> diff --git a/app/src/main/res/drawable/ic_menu_share.xml b/app/src/main/res/drawable/ic_menu_share.xml index b3e39e222..338d95ad5 100644 --- a/app/src/main/res/drawable/ic_menu_share.xml +++ b/app/src/main/res/drawable/ic_menu_share.xml @@ -1,9 +1,9 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + android:fillColor="#FF000000" + android:pathData="M18,16.08c-0.76,0 -1.44,0.3 -1.96,0.77L8.91,12.7c0.05,-0.23 0.09,-0.46 0.09,-0.7s-0.04,-0.47 -0.09,-0.7l7.05,-4.11c0.54,0.5 1.25,0.81 2.04,0.81 1.66,0 3,-1.34 3,-3s-1.34,-3 -3,-3 -3,1.34 -3,3c0,0.24 0.04,0.47 0.09,0.7L8.04,9.81C7.5,9.31 6.79,9 6,9c-1.66,0 -3,1.34 -3,3s1.34,3 3,3c0.79,0 1.5,-0.31 2.04,-0.81l7.12,4.16c-0.05,0.21 -0.08,0.43 -0.08,0.65 0,1.61 1.31,2.92 2.92,2.92 1.61,0 2.92,-1.31 2.92,-2.92s-1.31,-2.92 -2.92,-2.92z" /> diff --git a/app/src/main/res/drawable/ic_menu_slideshow.xml b/app/src/main/res/drawable/ic_menu_slideshow.xml index ae51e494a..5e9e163a5 100644 --- a/app/src/main/res/drawable/ic_menu_slideshow.xml +++ b/app/src/main/res/drawable/ic_menu_slideshow.xml @@ -1,9 +1,9 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + android:fillColor="#FF000000" + android:pathData="M4,6H2v14c0,1.1 0.9,2 2,2h14v-2H4V6zm16,-4H8c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2V4c0,-1.1 -0.9,-2 -2,-2zm-8,12.5v-9l6,4.5 -6,4.5z" /> diff --git a/app/src/main/res/drawable/ic_more_vert.xml b/app/src/main/res/drawable/ic_more_vert.xml index e708a4db1..7b7f19554 100644 --- a/app/src/main/res/drawable/ic_more_vert.xml +++ b/app/src/main/res/drawable/ic_more_vert.xml @@ -1,9 +1,9 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + android:fillColor="#FF000000" + android:pathData="M12,8c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM12,10c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM12,16c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2z" /> diff --git a/app/src/main/res/drawable/ic_network_check.xml b/app/src/main/res/drawable/ic_network_check.xml index c6ef1b857..9d88ef1ae 100644 --- a/app/src/main/res/drawable/ic_network_check.xml +++ b/app/src/main/res/drawable/ic_network_check.xml @@ -1,9 +1,9 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + android:fillColor="#FFFFFFFF" + android:pathData="M15.9,5c-0.17,0 -0.32,0.09 -0.41,0.23l-0.07,0.15 -5.18,11.65c-0.16,0.29 -0.26,0.61 -0.26,0.96 0,1.11 0.9,2.01 2.01,2.01 0.96,0 1.77,-0.68 1.96,-1.59l0.01,-0.03L16.4,5.5c0,-0.28 -0.22,-0.5 -0.5,-0.5zM1,9l2,2c2.88,-2.88 6.79,-4.08 10.53,-3.62l1.19,-2.68C9.89,3.84 4.74,5.27 1,9zM21,11l2,-2c-1.64,-1.64 -3.55,-2.82 -5.59,-3.57l-0.53,2.82c1.5,0.62 2.9,1.53 4.12,2.75zM17,15l2,-2c-0.8,-0.8 -1.7,-1.42 -2.66,-1.89l-0.55,2.92c0.42,0.27 0.83,0.59 1.21,0.97zM5,13l2,2c1.13,-1.13 2.56,-1.79 4.03,-2l1.28,-2.88c-2.63,-0.08 -5.3,0.87 -7.31,2.88z" /> diff --git a/app/src/main/res/drawable/ic_pause_24dp.xml b/app/src/main/res/drawable/ic_pause_24dp.xml index a4eba8213..193030b12 100644 --- a/app/src/main/res/drawable/ic_pause_24dp.xml +++ b/app/src/main/res/drawable/ic_pause_24dp.xml @@ -1,9 +1,9 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + android:fillColor="#FFFFFFFF" + android:pathData="M6,19h4L10,5L6,5v14zM14,5v14h4L18,5h-4z" /> diff --git a/app/src/main/res/drawable/ic_pause_outline_24dp.xml b/app/src/main/res/drawable/ic_pause_outline_24dp.xml index 556cddae7..11f30c38d 100644 --- a/app/src/main/res/drawable/ic_pause_outline_24dp.xml +++ b/app/src/main/res/drawable/ic_pause_outline_24dp.xml @@ -1,14 +1,14 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M 8 6 H 9.6 V 18 H 8 V 6 Z" /> + android:fillColor="#595757" + android:pathData="M 14.4 6 H 16 V 18 H 14.4 V 6 Z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_play_24dp.xml b/app/src/main/res/drawable/ic_play_24dp.xml index cf5976472..4250d72cb 100644 --- a/app/src/main/res/drawable/ic_play_24dp.xml +++ b/app/src/main/res/drawable/ic_play_24dp.xml @@ -1,9 +1,9 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + android:fillColor="#FFFFFFFF" + android:pathData="M8,5v14l11,-7z" /> diff --git a/app/src/main/res/drawable/ic_play_outline_24dp.xml b/app/src/main/res/drawable/ic_play_outline_24dp.xml index b41d03091..deb25e9f2 100644 --- a/app/src/main/res/drawable/ic_play_outline_24dp.xml +++ b/app/src/main/res/drawable/ic_play_outline_24dp.xml @@ -1,11 +1,11 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M6.262,20C6.131,20,6,19.966,5.882,19.897c-0.237-0.137-0.384-0.392-0.384-0.667V5.77 c0-0.275,0.146-0.53,0.384-0.667C6.119,4.965,6.41,4.966,6.648,5.104l11.471,6.73c0.234,0.139,0.379,0.392,0.379,0.665 s-0.145,0.526-0.379,0.665l-11.471,6.73C6.528,19.965,6.396,20,6.262,20z M7.027,7.108v10.783l9.188-5.392L7.027,7.108z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_qq_group.xml b/app/src/main/res/drawable/ic_qq_group.xml index e97350048..81d4c8597 100644 --- a/app/src/main/res/drawable/ic_qq_group.xml +++ b/app/src/main/res/drawable/ic_qq_group.xml @@ -1,11 +1,11 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M18.19,10.775c-0.191-0.375-0.375-0.729-0.469-0.986c-0.393-4.563-3.752-5.785-5.752-5.785 c0,0-0.002,0-0.003,0L11.762,4C7.92,4,6.315,7.689,5.981,9.73c-2.133,4.808-1.374,6.268-0.494,7.258 c0.016,0.017,0.029,0.032,0.045,0.048C5.701,18.924,6.947,20,8.985,20c1.127,0,2.283-0.318,2.914-0.509 c2.922,0.821,4.848,0.626,5.781-0.544c0.492-0.62,0.549-1.326,0.523-1.756c0.094-0.109,0.211-0.248,0.339-0.397 C20.251,14.763,19.012,12.363,18.19,10.775z M16.541,18.041c-0.328,0.411-1.034,0.498-1.567,0.498c-0.764,0-1.732-0.17-2.877-0.504 l-0.209-0.061l-0.209,0.063c-0.493,0.151-1.648,0.508-2.693,0.508c-1.209,0-1.817-0.429-1.974-1.411l0.906-0.593l-0.795-1.219 l-0.729,0.478c-0.4-0.555-0.76-1.729,0.957-5.565l0.055-0.191c0.006-0.046,0.715-4.589,4.356-4.589l0.267,0.002 c0.65,0,3.921,0.219,4.25,4.537l0.033,0.168c0.121,0.376,0.336,0.795,0.588,1.28c0.875,1.694,1.516,3.195,0.555,4.378l-0.757-0.497 l-0.796,1.219l0.826,0.54l0.01,0.045C16.737,17.133,16.837,17.669,16.541,18.041z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_read_aloud.xml b/app/src/main/res/drawable/ic_read_aloud.xml index f0ab5860a..7978d2196 100644 --- a/app/src/main/res/drawable/ic_read_aloud.xml +++ b/app/src/main/res/drawable/ic_read_aloud.xml @@ -1,11 +1,11 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M12,4c-4.412,0-8,3.559-8,7.933v1.269v2.117v2.874C4,19.189,4.816,20,5.818,20h2.424 c1.002,0,1.818-0.811,1.818-1.808v-4.991c0-0.997-0.816-1.809-1.818-1.809H5.818c-0.116,0-0.229,0.014-0.339,0.034 C5.742,8.091,8.564,5.454,12,5.454s6.258,2.637,6.52,5.973c-0.109-0.021-0.222-0.034-0.338-0.034h-2.424 c-1.002,0-1.818,0.812-1.818,1.809v4.991c0,0.997,0.816,1.808,1.818,1.808h2.424C19.186,20,20,19.189,20,18.192v-2.874v-2.117 v-1.269C20,7.559,16.412,4,12,4z M5.818,12.847h2.424c0.201,0,0.363,0.159,0.363,0.354v4.991c0,0.194-0.162,0.354-0.363,0.354H5.818 c-0.201,0-0.364-0.159-0.364-0.354v-2.874v-2.117C5.454,13.006,5.617,12.847,5.818,12.847z M18.546,18.192 c0,0.194-0.163,0.354-0.364,0.354h-2.424c-0.201,0-0.365-0.159-0.365-0.354v-4.991c0-0.195,0.164-0.354,0.365-0.354h2.424 c0.201,0,0.364,0.159,0.364,0.354v2.117V18.192z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_refresh_black_24dp.xml b/app/src/main/res/drawable/ic_refresh_black_24dp.xml index 6f22d5f31..fc7f629d8 100644 --- a/app/src/main/res/drawable/ic_refresh_black_24dp.xml +++ b/app/src/main/res/drawable/ic_refresh_black_24dp.xml @@ -1,14 +1,14 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M20,10.302 L15.879,10.302 L15.879,8.848 L18.546,8.848 L18.546,6.182 L20,6.182 Z" /> + android:fillColor="#595757" + android:pathData="M12,20 C7.588,20,4,16.411,4,12 S7.588,4,12,4 C15.183,4,18.063,5.884,19.336,8.801 L18.003,9.384 C16.961,6.997,14.604,5.454,12,5.454 C8.392,5.454,5.454,8.391,5.454,12 S8.392,18.546,12,18.546 C15.1,18.546,17.798,16.344,18.414,13.31 L19.84,13.6 C19.086,17.309,15.789,20,12,20 Z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_refresh_white_24dp.xml b/app/src/main/res/drawable/ic_refresh_white_24dp.xml index 5c2f53873..9e4f8dfcc 100644 --- a/app/src/main/res/drawable/ic_refresh_white_24dp.xml +++ b/app/src/main/res/drawable/ic_refresh_white_24dp.xml @@ -1,9 +1,9 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + android:fillColor="#ffffff" + android:pathData="M17.65,6.35C16.2,4.9 14.21,4 12,4c-4.42,0 -7.99,3.58 -7.99,8s3.57,8 7.99,8c3.73,0 6.84,-2.55 7.73,-6h-2.08c-0.82,2.33 -3.04,4 -5.65,4 -3.31,0 -6,-2.69 -6,-6s2.69,-6 6,-6c1.66,0 3.14,0.69 4.22,1.78L13,11h7V4l-2.35,2.35z" /> diff --git a/app/src/main/res/drawable/ic_restore.xml b/app/src/main/res/drawable/ic_restore.xml index 12c95ce76..75e5490f6 100644 --- a/app/src/main/res/drawable/ic_restore.xml +++ b/app/src/main/res/drawable/ic_restore.xml @@ -1,26 +1,26 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M18.807,13.043 C18.035,12.273,17.011,11.848,15.924,11.848 C14.876,11.848,13.893,12.25,13.134,12.966 L13.134,12.281 L11.847,12.281 L11.847,15.095 L12.49,15.095 L13.135,15.095 L14.908,15.095 L14.908,13.806 L14.128,13.806 C14.632,13.378,15.256,13.132,15.924,13.132 C16.668,13.132,17.369,13.425,17.896,13.952 C18.423,14.477,18.713,15.179,18.713,15.925 C18.713,16.667,18.423,17.366,17.896,17.896 C17.37,18.421,16.668,18.71,15.924,18.71 C15.178,18.71,14.479,18.421,13.949,17.896 C13.425,17.367,13.135,16.669,13.135,15.925 L11.848,15.925 C11.848,17.013,12.27,18.038,13.041,18.804 C13.81,19.576,14.834,20,15.924,20 C17.011,20,18.035,19.576,18.807,18.805 C19.576,18.037,20,17.012,20,15.926 C20,14.836,19.576,13.813,18.807,13.043 Z" /> + android:fillColor="#595757" + android:pathData="M5.287,5.625 C5.287,5.437,5.439,5.287,5.625,5.287 L16.412,5.287 C16.596,5.287,16.751,5.441,16.751,5.625 L16.751,11.02 L18.038,11.02 L18.038,5.625 C18.038,4.727,17.308,3.998,16.412,3.998 L5.625,3.998 C4.73,3.998,4,4.727,4,5.625 L4,18.377 C4,19.273,4.73,20.002,5.625,20.002 L11.018,20.002 L11.018,18.713 L5.625,18.713 C5.439,18.713,5.287,18.563,5.287,18.377 L5.287,18.039 L11.018,18.039 L11.018,16.754 L5.287,16.754 L5.287,5.625 Z" /> + android:fillColor="#595757" + android:pathData="M5.96,6.117 L7.247,6.117 L7.247,7.097 L5.96,7.097 L5.96,6.117 Z" /> + android:fillColor="#595757" + android:pathData="M14.789,6.117 L16.076,6.117 L16.076,7.097 L14.789,7.097 L14.789,6.117 Z" /> + android:fillColor="#595757" + android:pathData="M5.96,14.945 L7.247,14.945 L7.247,15.925 L5.96,15.925 L5.96,14.945 Z" /> + android:fillColor="#595757" + android:pathData="M11.473,11.475 L13.387,9.562 C13.65,9.988,13.809,10.484,13.809,11.02 L15.097,11.02 C15.097,10.128,14.801,9.309,14.312,8.637 L14.908,8.041 L13.996,7.133 L13.401,7.728 C12.729,7.24,11.91,6.944,11.018,6.944 C8.769,6.944,6.941,8.774,6.941,11.02 C6.941,13.268,8.77,15.096,11.018,15.096 L11.018,13.807 C9.48,13.807,8.228,12.557,8.228,11.02 C8.228,9.481,9.48,8.229,11.018,8.229 C11.554,8.229,12.051,8.388,12.476,8.652 L10.562,10.565 L11.473,11.475 Z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_save.xml b/app/src/main/res/drawable/ic_save.xml index 27c5b36ce..042962ee5 100644 --- a/app/src/main/res/drawable/ic_save.xml +++ b/app/src/main/res/drawable/ic_save.xml @@ -1,14 +1,14 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M19.2,3.2h-3.417H8.212H4.8c-0.882,0-1.6,0.718-1.6,1.6v14.4c0,0.882,0.718,1.6,1.6,1.6h14.4 c0.882,0,1.6-0.718,1.6-1.6V4.8C20.8,3.918,20.082,3.2,19.2,3.2z M15.798,4.8L15.8,8.993C15.799,8.995,15.794,9,15.783,9H8.197 l0.015-4.2H15.798z M19.199,19.2H4.8V4.8h1.798V9c0,0.882,0.724,1.6,1.614,1.6h7.571c0.891,0,1.614-0.718,1.614-1.6V4.8H19.2 L19.199,19.2z M19.2,20v-0.8h0.001L19.2,20z" /> + android:fillColor="#595757" + android:pathData="M 13.291 5.354 H 14.541 V 8.354 H 13.291 V 5.354 Z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_scan.xml b/app/src/main/res/drawable/ic_scan.xml index ed5b5f201..3285a9327 100644 --- a/app/src/main/res/drawable/ic_scan.xml +++ b/app/src/main/res/drawable/ic_scan.xml @@ -1,11 +1,11 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="1024" + android:viewportHeight="1024"> + android:fillColor="#000000" + android:pathData="M725.333333 128h149.184C886.421333 128 896 137.578667 896 149.482667V298.666667a42.666667 42.666667 0 1 0 85.333333 0V149.482667A106.752 106.752 0 0 0 874.517333 42.666667H725.333333a42.666667 42.666667 0 1 0 0 85.333333z m170.666667 597.333333v149.184c0 11.904-9.578667 21.482667-21.482667 21.482667H725.333333a42.666667 42.666667 0 1 0 0 85.333333h149.184A106.752 106.752 0 0 0 981.333333 874.517333V725.333333a42.666667 42.666667 0 1 0-85.333333 0z m-597.333333 170.666667H149.482667A21.418667 21.418667 0 0 1 128 874.517333V725.333333a42.666667 42.666667 0 1 0-85.333333 0v149.184A106.752 106.752 0 0 0 149.482667 981.333333H298.666667a42.666667 42.666667 0 1 0 0-85.333333zM128 298.666667a42.666667 42.666667 0 1 1-85.333333 0V149.482667A106.752 106.752 0 0 1 149.482667 42.666667H298.666667a42.666667 42.666667 0 1 1 0 85.333333H149.482667C137.578667 128 128 137.578667 128 149.482667V298.666667zM85.333333 554.666667a42.666667 42.666667 0 1 1 0-85.333334h853.333334a42.666667 42.666667 0 1 1 0 85.333334H85.333333z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_scoring.xml b/app/src/main/res/drawable/ic_scoring.xml index b716b3ef8..683b68107 100644 --- a/app/src/main/res/drawable/ic_scoring.xml +++ b/app/src/main/res/drawable/ic_scoring.xml @@ -1,11 +1,11 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M16.948,19.437L12,16.838l-4.946,2.599L8,13.932l-4-3.9l5.528-0.808L12,4.219l2.472,5.005L20,10.031 l-4,3.9L16.948,19.437z M12,15.349l3.198,1.679l-0.613-3.557l2.584-2.52l-3.572-0.52L12,7.192l-1.599,3.239l-3.572,0.52l2.588,2.52 l-0.613,3.557L12,15.349z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_search.xml b/app/src/main/res/drawable/ic_search.xml index c7370b2d3..921e00d7a 100644 --- a/app/src/main/res/drawable/ic_search.xml +++ b/app/src/main/res/drawable/ic_search.xml @@ -1,17 +1,17 @@ + android:height="24dp" + android:viewportHeight="48" + android:viewportWidth="48" + android:width="24dp" + xmlns:android="http://schemas.android.com/apk/res/android"> + android:fillColor="#39393A" + android:pathData="M20,32.7c-6.9,0 -12.6,-5.6 -12.6,-12.6c0,-6.9 5.6,-12.6 12.6,-12.6c6.9,0 12.6,5.6 12.6,12.6C32.6,27 27,32.7 20,32.7M20,9C13.9,9 8.9,14 8.9,20.1c0,6.1 5,11.1 11.1,11.1c6.1,0 11.1,-5 11.1,-11.1C31.1,14 26.2,9 20,9" + android:strokeColor="#39393A" + android:strokeWidth="2" /> + android:fillColor="#39393A" + android:pathData="M39.8,40.4c-0.2,0 -0.4,-0.1 -0.5,-0.2L28.1,29.1c-0.3,-0.3 -0.3,-0.7 0,-1c0.3,-0.3 0.7,-0.3 1,0l11.1,11.1c0.3,0.3 0.3,0.7 0,1C40.2,40.4 40,40.4 39.8,40.4" + android:strokeColor="#39393A" + android:strokeWidth="2" /> diff --git a/app/src/main/res/drawable/ic_select_all.xml b/app/src/main/res/drawable/ic_select_all.xml index 6e73c7002..7211a6157 100644 --- a/app/src/main/res/drawable/ic_select_all.xml +++ b/app/src/main/res/drawable/ic_select_all.xml @@ -1,23 +1,23 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M5.6,20.009 C4.719,20.009,4,19.22,4,18.252 L4,5.749 C4,4.78,4.719,3.991,5.6,3.991 L16.22,3.991 C17.102,3.991,17.819,4.78,17.819,5.748 L17.819,6.932 L16.336,7.007 L16.259,5.75 C16.259,5.627,16.197,5.578,16.197,5.578 L5.6,5.582 C5.602,5.597,5.561,5.652,5.561,5.749 L5.561,18.252 C5.561,18.359,5.612,18.415,5.624,18.423 L16.22,18.418 C16.218,18.404,16.259,18.351,16.259,18.251 L16.259,13.585 L17.743,13.511 L17.818,18.25 C17.818,19.219,17.101,20.008,16.219,20.008 L5.6,20.008 Z" /> + android:fillColor="#595757" + android:pathData="M10.592,11.063 L11.66,10.011 L13.738,12.324 L18.967,7.553 L20,8.645 L14.658,13.514 L13.54,14.514 Z" /> + android:fillColor="#595757" + android:pathData="M10.61,11.047 L11.678,10.029 L13.72,12.34 L18.984,7.571 L19.982,8.662 L14.642,13.496 L13.542,14.479 Z" /> + android:fillColor="#595757" + android:pathData="M10.63,11.031 L11.694,10.048 L13.699,12.357 L19,7.59 L19.962,8.678 L14.625,13.478 L13.545,14.443 Z" /> + android:fillColor="#595757" + android:pathData="M19.016,7.608 L13.682,12.373 L11.711,10.066 L10.648,11.015 L12.619,13.321 L13.547,14.408 L14.608,13.459 L19.943,8.694 Z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_settings.xml b/app/src/main/res/drawable/ic_settings.xml index fe8892929..0424ce07a 100644 --- a/app/src/main/res/drawable/ic_settings.xml +++ b/app/src/main/res/drawable/ic_settings.xml @@ -1,14 +1,14 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M12,15.43 C10.109,15.43,8.572,13.891,8.572,12 S10.109,8.57,12,8.57 S15.428,10.109,15.428,12 S13.891,15.43,12,15.43 Z M12,10.096 C10.949,10.096,10.096,10.95,10.096,12 S10.95,13.904,12,13.904 S13.904,13.05,13.904,12 S13.051,10.096,12,10.096 Z" /> + android:fillColor="#595757" + android:pathData="M13.735,20 L10.261,20 L10.12,18.065 C10.102,17.807,9.944,17.585,9.721,17.492 C9.472,17.387,9.214,17.429,9.024,17.592 L7.568,18.848 L5.113,16.391 L6.369,14.937 C6.531,14.749,6.573,14.49,6.477,14.258 C6.376,14.013,6.166,13.857,5.913,13.836 L4,13.697 L4,10.226 L5.916,10.085 C6.164,10.066,6.378,9.913,6.473,9.683 C6.574,9.438,6.536,9.185,6.371,8.992 L5.113,7.539 L7.573,5.094 L9.026,6.376 C9.222,6.544,9.495,6.605,9.703,6.522 L9.844,6.461 C10.026,6.273,10.107,6.141,10.119,5.974 L10.262,4 L13.734,4 L13.877,5.894 C13.895,6.139,14.041,6.335,14.277,6.43 C14.527,6.537,14.786,6.494,14.975,6.332 L16.427,5.073 L18.886,7.531 L17.629,8.984 C17.467,9.172,17.426,9.431,17.521,9.664 C17.622,9.909,17.833,10.066,18.085,10.085 L20,10.227 L20,13.698 L18.085,13.837 C17.837,13.858,17.623,14.011,17.528,14.242 C17.426,14.487,17.465,14.747,17.63,14.94 L18.886,16.391 L16.429,18.85 L14.975,17.594 C14.799,17.444,14.544,17.398,14.322,17.479 L14.295,17.493 C14.051,17.594,13.894,17.816,13.876,18.068 L13.735,20 Z M11.561,18.604 L12.437,18.604 L12.482,17.963 C12.538,17.216,13.011,16.538,13.691,16.232 L13.737,16.211 C14.526,15.883,15.308,16.04,15.886,16.54 L16.358,16.945 L16.98,16.321 L16.574,15.852 C16.064,15.26,15.933,14.446,16.231,13.725 C16.535,12.993,17.206,12.502,17.982,12.446 L18.604,12.399 L18.604,11.524 L17.984,11.477 C17.207,11.421,16.536,10.938,16.239,10.215 C15.935,9.485,16.065,8.664,16.574,8.07 L16.98,7.601 L16.358,6.979 L15.886,7.386 C15.308,7.885,14.472,8.022,13.761,7.729 C13.029,7.428,12.54,6.763,12.482,5.996 L12.438,5.397 L11.558,5.397 L11.514,6 C11.457,6.773,10.973,7.438,10.252,7.733 L10.091,7.789 C9.416,8.008,8.652,7.856,8.112,7.392 L7.639,6.982 L7.02,7.602 L7.426,8.075 C7.936,8.665,8.067,9.479,7.77,10.202 C7.467,10.931,6.796,11.422,6.02,11.477 L5.397,11.524 L5.397,12.399 L6.019,12.446 C6.796,12.503,7.465,12.987,7.762,13.71 C8.066,14.44,7.935,15.261,7.426,15.852 L7.02,16.32 L7.64,16.941 L8.112,16.535 C8.692,16.035,9.528,15.898,10.239,16.194 C10.958,16.488,11.458,17.181,11.515,17.961 L11.561,18.604 Z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_share.xml b/app/src/main/res/drawable/ic_share.xml index 0ed7a1688..0022d3b38 100644 --- a/app/src/main/res/drawable/ic_share.xml +++ b/app/src/main/res/drawable/ic_share.xml @@ -1,14 +1,14 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#FFFFFF" + android:pathData="M9.866,9.9c-1.158,0-2.1,0.941-2.1,2.1s0.941,2.1,2.1,2.1s2.1-0.941,2.1-2.1S11.024,9.9,9.866,9.9z M9.866,13.1c-0.606,0-1.1-0.493-1.1-1.1s0.493-1.1,1.1-1.1s1.1,0.493,1.1,1.1S10.473,13.1,9.866,13.1z" /> + android:fillColor="#FFFFFF" + android:pathData="M16.267,16c-0.37,0-0.716,0.091-1.029,0.241l-1.656-1.657c0.513-0.734,0.817-1.623,0.817-2.584 s-0.305-1.85-0.817-2.584l1.656-1.657C15.551,7.909,15.896,8,16.267,8c1.323,0,2.399-1.077,2.399-2.4S17.59,3.2,16.267,3.2 s-2.4,1.076-2.4,2.399c0,0.369,0.091,0.715,0.241,1.028L12.45,8.285c-0.733-0.513-1.622-0.818-2.584-0.818 c-2.5,0-4.533,2.033-4.533,4.533s2.033,4.533,4.533,4.533c0.962,0,1.851-0.306,2.584-0.818l1.657,1.657 c-0.15,0.313-0.241,0.659-0.241,1.028c0,1.323,1.077,2.399,2.4,2.399s2.399-1.076,2.399-2.399S17.59,16,16.267,16z M16.267,4.8 c0.44,0,0.8,0.359,0.8,0.8c0,0.441-0.359,0.801-0.8,0.801c-0.441,0-0.801-0.359-0.801-0.801C15.466,5.159,15.825,4.8,16.267,4.8z M9.866,14.934c-1.617,0-2.934-1.316-2.934-2.934s1.316-2.934,2.934-2.934s2.933,1.316,2.933,2.934S11.483,14.934,9.866,14.934z M16.267,19.2c-0.441,0-0.801-0.359-0.801-0.8c0-0.441,0.359-0.801,0.801-0.801c0.44,0,0.8,0.359,0.8,0.801 C17.066,18.841,16.707,19.2,16.267,19.2z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_skip_next.xml b/app/src/main/res/drawable/ic_skip_next.xml index 4ad2389e0..eae4da1bf 100644 --- a/app/src/main/res/drawable/ic_skip_next.xml +++ b/app/src/main/res/drawable/ic_skip_next.xml @@ -1,9 +1,9 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + android:fillColor="#FF000000" + android:pathData="M6,18l8.5,-6L6,6v12zM16,6v12h2V6h-2z" /> diff --git a/app/src/main/res/drawable/ic_skip_previous.xml b/app/src/main/res/drawable/ic_skip_previous.xml index 1f558a617..abb9944fc 100644 --- a/app/src/main/res/drawable/ic_skip_previous.xml +++ b/app/src/main/res/drawable/ic_skip_previous.xml @@ -1,9 +1,9 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + android:fillColor="#FF000000" + android:pathData="M6,6h2v12L6,18zM9.5,12l8.5,6L18,6z" /> diff --git a/app/src/main/res/drawable/ic_stop_black_24dp.xml b/app/src/main/res/drawable/ic_stop_black_24dp.xml index 27eec317a..025a8b82e 100644 --- a/app/src/main/res/drawable/ic_stop_black_24dp.xml +++ b/app/src/main/res/drawable/ic_stop_black_24dp.xml @@ -1,9 +1,9 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + android:fillColor="#FFFFFFFF" + android:pathData="M6,6h12v12H6z" /> diff --git a/app/src/main/res/drawable/ic_swap_outline_24dp.xml b/app/src/main/res/drawable/ic_swap_outline_24dp.xml index 52e3355c1..f9026522d 100644 --- a/app/src/main/res/drawable/ic_swap_outline_24dp.xml +++ b/app/src/main/res/drawable/ic_swap_outline_24dp.xml @@ -1,20 +1,20 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M6.842,18.549 L4,15.707 L6.842,12.866 L7.89,13.915 L6.098,15.707 L7.89,17.5 Z" /> + android:fillColor="#595757" + android:pathData="M5.049,14.966 L19.414,14.966 L19.414,16.449 L5.049,16.449 L5.049,14.966 Z" /> + android:fillColor="#595757" + android:pathData="M17.158,11.134 L16.11,10.085 L17.902,8.292 L16.11,6.5 L17.158,5.451 L20,8.292 Z" /> + android:fillColor="#595757" + android:pathData="M4.586,7.551 L18.951,7.551 L18.951,9.034 L4.586,9.034 L4.586,7.551 Z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_theme.xml b/app/src/main/res/drawable/ic_theme.xml index 7af5b372e..90da16498 100644 --- a/app/src/main/res/drawable/ic_theme.xml +++ b/app/src/main/res/drawable/ic_theme.xml @@ -1,20 +1,20 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M12.91,20h-0.919C7.584,20,4,16.411,4,11.999C4,7.588,7.584,4,11.991,4 c2.246,0,4.435,0.975,6.006,2.674c1.43,1.546,2.134,3.457,1.983,5.379c-0.082,1.103-0.854,3.233-3.187,3.385l-0.418,0.027 c-1.888,0.121-3.38,0.216-3.819,0.855l0,0c0.004,0-0.299,0.688,0.681,2.273l0.231,0.323c0.148,0.209,0.168,0.483,0.05,0.712 C13.401,19.857,13.167,20,12.91,20z M11.991,5.371c-3.65,0-6.62,2.974-6.62,6.628c0,3.555,2.807,6.464,6.317,6.622 c-0.948-1.926-0.393-2.894-0.258-3.084c0.812-1.182,2.509-1.291,4.857-1.44l0.416-0.026c1.74-0.114,1.903-2.04,1.909-2.122 c0.12-1.539-0.456-3.081-1.623-4.343C15.677,6.186,13.855,5.371,11.991,5.371z" /> + android:fillColor="#595757" + android:pathData="M 12.206 7.02 C 13.01178345 7.02 13.665 7.67321655 13.665 8.479 C 13.665 9.28478345 13.01178345 9.938 12.206 9.938 C 11.40021655 9.938 10.747 9.28478345 10.747 8.479 C 10.747 7.67321655 11.40021655 7.02 12.206 7.02 Z" /> + android:fillColor="#595757" + android:pathData="M 8.828 10.268 C 9.63378345 10.268 10.287 10.92121655 10.287 11.727 C 10.287 12.53278345 9.63378345 13.186 8.828 13.186 C 8.02221655 13.186 7.369 12.53278345 7.369 11.727 C 7.369 10.92121655 8.02221655 10.268 8.828 10.268 Z" /> + android:fillColor="#595757" + android:pathData="M 15.45 10.268 C 16.25578345 10.268 16.909 10.92121655 16.909 11.727 C 16.909 12.53278345 16.25578345 13.186 15.45 13.186 C 14.64421655 13.186 13.991 12.53278345 13.991 11.727 C 13.991 10.92121655 14.64421655 10.268 15.45 10.268 Z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_time_add_24dp.xml b/app/src/main/res/drawable/ic_time_add_24dp.xml index 9114c9848..b3960a060 100644 --- a/app/src/main/res/drawable/ic_time_add_24dp.xml +++ b/app/src/main/res/drawable/ic_time_add_24dp.xml @@ -1,10 +1,10 @@ + android:width="24.0dp" + android:height="24.0dp" + android:viewportWidth="1000.0" + android:viewportHeight="1000.0"> + android:fillColor="#FFFFFFFF" + android:pathData="M698.235505586 166.666668C698.235505586 166.666668 869.372215288 309.497277476 869.372215288 309.497277476C869.372215288 309.497277476 821.823923241 366.518082099 821.823923241 366.518082099C821.823923241 366.518082099 650.575796871 223.76176429 650.575796871 223.76176429C650.575796871 223.76176429 698.235505586 166.666668 698.235505586 166.666668M301.727348247 166.666668C301.727348247 166.666668 349.349936128 223.724618456 349.349936128 223.724618456C349.349936128 223.724618456 178.176084759 366.518082099 178.176084759 366.518082099C178.176084759 366.518082099 130.627792712 309.460131642 130.627792712 309.460131642C130.627792712 309.460131642 301.727348247 166.666668 301.727348247 166.666668M499.981420667 248.018822817C315.360335856 248.018822817 165.657509659 397.721628182 165.657509659 582.342754659C165.657509659 766.963839469 315.360335856 916.666674 499.981420667 916.666674C684.602547143 916.666674 834.305381674 766.963839469 834.305381674 582.342754659C834.305381674 397.721628182 684.602547143 248.018822817 499.981420667 248.018822817C499.981420667 248.018822817 499.981420667 248.018822817 499.981420667 248.018822817M499.981420667 842.372465072C356.593619519 842.372465072 239.95171442 725.730547473 239.95171442 582.342754659C239.95171442 438.954920178 356.593619519 322.313027579 499.981420667 322.313027579C643.369255147 322.313027579 760.011172747 438.954920178 760.011172747 582.342754659C760.011172747 725.730547473 643.369255147 842.372465072 499.981420667 842.372465072C499.981420667 842.372465072 499.981420667 842.372465072 499.981420667 842.372465072M537.128545964 433.754336803C537.128545964 433.754336803 462.834337036 433.754336803 462.834337036 433.754336803C462.834337036 433.754336803 462.834337036 545.195629362 462.834337036 545.195629362C462.834337036 545.195629362 351.393023644 545.195629362 351.393023644 545.195629362C351.393023644 545.195629362 351.393023644 619.489838289 351.393023644 619.489838289C351.393023644 619.489838289 462.834337036 619.489838289 462.834337036 619.489838289C462.834337036 619.489838289 462.834337036 730.931172514 462.834337036 730.931172514C462.834337036 730.931172514 537.128545964 730.931172514 537.128545964 730.931172514C537.128545964 730.931172514 537.128545964 619.489838289 537.128545964 619.489838289C537.128545964 619.489838289 648.569838522 619.489838289 648.569838522 619.489838289C648.569838522 619.489838289 648.569838522 545.195629362 648.569838522 545.195629362C648.569838522 545.195629362 537.128545964 545.195629362 537.128545964 545.195629362C537.128545964 545.195629362 537.128545964 433.754336803 537.128545964 433.754336803" /> diff --git a/app/src/main/res/drawable/ic_timer_black_24dp.xml b/app/src/main/res/drawable/ic_timer_black_24dp.xml index a7338a31f..df5ad4e8a 100644 --- a/app/src/main/res/drawable/ic_timer_black_24dp.xml +++ b/app/src/main/res/drawable/ic_timer_black_24dp.xml @@ -1,20 +1,20 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M 12.742 9.076 L 11.258 9.076 L 11.258 13.009 L 14.492 13.009 L 14.492 11.522 L 12.742 11.522 Z" /> + android:fillColor="#595757" + android:pathData="M12.094,5.522c-3.719,0-6.742,3.024-6.742,6.742c0,2.38,1.241,4.472,3.107,5.672L7.77,19.016 l1.252,0.801l0.777-1.218c0.717,0.261,1.488,0.41,2.295,0.41c0.918,0,1.792-0.187,2.592-0.52l0.848,1.327l1.252-0.801l-0.803-1.252 c1.725-1.224,2.854-3.229,2.854-5.499C18.836,8.547,15.811,5.522,12.094,5.522z M12.094,17.523c-2.898,0-5.258-2.358-5.258-5.259 c0-2.897,2.359-5.256,5.258-5.256s5.257,2.358,5.257,5.256C17.351,15.165,14.992,17.523,12.094,17.523z" /> + android:fillColor="#595757" + android:pathData="M5.725,6.557c0-0.336,0.13-0.65,0.367-0.888c0.49-0.49,1.289-0.491,1.779,0.001l1.05-1.053 c-1.069-1.068-2.811-1.068-3.879,0C4.523,5.135,4.238,5.823,4.237,6.556c0,0.733,0.286,1.423,0.805,1.941l1.05-1.05 C5.854,7.209,5.723,6.893,5.725,6.557z" /> + android:fillColor="#595757" + android:pathData="M18.958,4.617c-1.071-1.069-2.812-1.068-3.88,0.002l1.051,1.05c0.489-0.49,1.288-0.49,1.779,0 c0.489,0.489,0.489,1.287-0.002,1.778l1.053,1.05C20.027,7.427,20.027,5.687,18.958,4.617z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_toc.xml b/app/src/main/res/drawable/ic_toc.xml index e21bcf95c..62bb997db 100644 --- a/app/src/main/res/drawable/ic_toc.xml +++ b/app/src/main/res/drawable/ic_toc.xml @@ -1,26 +1,26 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M5.939,4v0.97H4v13.334C4,19.239,4.762,20,5.697,20h12.606C19.239,20,20,19.239,20,18.304V4H5.939z M5.454,18.304V6.424h0.485v11.88C5.939,18.57,5.454,18.57,5.454,18.304z M18.547,18.304c0,0.133-0.109,0.242-0.243,0.242H7.369 c0.012-0.08,0.024-0.159,0.024-0.242V5.454h11.153V18.304z" /> + android:fillColor="#595757" + android:pathData="M 9.09 11.061 H 16.849 V 11.97 H 9.09 V 11.061 Z" /> + android:fillColor="#595757" + android:pathData="M 9.09 13 H 16.849 V 13.909 H 9.09 V 13 Z" /> + android:fillColor="#595757" + android:pathData="M 9.09 7.182 H 16.849 V 8.091 H 9.09 V 7.182 Z" /> + android:fillColor="#595757" + android:pathData="M 9.09 9.12 H 16.849 V 10.03 H 9.09 V 9.12 Z" /> + android:fillColor="#595757" + android:pathData="M 9.09 14.939 H 16.849 V 15.848 H 9.09 V 14.939 Z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_top_source.xml b/app/src/main/res/drawable/ic_top_source.xml index 2c973959a..0b19c9cb4 100644 --- a/app/src/main/res/drawable/ic_top_source.xml +++ b/app/src/main/res/drawable/ic_top_source.xml @@ -1,14 +1,14 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M 4 4.003 H 20 V 5.603 H 4 V 4.003 Z" /> + android:fillColor="#595757" + android:pathData="M 5.594 12.821 L 6.742 13.935 L 11.199 9.338 L 11.194 20 L 12.794 20 L 12.799 9.338 L 17.251 13.938 L 18.401 12.825 L 11.999 6.214 Z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_translate.xml b/app/src/main/res/drawable/ic_translate.xml index 0d5f42df1..ae2a4dde7 100644 --- a/app/src/main/res/drawable/ic_translate.xml +++ b/app/src/main/res/drawable/ic_translate.xml @@ -1,14 +1,14 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M16.424,10.47h-1.258L11.676,20h1.428l0.984-2.77h3.459L18.572,20H20L16.424,10.47z M17.057,15.917 h-2.481l1.241-3.535L17.057,15.917z" /> + android:fillColor="#595757" + android:pathData="M12.361,15.597l0.488-1.354l-0.191-0.082c-0.73-0.313-1.342-0.657-1.824-1.024 c1.232-1.382,2.061-3.222,2.465-5.476h2.135v-1.38h-4.7l0.25-0.146l-0.098-0.201c-0.413-0.843-0.722-1.424-0.946-1.775L9.839,4 L8.656,4.654l0.098,0.204c0.309,0.644,0.543,1.119,0.701,1.423h-5.25v1.38H6.34c0.38,2.138,1.211,3.978,2.475,5.476 c-0.93,0.749-2.461,1.466-4.555,2.133L4,15.352l0.143,0.254c0.153,0.271,0.322,0.595,0.508,0.969l0.085,0.171L4.9,16.678 c2.273-0.928,3.928-1.79,4.916-2.563c0.566,0.456,1.355,0.925,2.353,1.393L12.361,15.597z M11.912,7.661 c-0.287,1.778-0.975,3.294-2.045,4.513c-1.131-1.274-1.877-2.79-2.223-4.513H11.912z" /> diff --git a/app/src/main/res/drawable/ic_tune.xml b/app/src/main/res/drawable/ic_tune.xml index b9bd12b85..cdc9858e1 100644 --- a/app/src/main/res/drawable/ic_tune.xml +++ b/app/src/main/res/drawable/ic_tune.xml @@ -1,17 +1,17 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M13.592,5.523V4.747c0-0.696-0.565-1.262-1.262-1.262H9.252c-0.694,0-1.26,0.565-1.26,1.262v0.776H4 v1.523h3.992v0.777c0,0.695,0.565,1.261,1.26,1.261h3.078c0.696,0,1.262-0.565,1.262-1.261V7.047H20V5.523H13.592z M11.992,7.485 h-2.4v-2.4h2.4V7.485z" /> + android:fillColor="#595757" + android:pathData="M19.008,10.462c0-0.696-0.565-1.262-1.262-1.262h-3.078c-0.694,0-1.26,0.565-1.26,1.262v0.778H4 v1.521h9.408v0.778c0,0.695,0.565,1.261,1.26,1.261h3.078c0.696,0,1.262-0.565,1.262-1.261v-0.778H20V11.24h-0.992V10.462z M17.408,13.2h-2.4v-2.4h2.4V13.2z" /> + android:fillColor="#595757" + android:pathData="M11.008,16.178c0-0.696-0.565-1.262-1.262-1.262H6.668c-0.694,0-1.26,0.565-1.26,1.262v0.776H4 v1.523h1.408v0.777c0,0.695,0.565,1.261,1.26,1.261h3.078c0.696,0,1.262-0.565,1.262-1.261v-0.777H20v-1.523h-8.992V16.178z M9.408,18.916h-2.4v-2.4h2.4V18.916z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_update.xml b/app/src/main/res/drawable/ic_update.xml index 0d0e1fe81..2490a577d 100644 --- a/app/src/main/res/drawable/ic_update.xml +++ b/app/src/main/res/drawable/ic_update.xml @@ -1,14 +1,14 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M15.879,10.302H20V6.182h-1.454V7.43C17.066,5.315,14.646,4,12,4c-4.412,0-8,3.589-8,8s3.588,8,8,8 c3.789,0,7.086-2.691,7.84-6.401l-1.426-0.29C17.798,16.344,15.1,18.546,12,18.546c-3.608,0-6.546-2.937-6.546-6.546 S8.392,5.454,12,5.454c2.398,0,4.576,1.32,5.721,3.394h-1.842V10.302z" /> + android:fillColor="#595757" + android:pathData="M 12.727 12.105 L 12.727 7.469 L 11.273 7.469 L 11.273 12.708 L 14.014 15.448 L 15.042 14.42 Z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_version.xml b/app/src/main/res/drawable/ic_version.xml index 0eccdac3f..551bee2c8 100644 --- a/app/src/main/res/drawable/ic_version.xml +++ b/app/src/main/res/drawable/ic_version.xml @@ -1,11 +1,11 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M5.938,4v16h1.414l4.648-2.789L16.649,20h1.411V4H5.938z M16.606,18.278l-4.605-2.763l-4.609,2.764 V5.454h9.215V18.278z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_view_quilt.xml b/app/src/main/res/drawable/ic_view_quilt.xml index 30f5e324c..a0fb3d300 100644 --- a/app/src/main/res/drawable/ic_view_quilt.xml +++ b/app/src/main/res/drawable/ic_view_quilt.xml @@ -1,26 +1,26 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#595757" + android:pathData="M18,4 L6,4 C4.896,4,4,4.896,4,6 L4,18 C4,19.104,4.896,20,6,20 L18,20 C19.104,20,20,19.104,20,18 L20,6 C20,4.896,19.104,4,18,4 Z M18.568,18.568 L5.432,18.568 L5.432,5.432 L18.568,5.432 L18.568,18.568 Z" /> + android:strokeColor="#595757" + android:strokeWidth="1.435" + android:strokeMiterLimit="10" + android:pathData="M5.234,8.946 L18.734,8.946" /> + android:strokeColor="#595757" + android:strokeWidth="1.435" + android:strokeMiterLimit="10" + android:pathData="M8.559,9.422 L8.559,18.616" /> + android:strokeColor="#595757" + android:strokeWidth="1.435" + android:strokeMiterLimit="10" + android:pathData="M18.734,13.482 L8.969,13.482" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_volume_up.xml b/app/src/main/res/drawable/ic_volume_up.xml index e1e30c7c1..5d604f823 100644 --- a/app/src/main/res/drawable/ic_volume_up.xml +++ b/app/src/main/res/drawable/ic_volume_up.xml @@ -1,9 +1,9 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + android:fillColor="#FFFFFFFF" + android:pathData="M3,9v6h4l5,5L12,4L7,9L3,9zM16.5,12c0,-1.77 -1.02,-3.29 -2.5,-4.03v8.05c1.48,-0.73 2.5,-2.25 2.5,-4.02zM14,3.23v2.06c2.89,0.86 5,3.54 5,6.71s-2.11,5.85 -5,6.71v2.06c4.01,-0.91 7,-4.49 7,-8.77s-2.99,-7.86 -7,-8.77z" /> diff --git a/app/src/main/res/drawable/ic_web_outline.xml b/app/src/main/res/drawable/ic_web_outline.xml index 7bcbe7ca6..adaeb5644 100644 --- a/app/src/main/res/drawable/ic_web_outline.xml +++ b/app/src/main/res/drawable/ic_web_outline.xml @@ -1,13 +1,13 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:pathData="m12.23,3.5468c4.0323,5.6914 4.6425,11.2543 0,16.6202l0,0m-0.4599,-16.6202c-4.0323,5.6914 -4.6425,11.2543 0,16.6202l0,0m-8.27,-8.167 l17,0 0,0m-0.2485,0a8.2515,8.2515 72.5893,0 1,-8.2515 8.2516,8.2515 8.2515,72.5893 0,1 -8.2515,-8.2516 8.2515,8.2515 72.5893,0 1,8.2515 -8.2516,8.2515 8.2515,72.5893 0,1 8.2515,8.2516z" + android:strokeAlpha="1" + android:strokeLineJoin="miter" + android:strokeWidth="1.5" + android:strokeColor="#4A4B4A" + android:strokeLineCap="butt" /> diff --git a/app/src/main/res/drawable/ic_web_service_noti.xml b/app/src/main/res/drawable/ic_web_service_noti.xml index edb48575d..ab93b7528 100644 --- a/app/src/main/res/drawable/ic_web_service_noti.xml +++ b/app/src/main/res/drawable/ic_web_service_noti.xml @@ -1,10 +1,10 @@ + android:tint="#FFFFFF" + android:viewportHeight="24.0" + android:viewportWidth="24.0" + android:width="24dp" + xmlns:android="http://schemas.android.com/apk/res/android"> + android:fillColor="#FF000000" + android:pathData="M7,7.07L8.43,8.5c0.91,-0.91 2.18,-1.48 3.57,-1.48s2.66,0.57 3.57,1.48L17,7.07C15.72,5.79 13.95,5 12,5s-3.72,0.79 -5,2.07zM12,1C8.98,1 6.24,2.23 4.25,4.21l1.41,1.41C7.28,4 9.53,3 12,3s4.72,1 6.34,2.62l1.41,-1.41C17.76,2.23 15.02,1 12,1zM14.86,10.01L9.14,10C8.51,10 8,10.51 8,11.14v9.71c0,0.63 0.51,1.14 1.14,1.14h5.71c0.63,0 1.14,-0.51 1.14,-1.14v-9.71c0.01,-0.63 -0.5,-1.13 -1.13,-1.13zM15,20L9,20v-8h6v8z" /> diff --git a/app/src/main/res/drawable/ic_web_service_phone.xml b/app/src/main/res/drawable/ic_web_service_phone.xml index 4c8c83a40..f48dd2c8d 100644 --- a/app/src/main/res/drawable/ic_web_service_phone.xml +++ b/app/src/main/res/drawable/ic_web_service_phone.xml @@ -1,17 +1,17 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#FFFFFF" + android:pathData="M14.604,8.901H9.206c-1.046,0-1.898,0.909-1.898,2.025v8.885c0,1.117,0.853,2.024,1.898,2.024h5.397 c1.048,0,1.898-0.908,1.898-2.024v-8.885C16.502,9.81,15.651,8.901,14.604,8.901z M14.99,19.812c0,0.278-0.176,0.513-0.387,0.513 H9.206c-0.21,0-0.388-0.235-0.388-0.513v-8.885c0-0.278,0.178-0.513,0.388-0.513h5.397c0.211,0,0.387,0.235,0.387,0.513V19.812z" /> + android:fillColor="#FFFFFF" + android:pathData="M11.997,1.836c-2.017,0-3.953,0.409-5.604,1.181c0,0,0,0-0.001,0C6.186,3.114,5.98,3.216,5.79,3.323 l0.739,1.318c0.158-0.089,0.33-0.174,0.502-0.253L6.93,4.169l0.102,0.218c1.453-0.68,3.17-1.039,4.966-1.04 c1.999,0,3.946,0.461,5.481,1.298l0.723-1.327C16.424,2.349,14.278,1.836,11.997,1.836z" /> + android:fillColor="#FFFFFF" + android:pathData="M8.621,5.621l0.723,1.328C9.426,6.906,9.508,6.864,9.59,6.824c1.484-0.691,3.654-0.642,5.053,0.123 l0.727-1.327c-1.824-0.996-4.496-1.062-6.418-0.166l0.314,0.674l-0.32-0.671C8.838,5.508,8.729,5.563,8.621,5.621z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/image_welcome.xml b/app/src/main/res/drawable/image_welcome.xml index 4f5b613b8..d9d1c13a9 100644 --- a/app/src/main/res/drawable/image_welcome.xml +++ b/app/src/main/res/drawable/image_welcome.xml @@ -1,75 +1,75 @@ + android:width="680.311dp" + android:height="1360.631dp" + android:viewportWidth="680.311" + android:viewportHeight="1360.631"> + android:strokeColor="#82A6F5" + android:strokeWidth="10" + android:strokeMiterLimit="10" + android:pathData="M 225.539 182.693 L 225.539 407.308" /> + android:fillColor="#82A6F5" + android:pathData="M282,212.126c0.481,0.289,0.674,0.578,0.674,0.771c0,0.191-0.191,0.48-0.576,0.674l-2.407,1.444v45.431 c0,7.315,0.192,15.497,0.385,18.865v0.674c0,1.348-0.385,1.731-2.406,2.599c-0.865,0.386-1.348,0.578-1.829,0.578 c-0.674,0-0.77-0.578-0.77-2.021v-1.06c0.193-5.679,0.289-14.341,0.289-19.828v-38.501c0-3.945-0.193-10.49-0.385-14.053 L282,212.126z M281.229,194.32c9.433,4.235,12.513,7.315,13.09,9.433c0.097,0.289,0.097,0.675,0.097,1.06 c0,2.214-1.443,5.005-3.369,5.005c-1.251,0-1.731-0.771-2.214-3.369c-0.385-2.021-2.502-5.583-8.181-11.261L281.229,194.32z M336.672,251.302c0,8.759,0.48,10.684,2.406,11.646c0.481,0.289,0.674,0.481,0.674,0.962c0,0.192,0,0.385-0.097,0.674 c-1.54,4.429-3.369,5.294-10.105,5.294c-12.031,0-14.149-0.865-14.149-6.256v-19.924h-7.219 c0.097,18.577-8.855,26.277-24.642,31.956l-0.385-1.347c15.785-8.566,20.117-15.979,20.694-30.608h-6.545v3.272 c0,0.962-0.192,1.348-1.637,2.021c-1.059,0.481-1.829,0.771-2.214,0.771c-0.577,0-0.77-0.481-0.77-1.251v-0.866 c0.192-2.6,0.289-4.62,0.289-9.048v-8.663c0-1.829-0.097-5.486-0.289-7.894l5.102,3.946h16.748 c3.272-5.968,5.679-10.78,8.181-17.614l5.68,2.6c0.385,0.192,0.577,0.385,0.577,0.577c0,0.289-0.192,0.481-0.673,0.675 c-2.118,0.962-2.407,1.154-11.743,13.764h9.048l2.502-3.465l5.39,3.85c0.386,0.289,0.578,0.481,0.578,0.771 s-2.214,1.732-2.694,2.021v7.412c0,3.08,0,5.102,0.289,7.796v0.289c0,1.349-3.851,2.695-4.14,2.695 c-0.577,0-0.577-0.385-0.577-3.658h-7.123v20.117c0,1.731,0.771,2.406,8.278,2.406c5.679,0,6.545-0.866,7.123-14.919H336.672z M297.593,209.335c8.566,4.717,10.78,6.738,10.78,9.723c0,2.405-2.021,4.042-3.08,4.042c-1.251,0-1.829-1.06-2.214-4.14 c-0.289-2.118-1.636-4.332-6.16-8.663L297.593,209.335z M326.95,241.58v-13.475h-29.646v13.475H326.95z M352.072,201.731 c0.385,0.385,0.674,0.674,0.674,0.867c0,0.289-0.289,0.48-0.771,0.77l-2.695,1.637v69.977c0,5.583-0.577,7.123-6.545,9.336 c-0.289,0.096-0.48,0.192-0.674,0.192c-0.385,0-0.674-0.289-0.771-0.866c-0.48-2.118-2.021-3.946-11.068-6.545l0.096-1.251 c5.391,1.059,8.855,1.54,10.973,1.54c3.081,0,3.563-0.964,3.563-2.792v-70.938h-35.421c-2.021,0-4.813,0.385-6.449,1.059 l-2.695-3.561c2.406,0.192,4.813,0.385,7.026,0.385h35.517l3.851-4.428L352.072,201.731z" /> + android:fillColor="#82A6F5" + android:pathData="M298.748,378.356c-8.47,7.219-13.283,11.743-16.555,15.688c-0.578,0.675-0.867,0.962-1.251,0.962 c-0.289,0-0.481-0.191-0.771-0.576l-3.85-4.813c2.695-1.155,4.716-3.85,4.716-6.063v-37.25l-6.834,0.385 c-2.599,0.191-3.369,0.385-4.813,0.77l-2.889-2.983c2.889,0.096,4.429,0.096,6.643,0l7.7-0.386l2.888-3.85l5.967,4.813 c0.481,0.385,0.674,0.673,0.674,0.865c0,0.289-0.289,0.481-0.77,0.771l-4.14,2.213v35.902l12.417-7.7L298.748,378.356z M276.417,313.289c5.391,2.984,14.63,9.625,14.63,13.283c0,2.117-1.443,4.62-3.08,4.62c-1.059,0-1.539-0.578-2.31-2.984 c-0.866-2.694-4.235-8.952-9.914-13.957L276.417,313.289z M354.286,372.196c0.48,0.481,0.675,0.77,0.675,1.059 s-0.289,0.386-0.964,0.386h-25.796c-0.674,1.731-1.442,3.465-2.502,5.101c9.818,3.658,18.866,9.145,21.753,12.224 c1.349,1.444,1.828,3.08,1.828,4.524c0,1.925-0.866,3.465-2.021,3.465c-0.867,0-1.638-0.48-4.235-4.813 c-1.733-2.888-8.854-9.625-18.288-13.957c-5.583,8.085-15.4,14.534-30.801,19.442l-0.674-1.251 c16.459-6.737,26.661-15.304,30.512-24.736h-23.967c-2.021,0-4.909,0.385-6.449,0.962l-2.695-3.465 c2.311,0.192,4.813,0.385,7.026,0.385h26.854c2.405-7.315,3.561-14.919,3.85-26.758l7.219,3.368 c0.481,0.289,0.771,0.481,0.771,0.771c0,0.193-0.192,0.48-0.675,0.771l-2.694,1.829c-0.481,5.68-2.021,14.054-4.043,20.021h14.535 l4.428-5.583L354.286,372.196z M356.885,341.78c0.577,0.578,0.962,0.866,0.962,1.059c0,0.097-0.385,0.097-1.154,0.289 c-5.391,1.155-7.797,2.889-14.053,10.203l-1.251-0.77l6.738-11.261h-45.239c-2.021,0-4.909,0.288-6.449,0.865l-2.695-3.369 c2.311,0.289,4.813,0.386,7.026,0.386h20.501v-12.417h-12.417c-2.021,0-4.909,0.385-6.449,0.962l-2.695-3.465 c2.311,0.192,4.813,0.385,7.027,0.385h14.534v-5.486c0-3.754-0.097-6.063-0.289-9.433l6.93,2.983 c0.771,0.289,1.155,0.577,1.155,0.963c0,0.288-0.289,0.577-0.866,1.059l-2.31,1.925v7.989h16.17l4.043-4.909l5.486,5.679 c0.385,0.481,0.576,0.771,0.576,0.962c0,0.289-0.287,0.386-0.865,0.386h-25.411v12.417h21.08l3.562-3.946L356.885,341.78z M299.999,356.314c6.642,2.118,11.936,4.813,13.667,7.219c0.481,0.577,0.674,1.347,0.674,2.021c0,1.828-1.154,3.562-2.405,3.562 c-0.866,0-1.349-0.385-2.117-1.925c-1.54-3.08-5.103-6.737-10.396-9.914L299.999,356.314z M305.87,343.897 c6.064,1.829,11.55,4.909,12.994,7.219c0.385,0.674,0.578,1.444,0.578,2.214c0,1.829-1.06,3.465-2.118,3.465 c-0.866,0-1.347-0.578-2.118-2.021c-1.442-2.695-4.042-6.256-9.816-9.818L305.87,343.897z" /> + android:fillColor="#82A6F5" + android:pathData="M454.938,335.997c0.252,0.216,0.36,0.396,0.36,0.54c0,0.181-0.182,0.288-0.54,0.288h-14.688v5.688 c0,1.943-0.61,2.34-2.987,3.42c-0.071,0.036-0.145,0.071-0.18,0.071c-0.107,0-0.217-0.107-0.252-0.287 c-0.396-1.297-1.62-1.979-4.464-2.771l0.108-0.468c2.123,0.54,3.563,0.756,4.463,0.756c1.368,0,1.691-0.468,1.691-1.188v-5.219 h-12.419c-0.756,0-1.8,0.145-2.412,0.396l-1.008-1.332c0.9,0.071,1.8,0.144,2.628,0.144h13.211c0-1.188-0.036-2.556-0.071-3.204 l2.122,0.973l6.877-3.563h-18.286c-0.757,0-1.801,0.145-2.412,0.396l-1.008-1.332c0.899,0.071,1.8,0.144,2.628,0.144h19.582 l1.8-1.152l1.583,2.232c0.145,0.216,0.217,0.396,0.217,0.468c0,0.108-0.072,0.145-0.217,0.145c-0.107,0-0.539-0.036-0.647-0.036 c-1.728,0-4.787,1.116-10.547,3.671v1.26h10.728l1.619-2.231L454.938,335.997z M454.723,317.063 c0.252,0.216,0.359,0.396,0.359,0.54c0,0.144-0.181,0.252-0.504,0.252H426.43c-0.756,0-1.799,0.144-2.411,0.396l-1.008-1.332 c0.898,0.072,1.8,0.145,2.628,0.145h25.196l1.512-2.087L454.723,317.063z M449.359,320.699c0.216,0.145,0.324,0.216,0.324,0.36 c0,0.071-0.108,0.18-0.288,0.323l-0.937,0.685v1.872c0,1.224,0.035,1.979,0.107,2.879v0.144c0,0.612-1.151,0.9-1.476,0.9 c-0.325,0-0.324-0.108-0.324-1.296h-15.334c0,1.224,0,1.368-0.685,1.62c-0.359,0.144-0.611,0.216-0.792,0.216 c-0.252,0-0.323-0.145-0.323-0.54v-0.288c0.071-0.647,0.107-1.656,0.107-2.879v-2.7c0-0.899-0.036-1.908-0.107-2.592l1.979,1.332 h14.578l0.972-1.44L449.359,320.699z M446.768,325.774v-4.248h-15.334v4.248H446.768z M436.329,311.952 c3.349,1.152,4.355,2.052,4.355,3.384c0,0.9-0.504,1.62-1.08,1.62c-0.432,0-0.612-0.144-0.864-0.936 c-0.322-1.008-0.972-2.16-2.663-3.671L436.329,311.952z" /> + android:fillColor="#82A6F5" + android:pathData="M455.084,386.108c-1.872,0.18-2.593,0.504-3.276,1.439c-0.216,0.288-0.396,0.433-0.611,0.433 c-0.145,0-8.026-2.124-12.419-5.111c-4.031,3.023-9.719,4.896-15.838,5.867l-0.144-0.576c5.687-1.404,11.051-3.383,14.722-6.263 c-2.231-1.872-3.995-4.535-5.399-7.883c-1.332,0-1.69,0-2.734,0.288l-1.368-1.152c0.973,0.072,1.691,0.072,2.412,0.072h12.777 l1.188-1.152l2.268,1.764c0.252,0.181,0.36,0.324,0.36,0.396c0,0.107-0.145,0.18-0.504,0.288c-1.08,0.324-1.296,0.468-2.376,2.124 c-1.729,2.7-2.592,3.888-4.104,5.22c4.284,2.591,9.468,3.527,15.047,3.779V386.108L455.084,386.108z M454.723,368.867 c0.18,0.145,0.252,0.252,0.252,0.324c0,0.107-0.18,0.107-0.576,0.144c-1.655,0.108-3.022,1.584-4.967,3.672l-0.54-0.252 l2.556-3.995h-24.549c-0.252,2.771-0.685,3.995-1.62,4.606c-0.359,0.252-0.72,0.324-1.044,0.324c-0.504,0-1.116-0.252-1.116-0.937 c0-0.396,0.252-0.863,0.9-1.296c0.864-0.576,2.088-2.268,2.447-4.788l0.575,0.108c-0.035,0.432-0.035,0.828-0.071,1.188h15.37 c1.729-2.52,3.42-5.398,4.644-7.774l1.944,1.26c0.216,0.145,0.323,0.216,0.323,0.324s-0.253,0.216-0.827,0.396 c-0.324,0.108-0.828,0.612-1.548,1.513c-0.828,1.008-2.484,2.916-3.744,4.282h8.026l1.225-1.188L454.723,368.867z M450.763,358.32 c0.181,0.216,0.252,0.36,0.252,0.468c0,0.072-0.035,0.108-0.145,0.108c-0.108,0-0.252-0.036-0.468-0.108 c-0.359-0.107-1.044-0.252-1.728-0.252c-0.146,0-0.288,0.036-0.434,0.036c-5.614,0.54-14.47,1.08-22.893,1.332l0.036-0.504 c12.813-1.188,20.661-2.016,23.828-3.061L450.763,358.32z M429.635,361.344c0.646,0.359,4.392,2.411,4.392,4.139 c0,0.828-0.647,1.404-1.152,1.404c-0.322,0-0.72-0.324-0.826-0.937c-0.218-1.224-1.116-2.88-2.7-4.248L429.635,361.344z M432.945,374.014c1.548,2.986,3.601,5.326,5.688,6.946c2.016-1.836,3.384-3.852,4.787-6.946H432.945z M437.229,360.696 c2.736,1.656,3.708,2.988,3.815,3.6c0.035,0.145,0.035,0.252,0.035,0.396c0,1.044-0.898,1.62-1.366,1.62 c-0.434,0-0.576-0.288-0.757-1.548c-0.145-0.973-0.539-2.053-1.979-3.744L437.229,360.696z" /> + android:fillColor="#82A6F5" + android:pathData="M454.866,414.658c0.182,0.18,0.252,0.288,0.252,0.396c0,0.107-0.106,0.144-0.358,0.144h-28.868 c-0.721,0-1.765,0.145-2.304,0.36l-0.974-1.296c0.864,0.107,1.729,0.144,2.521,0.144h12.85v-4.284h-8.025 c-0.721,0-1.765,0.145-2.305,0.36l-0.973-1.295c0.828,0.107,1.729,0.144,2.521,0.144h8.782v-4.643h-9.719 c-0.756,0-1.836,0.144-2.411,0.359l-1.008-1.296c0.863,0.072,1.8,0.145,2.627,0.145h14.398c1.439-2.052,2.52-3.853,3.238-5.255 l1.98,1.296c0.216,0.144,0.324,0.252,0.324,0.324c0,0.107-0.146,0.18-0.396,0.252c-0.898,0.216-2.088,1.044-4.464,3.384h7.271 l1.225-1.765l2.34,2.017c0.18,0.18,0.288,0.288,0.288,0.396c0,0.108-0.145,0.145-0.433,0.145h-13.533v4.643h7.811l1.26-1.764 l2.017,1.979c0.181,0.181,0.288,0.324,0.288,0.396c0,0.144-0.145,0.18-0.396,0.18h-10.979v4.284h11.626l1.439-1.872 L454.866,414.658z M453.103,420.489c0.181,0.18,0.288,0.288,0.288,0.396c0,0.107-0.145,0.144-0.433,0.144h-14.541 c-1.729,5.579-5.651,8.963-15.228,11.123l-0.144-0.432c7.811-2.916,11.878-5.003,13.605-10.69h-8.963 c-0.721,0-1.765,0.144-2.304,0.36l-0.974-1.296c0.828,0.107,1.729,0.144,2.521,0.144h9.935c0.323-1.404,0.575-3.023,0.685-4.896 l2.412,1.224c0.18,0.107,0.286,0.216,0.286,0.324c0,0.071-0.07,0.18-0.252,0.252c-0.756,0.359-0.826,0.504-0.898,1.008 c-0.145,0.72-0.288,1.404-0.468,2.088h11.086l1.225-1.692L453.103,420.489z M431.073,398.784c2.16,0.432,4.032,1.188,4.788,2.196 c0.216,0.288,0.288,0.647,0.288,1.008c0,0.792-0.433,1.583-0.937,1.583c-0.324,0-0.576-0.108-0.863-0.972 c-0.288-0.9-1.692-2.593-3.456-3.492L431.073,398.784z M455.406,429.596c-1.512-0.072-2.556,0.432-3.312,1.548 c-0.107,0.18-0.216,0.252-0.359,0.252c-0.072,0-0.145-0.036-0.217-0.072c-5.327-2.124-9.034-5.076-11.626-10.295h0.684 c4.248,6.191,8.928,7.739,14.83,8.171V429.596L455.406,429.596z" /> + android:fillColor="#82A6F5" + android:pathData="M436.365,450.048c0.216,0.107,0.323,0.216,0.323,0.323c0,0.108-0.107,0.181-0.359,0.324l-1.115,0.576 c-0.359,5.759-1.296,10.475-3.023,14.074c2.88,1.728,4.355,3.06,4.355,4.68c0,1.008-0.612,1.404-0.973,1.404 c-0.288,0-0.54-0.252-0.937-0.937c-0.791-1.403-1.765-2.664-3.131-3.852c-2.053,3.456-4.824,6.119-9.287,8.351l-0.252-0.396 c3.814-2.448,6.623-5.507,8.387-8.927c-1.439-1.08-3.203-2.124-5.399-3.24c0.938-3.744,1.836-7.848,2.521-11.482l-1.835,0.072 c-0.756,0.036-1.8,0.288-2.376,0.576l-1.116-1.26c0.36,0,2.196-0.036,2.628-0.036l2.844-0.108c0.685-3.563,1.151-6.587,1.296-8.314 l2.483,1.512c0.145,0.072,0.216,0.144,0.216,0.252c0,0.072-0.071,0.144-0.18,0.216l-0.9,0.612c-0.396,1.8-0.827,3.672-1.295,5.688 l3.743-0.144l1.224-1.477L436.365,450.048z M429.058,450.911c-0.756,3.349-1.619,7.092-2.663,11.52 c1.655,0.684,3.167,1.403,4.463,2.124c1.477-3.348,2.34-8.027,2.556-13.858L429.058,450.911z M455.118,458.255 c0.36,0.323,0.504,0.54,0.504,0.684c0,0.18-0.216,0.252-0.646,0.252h-8.783v12.203c0,2.124-0.144,2.304-2.699,3.815 c-0.071,0.035-0.145,0.071-0.216,0.071c-0.107,0-0.216-0.107-0.252-0.288c-0.252-1.26-1.044-1.62-4.536-2.664l0.108-0.504 c2.16,0.396,3.563,0.612,4.428,0.612c1.403,0,1.477-0.576,1.477-1.872V459.19h-5.509c-0.756,0-1.8,0.144-2.411,0.396l-1.008-1.332 c0.899,0.071,1.8,0.144,2.628,0.144h6.3v-2.664c0-1.296-0.036-3.131-0.072-3.887l1.764,0.936l4.032-6.371h-9.791 c-0.756,0-1.8,0.145-2.412,0.396l-1.008-1.332c0.899,0.072,1.8,0.144,2.628,0.144h10.511l1.26-1.512l2.195,2.124 c0.181,0.18,0.252,0.288,0.252,0.396c0,0.144-0.144,0.18-0.432,0.216c-1.188,0.107-2.195,0.72-6.769,6.19 c0.182,0.072,0.612,0.324,0.612,0.433c0,0.107-0.108,0.18-1.08,0.684v4.248h5.508l1.513-2.016L455.118,458.255z" /> + android:fillColor="#82A6F5" + android:pathData="M435.645,489.288c0.181,0.145,0.288,0.217,0.288,0.324c0,0.072-0.107,0.181-0.288,0.288l-1.188,0.828 v15.046c0,2.736,0.036,4.067,0.108,5.219v0.216c0,0.757-1.512,1.477-1.548,1.477c-0.146,0-0.181-0.252-0.181-0.72v-1.656h-6.911 v3.06c0,0.396-0.071,0.469-0.756,0.9c-0.359,0.216-0.575,0.36-0.721,0.36c-0.216,0-0.252-0.253-0.252-0.828v-0.36 c0.072-2.232,0.108-4.679,0.108-7.523v-14.325c0-1.8-0.036-2.809-0.108-4.032l2.16,1.584h6.119l0.936-1.296L435.645,489.288z M432.838,498.755v-8.819h-6.911v8.819H432.838z M432.838,509.517v-9.971h-6.911v9.971H432.838z M455.19,494.399 c0.18,0.18,0.288,0.324,0.288,0.396c0,0.107-0.145,0.144-0.468,0.144h-5.508v19.833c0,2.339-0.036,2.483-2.735,3.635 c-0.145,0.036-0.216,0.072-0.324,0.072c-0.144,0-0.216-0.072-0.252-0.288c-0.288-1.332-0.972-1.944-5.219-3.06l0.106-0.576 c2.376,0.504,3.96,0.756,4.969,0.756c1.476,0,1.8-0.468,1.8-1.116v-19.257H439.1c-0.647,0-1.512,0.108-2.124,0.252l-1.296-1.188 c0.899,0.107,1.691,0.144,2.628,0.144h9.539v-3.814c0-2.988,0-3.996-0.072-5.221l2.556,1.296c0.253,0.145,0.396,0.216,0.396,0.324 s-0.146,0.216-0.396,0.36l-0.827,0.468v6.587h2.268l1.296-2.016L455.19,494.399z M438.849,498.646 c2.699,2.087,4.464,3.671,4.464,5.399c0,0.899-0.54,1.764-1.261,1.764c-0.468,0-0.685-0.252-0.973-1.692 c-0.287-1.512-0.972-3.275-2.592-5.184L438.849,498.646z" /> + android:fillColor="#82A6F5" + android:pathData="M453.535,550.342c0,4.176,0.396,5.398,1.477,5.976c0.18,0.108,0.288,0.18,0.288,0.324 c0,0.072-0.036,0.144-0.072,0.252c-1.044,2.16-1.584,2.484-3.779,2.736c-1.439,0.144-3.312,0.252-4.858,0.252 c-5.04,0-5.688-0.721-5.688-3.313V543.61h-5.508c-0.144,9.646-1.26,13.786-12.13,18.034l-0.252-0.468 c8.963-4.716,10.689-7.415,10.689-17.566h-7.307c-0.756,0-1.8,0.145-2.412,0.396l-1.008-1.332c0.898,0.071,1.8,0.144,2.628,0.144 h12.599v-9.395c0-1.477-0.071-3.924-0.145-5.256l2.628,1.477c0.216,0.107,0.324,0.252,0.324,0.432c0,0.108-0.072,0.252-0.218,0.36 l-0.898,0.792v11.59h1.584c1.8-2.412,5.075-7.667,6.659-10.941l2.34,1.764c0.106,0.107,0.18,0.18,0.18,0.252 c0,0.107-0.107,0.18-0.324,0.216c-0.684,0.144-1.188,0.54-1.584,1.008l-6.335,7.703h8.388l1.62-2.196l2.376,2.196 c0.252,0.216,0.358,0.396,0.358,0.54c0,0.145-0.18,0.252-0.575,0.252h-11.986v12.778c0,1.728,1.08,1.872,2.808,1.872 c1.44,0,4.212-0.108,5.185-0.216c1.691-0.217,2.376-0.685,2.376-7.703L453.535,550.342L453.535,550.342z M427.978,532.271 c3.492,2.088,5.939,4.716,5.939,5.651c0,1.403-0.433,2.411-1.225,2.411c-0.359,0-0.612-0.252-0.864-1.188 c-0.396-1.44-1.942-4.68-4.139-6.443L427.978,532.271z" /> + android:fillColor="#82A6F5" + android:pathData="M336.627,1009.641h1.169v0.174h-1.169V1009.641z" /> + android:fillColor="#82A6F5" + android:pathData="M323.57,1077.314l0.672,0.24c-1.651-1.31-5.873-4.357-11.369-6.172c-6.539-2.156-16.283-2.948-25.559,5.512 c-0.105,0.098-0.236,0.131-0.383,0.092c-2.219-0.543-11.82-24.271-20.374-46.504c-0.464,0.313-0.917,0.67-1.389,1.039 c-0.831,0.659-1.731,1.363-2.839,1.929c10.691,26.719,21.417,52.866,22.988,54.386 C295.088,1067.123,308.29,1071.844,323.57,1077.314z" /> + android:fillColor="#82A6F5" + android:pathData="M387.494,1076.688c-0.146,0.031-0.278,0-0.383-0.098c-9.277-8.462-19.022-7.668-25.567-5.515 c-5.47,1.803-9.669,4.826-11.339,6.144l0.064-0.025c14.236-5.228,28.957-10.629,38.836,10.312 c1.525-1.474,11.693-26.187,22.068-52.094c-0.115-0.052-0.228-0.097-0.33-0.126c-1.754-0.471-3.011-1.342-4.072-2.237 C398.51,1054.402,389.617,1076.162,387.494,1076.688z" /> + android:fillColor="#82A6F5" + android:pathData="M335.92,1009.988l-0.053-0.061c-3.911-4.523-39.396-43.937-80.371-34.611 c-0.289,0.447,1.828,4.865,4.064,8.907l7.104-0.201l-3.673-6.462l0.247-0.039c23.855-3.857,63.73,25.469,71.48,31.385l-0.19,0.271 c0.216,0.123,0.427,0.246,0.633,0.37l0.344,0.202l-0.382,0.112c-0.129,0.037-0.264,0.225-0.264,0.494l2.018,66.188 c0,0.305,0.166,0.524,0.315,0.524h0.363c0.146,0,0.314-0.221,0.314-0.52l2.019-66.123c0-0.254-0.137-0.439-0.318-0.439h-0.811 l0.522-0.321c8.939-5.455,27.154-11.722,46.41-15.962c15.455-3.405,33.166-5.711,36.504-1.967l0.066,0.077l-0.031,0.098 c-0.393,1.073-3.553,9.711-7.83,21.094c1.662,0.418,3.478,0.954,5.074,1.563c4.443-11.213,8.469-21.466,11.311-28.748 c-43.979-4.454-80.327,16.482-90.432,23.016l-0.201-0.284c10.863-8.298,48.09-35.085,71.033-31.375l0.246,0.039l-3.674,6.453 l7.104,0.186c2.24-4.024,4.354-8.428,4.051-8.887c-40.827-9.281-76.438,30.404-80.362,34.959l-0.054,0.061h-0.317v-0.174h-0.384 h-1.169h-0.382v0.174H335.92L335.92,1009.988z" /> + android:fillColor="#82A6F5" + android:pathData="M252.195,992.182l-0.036-0.097l0.07-0.077c3.323-3.729,21.045-1.468,36.524,1.891 c18.602,4.035,36.266,9.92,45.519,15.133c-10.467-6.72-46.691-27.325-90.633-22.875c2.65,6.793,6.331,16.165,10.419,26.495 c1.791-0.464,3.706-0.826,5.328-1.065C255.435,1001.046,252.567,993.201,252.195,992.182z" /> + android:fillColor="#82A6F5" + android:pathData="M248.686,1016.834c-0.151,0.89,0.351,1.643,0.664,2.013c0.76,0.898,1.789,1.256,2.124,1.045 c2.864-1.798,7.438-3.373,13.588-4.676c0.74-0.158,2.808-0.822,2.62-1.787c-0.25-1.268-2.175-1.531-3.745-1.531 c-0.503,0-0.939,0.027-1.201,0.044c-0.102,0.007-0.18,0.011-0.23,0.013c-2.323,0.082-8.587,1.109-11.841,2.552 C249.854,1014.862,248.837,1015.934,248.686,1016.834z" /> + android:fillColor="#82A6F5" + android:pathData="M250.244,1023.291c0.381,1.347,1.087,2.028,2.096,2.028c0.705,0,1.309-0.335,1.478-0.437l0.156-0.097 c1.4-0.856,5.668-3.471,12.262-4.232c2.932-0.339,6.361-1.8,6.225-3.106c-0.045-0.441-0.185-1.783-3.015-1.783 c-1.49,0-3.229,0.354-4.731,0.698c-3.586,0.825-9.587,2.663-12.804,4.087C251.168,1020.777,249.874,1021.985,250.244,1023.291z" /> + android:fillColor="#82A6F5" + android:pathData="M268.087,1021.346c-0.074,0.01-0.14,0.016-0.189,0.022c-2.99,0.278-8.495,1.687-13.512,4.119 c-0.778,0.378-1.654,1.358-1.712,2.273c-0.062,1.046,0.34,1.709,0.688,2.078c0.526,0.559,1.183,0.757,1.623,0.757 c0.143,0,0.27-0.021,0.377-0.06c2.138-0.757,3.664-1.619,5.139-2.458c1.357-0.766,2.759-1.563,4.587-2.229 c0.065-0.021,0.231-0.068,0.47-0.131c4.775-1.277,5.376-2.258,5.31-2.729c-0.166-1.162-0.803-1.703-2.009-1.703 C268.558,1021.287,268.285,1021.32,268.087,1021.346z" /> + android:fillColor="#82A6F5" + android:pathData="M264.754,1027.191l-0.093,0.032c-2.167,0.767-3.479,1.604-6.098,3.271c-0.455,0.289-0.945,0.604-1.485,0.944 c-0.376,0.237-0.594,0.497-0.65,0.77c-0.055,0.268,0.036,0.571,0.271,0.916c0.609,0.881,1.08,0.979,1.38,0.979l0,0 c0.313,0,0.633-0.129,0.943-0.252c0.228-0.092,0.463-0.188,0.7-0.234c2.219-0.429,3.641-1.552,5.018-2.64 c0.624-0.493,1.212-0.958,1.862-1.354c0.039-0.021,0.089-0.053,0.15-0.086c0.451-0.26,1.652-0.94,1.813-1.784 c0.064-0.339-0.042-0.677-0.328-1.032c-0.099-0.124-0.344-0.192-0.69-0.192C266.588,1026.529,265.207,1027.029,264.754,1027.191z" /> + android:fillColor="#82A6F5" + android:pathData="M409.591,1012.775c-0.422-0.059-1.201-0.166-2.06-0.166c-1.201,0-2.692,0.225-2.985,1.289 c-0.261,0.949,1.756,1.763,2.483,1.973c6.041,1.744,10.486,3.645,13.217,5.645c0.07,0.056,0.183,0.083,0.324,0.083 c0.492,0,1.32-0.365,1.953-1.063c0.527-0.578,0.779-1.239,0.721-1.865c-0.086-0.908-1.024-2.052-1.805-2.468 c-3.143-1.674-9.311-3.149-11.625-3.397C409.766,1012.798,409.688,1012.788,409.591,1012.775z" /> + android:fillColor="#82A6F5" + android:pathData="M419.768,1022.044c-3.107-1.652-8.957-3.922-12.478-5.003c-1.706-0.522-3.661-1.059-5.237-1.059 c-2.047,0-2.441,0.9-2.566,1.58c-0.227,1.293,3.086,2.999,5.988,3.548c6.516,1.237,10.582,4.149,11.92,5.106l0.15,0.11 c0.182,0.126,0.829,0.545,1.596,0.545c0.93,0,1.631-0.63,2.086-1.879C421.688,1023.721,420.486,1022.425,419.768,1022.044z" /> + android:fillColor="#82A6F5" + android:pathData="M416.934,1026.889c-4.83-2.79-10.217-4.592-13.18-5.086c-0.05-0.01-0.111-0.021-0.185-0.035 c-0.25-0.051-0.623-0.125-1.018-0.125c-1.033,0-1.646,0.512-1.877,1.563c-0.099,0.464,0.428,1.486,5.104,3.104 c0.232,0.082,0.394,0.137,0.453,0.166c1.777,0.799,3.117,1.691,4.416,2.559c1.408,0.941,2.869,1.912,4.947,2.818 c0.137,0.059,0.303,0.09,0.487,0.09c0.98,0,2.369-0.824,2.394-2.662C418.486,1028.359,417.684,1027.32,416.934,1026.889z" /> + android:fillColor="#82A6F5" + android:pathData="M406.559,1027.88l-0.092-0.039c-1.291-0.578-2.271-0.869-2.902-0.869c-0.182,0-0.422,0.024-0.535,0.147 c-0.309,0.338-0.44,0.666-0.401,1.008c0.1,0.851,1.25,1.619,1.678,1.908c0.059,0.039,0.11,0.071,0.146,0.099 c0.619,0.44,1.172,0.946,1.761,1.485c1.295,1.183,2.633,2.406,4.813,2.993c0.234,0.065,0.461,0.175,0.682,0.282 c0.324,0.16,0.662,0.328,1,0.328c0.441,0,0.89-0.292,1.369-0.887c0.259-0.324,0.371-0.626,0.338-0.894 c-0.038-0.274-0.235-0.551-0.594-0.811c-0.514-0.381-0.977-0.729-1.406-1.046C409.923,1029.73,408.669,1028.796,406.559,1027.88z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_common_bg.xml b/app/src/main/res/drawable/selector_common_bg.xml index 2dc834803..2174a7333 100644 --- a/app/src/main/res/drawable/selector_common_bg.xml +++ b/app/src/main/res/drawable/selector_common_bg.xml @@ -1,10 +1,7 @@ - - + + - + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_fillet_btn_bg.xml b/app/src/main/res/drawable/selector_fillet_btn_bg.xml index 817bb3499..431a579d3 100644 --- a/app/src/main/res/drawable/selector_fillet_btn_bg.xml +++ b/app/src/main/res/drawable/selector_fillet_btn_bg.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_tv_black.xml b/app/src/main/res/drawable/selector_tv_black.xml index eab98a451..fbbeed245 100644 --- a/app/src/main/res/drawable/selector_tv_black.xml +++ b/app/src/main/res/drawable/selector_tv_black.xml @@ -1,6 +1,6 @@ - - - + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_card_view.xml b/app/src/main/res/drawable/shape_card_view.xml index 20d4d7656..d49a2d5c1 100644 --- a/app/src/main/res/drawable/shape_card_view.xml +++ b/app/src/main/res/drawable/shape_card_view.xml @@ -1,6 +1,6 @@ - - + android:shape="rectangle"> + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_fillet_btn.xml b/app/src/main/res/drawable/shape_fillet_btn.xml index 5a29bf37e..10dac7541 100644 --- a/app/src/main/res/drawable/shape_fillet_btn.xml +++ b/app/src/main/res/drawable/shape_fillet_btn.xml @@ -1,6 +1,6 @@ - - + android:shape="rectangle"> + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_fillet_btn_press.xml b/app/src/main/res/drawable/shape_fillet_btn_press.xml index 417341636..b569081a4 100644 --- a/app/src/main/res/drawable/shape_fillet_btn_press.xml +++ b/app/src/main/res/drawable/shape_fillet_btn_press.xml @@ -1,6 +1,6 @@ - - + android:shape="rectangle"> + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_pop_checkaddshelf_bg.xml b/app/src/main/res/drawable/shape_pop_checkaddshelf_bg.xml index 951803c38..215f52826 100644 --- a/app/src/main/res/drawable/shape_pop_checkaddshelf_bg.xml +++ b/app/src/main/res/drawable/shape_pop_checkaddshelf_bg.xml @@ -1,6 +1,6 @@ - - + android:shape="rectangle"> + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_radius_1dp.xml b/app/src/main/res/drawable/shape_radius_1dp.xml index ffcc8c82c..f032285f7 100644 --- a/app/src/main/res/drawable/shape_radius_1dp.xml +++ b/app/src/main/res/drawable/shape_radius_1dp.xml @@ -1,7 +1,8 @@ - - - + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_space_divider.xml b/app/src/main/res/drawable/shape_space_divider.xml index 9a699b89d..954360298 100644 --- a/app/src/main/res/drawable/shape_space_divider.xml +++ b/app/src/main/res/drawable/shape_space_divider.xml @@ -2,7 +2,7 @@ + android:width="8dp" + android:height="8dp" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_text_cursor.xml b/app/src/main/res/drawable/shape_text_cursor.xml index 721c358c6..71871e0e0 100644 --- a/app/src/main/res/drawable/shape_text_cursor.xml +++ b/app/src/main/res/drawable/shape_text_cursor.xml @@ -1,7 +1,7 @@ - - - + android:shape="rectangle"> + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/side_nav_bar.xml b/app/src/main/res/drawable/side_nav_bar.xml index a33798b60..6d81870b0 100644 --- a/app/src/main/res/drawable/side_nav_bar.xml +++ b/app/src/main/res/drawable/side_nav_bar.xml @@ -1,9 +1,9 @@ + android:shape="rectangle"> + android:angle="135" + android:centerColor="#009688" + android:endColor="#00695C" + android:startColor="#4DB6AC" + android:type="linear" /> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_about.xml b/app/src/main/res/layout/activity_about.xml index de5ac8e26..afb70931e 100644 --- a/app/src/main/res/layout/activity_about.xml +++ b/app/src/main/res/layout/activity_about.xml @@ -1,9 +1,8 @@ - + diff --git a/app/src/main/res/layout/activity_config.xml b/app/src/main/res/layout/activity_config.xml index 50249cbb7..f0312ee9c 100644 --- a/app/src/main/res/layout/activity_config.xml +++ b/app/src/main/res/layout/activity_config.xml @@ -1,22 +1,21 @@ - + + android:id="@+id/title_bar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:layout_constraintTop_toTopOf="parent" + app:title="设置" /> + android:id="@+id/configFrameLayout" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical" /> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 411c77428..7b31c6f36 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,26 +1,25 @@ - + + android:id="@+id/bottom_navigation_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:elevation="6dp" + android:background="@color/background" + app:labelVisibilityMode="labeled" + app:menu="@menu/activity_main_bnv" + app:layout_constraintBottom_toBottomOf="parent" /> + android:id="@+id/view_pager_main" + android:layout_width="match_parent" + android:layout_height="0dp" + app:layout_constraintBottom_toTopOf="@+id/bottom_navigation_view" + app:layout_constraintTop_toTopOf="parent" /> diff --git a/app/src/main/res/layout/activity_replace_rule.xml b/app/src/main/res/layout/activity_replace_rule.xml index c16af5b11..2d5f59c5e 100644 --- a/app/src/main/res/layout/activity_replace_rule.xml +++ b/app/src/main/res/layout/activity_replace_rule.xml @@ -1,30 +1,29 @@ - + + android:id="@+id/title_bar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:layout_constraintTop_toTopOf="parent" + app:title="@string/replace" /> + android:id="@+id/rv_replace_rule" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:paddingStart="16dp" + android:paddingEnd="16dp" + android:layout_marginBottom="8dp" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toBottomOf="@+id/title_bar" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintVertical_bias="0.0" /> diff --git a/app/src/main/res/layout/activity_search.xml b/app/src/main/res/layout/activity_search.xml index 33b3b9ddb..d5e31a0c7 100644 --- a/app/src/main/res/layout/activity_search.xml +++ b/app/src/main/res/layout/activity_search.xml @@ -1,29 +1,29 @@ - + + android:id="@+id/title_bar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:layout_constraintTop_toTopOf="parent" + app:title="搜索" /> + android:layout_width="match_parent" + android:layout_height="0dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintTop_toBottomOf="@id/title_bar"> + android:id="@+id/rv_search_list" + android:layout_width="match_parent" + android:layout_height="match_parent" /> diff --git a/app/src/main/res/layout/activity_source_edit.xml b/app/src/main/res/layout/activity_source_edit.xml index d8a9414b3..7724e61eb 100644 --- a/app/src/main/res/layout/activity_source_edit.xml +++ b/app/src/main/res/layout/activity_source_edit.xml @@ -1,66 +1,65 @@ - + + android:id="@+id/title_bar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:layout_constraintTop_toTopOf="parent" + app:title="书源编辑" /> + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="horizontal"> + android:id="@+id/cb_is_enable" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:checked="true" + android:text="@string/is_enable" /> + android:id="@+id/cb_is_enable_find" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:checked="true" + android:text="@string/find" /> + android:id="@+id/cb_is_audio" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:checked="false" + android:text="@string/audio" /> + android:layout_width="0dp" + android:layout_height="1dp" + android:layout_weight="1" /> + android:id="@+id/tv_edit_find" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:padding="3dp" + android:layout_marginLeft="5dp" + android:layout_marginRight="5dp" + android:textColor="@color/tv_text_default" + android:background="@drawable/selector_fillet_btn_bg" + android:text="@string/edit_find" /> + android:id="@+id/recycler_view" + android:layout_width="match_parent" + android:layout_height="match_parent" /> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_book_source.xml b/app/src/main/res/layout/fragment_book_source.xml index f60a278ac..70ed38626 100644 --- a/app/src/main/res/layout/fragment_book_source.xml +++ b/app/src/main/res/layout/fragment_book_source.xml @@ -1,21 +1,20 @@ - + + android:id="@+id/title_bar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:attachToActivity="false" + app:title="@string/book_source" /> + android:id="@+id/recycler_view" + android:layout_width="match_parent" + android:layout_height="match_parent" /> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_bookshelf.xml b/app/src/main/res/layout/fragment_bookshelf.xml index 771b58344..f687a76dd 100644 --- a/app/src/main/res/layout/fragment_bookshelf.xml +++ b/app/src/main/res/layout/fragment_bookshelf.xml @@ -1,16 +1,15 @@ - + + android:id="@+id/title_bar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:attachToActivity="false" + app:title="@string/bookshelf" /> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_find_book.xml b/app/src/main/res/layout/fragment_find_book.xml index bd902b84c..e7f667141 100644 --- a/app/src/main/res/layout/fragment_find_book.xml +++ b/app/src/main/res/layout/fragment_find_book.xml @@ -1,18 +1,17 @@ - + + android:id="@+id/title_bar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:attachToActivity="false" + app:layout_constraintTop_toTopOf="parent" + app:title="@string/find" /> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_my_config.xml b/app/src/main/res/layout/fragment_my_config.xml index 2a2d1f8d5..edf63b9f4 100644 --- a/app/src/main/res/layout/fragment_my_config.xml +++ b/app/src/main/res/layout/fragment_my_config.xml @@ -1,22 +1,21 @@ - + + android:id="@+id/title_bar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:attachToActivity="false" + app:title="我的" /> + android:id="@+id/pre_fragment" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_book_source.xml b/app/src/main/res/layout/item_book_source.xml index fe2b588ce..2b0c1450d 100644 --- a/app/src/main/res/layout/item_book_source.xml +++ b/app/src/main/res/layout/item_book_source.xml @@ -1,36 +1,36 @@ - + + android:id="@+id/cb_book_source" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:layout_weight="1" + android:singleLine="true" + android:text="" + android:textColor="@color/tv_text_default" /> + android:id="@+id/sw_enabled" + android:layout_width="wrap_content" + android:layout_height="wrap_content" /> + android:id="@+id/iv_more" + android:layout_width="24dp" + android:layout_height="24dp" + android:layout_gravity="center" + android:background="@drawable/bg_ib_pre_round" + android:layout_margin="6dp" + android:contentDescription="@string/to_top" + android:src="@drawable/ic_more_vert" + app:tint="@color/tv_text_default" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_bookshelf_list.xml b/app/src/main/res/layout/item_bookshelf_list.xml index 28a0c1e1b..03845fa18 100644 --- a/app/src/main/res/layout/item_bookshelf_list.xml +++ b/app/src/main/res/layout/item_bookshelf_list.xml @@ -1,176 +1,175 @@ - + + android:id="@+id/iv_cover" + android:layout_width="60dp" + android:layout_height="80dp" + android:layout_margin="8dp" + android:contentDescription="@string/img_cover" + android:scaleType="centerCrop" + android:src="@drawable/img_cover_default" + android:transitionName="img_cover" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintTop_toTopOf="parent" + tools:ignore="UnusedAttribute" /> + android:id="@+id/fl_has_new" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + app:layout_constraintRight_toRightOf="parent" + app:layout_constraintTop_toTopOf="@id/tv_name"> + android:id="@+id/bv_unread" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="right" + android:layout_margin="5dp" + android:includeFontPadding="false" + tools:ignore="RtlHardcoded" /> + android:id="@+id/rl_loading" + android:layout_width="26dp" + android:layout_height="26dp" + android:layout_gravity="right" + android:visibility="invisible" + app:loading_color="@color/colorAccent" + app:loading_width="2dp" + tools:ignore="RtlHardcoded" /> + android:id="@+id/tv_name" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginLeft="8dp" + android:layout_marginTop="8dp" + android:includeFontPadding="false" + android:paddingLeft="4dp" + android:singleLine="true" + android:text="@string/book_name" + android:textColor="@color/tv_text_default" + android:textSize="16sp" + app:layout_constraintBottom_toTopOf="@+id/tv_author" + app:layout_constraintLeft_toRightOf="@+id/iv_cover" + app:layout_constraintRight_toLeftOf="@id/fl_has_new" + app:layout_constraintTop_toTopOf="parent" + tools:ignore="RtlHardcoded,RtlSymmetry" /> + android:id="@+id/iv_author" + android:layout_width="@dimen/desc_icon_size" + android:layout_height="@dimen/desc_icon_size" + android:layout_marginLeft="8dp" + android:contentDescription="@string/author" + android:paddingStart="2dp" + android:paddingEnd="2dp" + android:src="@drawable/ic_author" + app:layout_constraintBottom_toBottomOf="@+id/tv_author" + app:layout_constraintLeft_toRightOf="@+id/iv_cover" + app:layout_constraintTop_toTopOf="@+id/tv_author" + app:tint="@color/tv_text_secondary" + tools:ignore="RtlHardcoded,RtlSymmetry" /> + android:id="@+id/tv_author" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:includeFontPadding="false" + android:maxLines="1" + android:paddingEnd="6dp" + android:text="@string/author" + android:textColor="@color/tv_text_secondary" + android:textSize="13sp" + app:layout_constraintBottom_toTopOf="@+id/tv_read" + app:layout_constraintLeft_toRightOf="@+id/iv_author" + app:layout_constraintRight_toLeftOf="@id/fl_has_new" + app:layout_constraintTop_toBottomOf="@+id/tv_name" + tools:ignore="RtlSymmetry" /> + android:id="@+id/iv_read" + android:layout_width="@dimen/desc_icon_size" + android:layout_height="@dimen/desc_icon_size" + android:layout_marginLeft="8dp" + android:contentDescription="@string/read_dur_progress" + android:paddingStart="2dp" + android:paddingEnd="2dp" + android:src="@drawable/ic_history" + app:layout_constraintBottom_toBottomOf="@+id/tv_read" + app:layout_constraintLeft_toRightOf="@+id/iv_cover" + app:layout_constraintTop_toTopOf="@+id/tv_read" + app:tint="@color/tv_text_secondary" + tools:ignore="RtlHardcoded,RtlSymmetry" /> + android:id="@+id/tv_read" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:includeFontPadding="false" + android:singleLine="true" + android:text="@string/read_dur_progress" + android:textColor="@color/tv_text_secondary" + android:textSize="13sp" + app:layout_constraintBottom_toTopOf="@id/tv_last" + app:layout_constraintLeft_toRightOf="@+id/iv_read" + app:layout_constraintRight_toLeftOf="@id/fl_has_new" + app:layout_constraintTop_toBottomOf="@+id/tv_author" /> + android:id="@+id/iv_last" + android:layout_width="@dimen/desc_icon_size" + android:layout_height="@dimen/desc_icon_size" + android:layout_marginLeft="8dp" + android:contentDescription="@string/book_search_last" + android:paddingStart="2dp" + android:paddingEnd="2dp" + android:src="@drawable/ic_book_last" + app:layout_constraintBottom_toBottomOf="@+id/tv_last" + app:layout_constraintLeft_toRightOf="@+id/iv_cover" + app:layout_constraintTop_toTopOf="@+id/tv_last" + app:tint="@color/tv_text_secondary" + tools:ignore="RtlHardcoded,RtlSymmetry" /> + android:id="@+id/tv_last" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginBottom="8dp" + android:singleLine="true" + android:text="@string/book_search_last" + android:textColor="@color/tv_text_secondary" + android:textSize="13sp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintLeft_toRightOf="@+id/iv_last" + app:layout_constraintRight_toLeftOf="@id/fl_has_new" + app:layout_constraintTop_toBottomOf="@+id/tv_read" /> + android:id="@+id/vw_select" + android:layout_width="match_parent" + android:layout_height="0dp" + android:visibility="gone" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" /> + android:layout_width="match_parent" + android:layout_height="0.5dp" + android:background="@color/btn_bg_press" + app:layout_constraintBottom_toBottomOf="parent" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_icon_preference.xml b/app/src/main/res/layout/item_icon_preference.xml index 421ec6423..b8231284c 100644 --- a/app/src/main/res/layout/item_icon_preference.xml +++ b/app/src/main/res/layout/item_icon_preference.xml @@ -1,32 +1,33 @@ - + + android:id="@+id/icon" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:adjustViewBounds="true" + android:contentDescription="ICON" + android:padding="6dip" + tools:ignore="HardcodedText" /> + android:id="@+id/label" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignParentEnd="true" + android:layout_toRightOf="@+id/icon" + android:checkMark="?android:attr/listChoiceIndicatorSingle" + android:ellipsize="marquee" + android:gravity="center_vertical" + android:minHeight="?android:attr/listPreferredItemHeight" + android:singleLine="true" + android:textAppearance="?android:attr/textAppearanceMedium" + android:textColor="?android:attr/textColorAlertDialogListItem" + android:textIsSelectable="false" + tools:ignore="RtlHardcoded" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_relace_rule.xml b/app/src/main/res/layout/item_relace_rule.xml index af08d245e..9e0466b92 100644 --- a/app/src/main/res/layout/item_relace_rule.xml +++ b/app/src/main/res/layout/item_relace_rule.xml @@ -1,79 +1,78 @@ - + + android:id="@+id/iv_edit" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:padding="8dp" + android:background="@drawable/bg_ib_pre_round" + android:contentDescription="@string/edit" + android:src="@drawable/ic_edit" + android:visibility="gone" + app:tint="@color/text_default" + app:layout_constraintEnd_toStartOf="@id/iv_delete" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + android:id="@+id/iv_delete" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:padding="8dp" + android:background="@drawable/bg_ib_pre_round" + android:contentDescription="@string/delete" + android:src="@drawable/ic_clear_all" + android:visibility="gone" + app:tint="@color/text_default" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + android:id="@+id/cb_selected" + android:text="" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingStart="8dp" + android:paddingTop="16dp" + android:paddingBottom="16dp" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toStartOf="@+id/tv_name" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" /> + android:id="@+id/tv_name" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:paddingTop="16dp" + android:paddingBottom="16dp" + android:textSize="16sp" + android:text="Item Name" + android:textColor="@color/text_default" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toEndOf="@id/cb_selected" + app:layout_constraintEnd_toStartOf="@id/swt_enabled" /> + android:id="@+id/swt_enabled" + android:name="@string/enable" + android:text="" + android:paddingStart="16dp" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@id/tv_name" + app:layout_constraintHorizontal_bias="1" />