Commit a574f00d authored by wanglei's avatar wanglei

...

parent 5c2b4c9a
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
android:usesCleartextTraffic="true" android:usesCleartextTraffic="true"
tools:targetApi="34"> tools:targetApi="34">
<activity <activity
android:name=".ui.activity.bookmark.BookmarkFolderAddActivity" android:name=".ui.activity.bookmark.BookmarkFolderEditActivity"
android:exported="false" /> android:exported="false" />
<activity <activity
android:name=".ui.activity.bookmark.BookmarkFolderActivity" android:name=".ui.activity.bookmark.BookmarkFolderActivity"
......
...@@ -2,6 +2,7 @@ package com.base.browserwhite.bean ...@@ -2,6 +2,7 @@ package com.base.browserwhite.bean
class BookmarkBean( class BookmarkBean(
var folderId: Long = folderRootId,
var folder: String = folderRoot, var folder: String = folderRoot,
var name: String = "", var name: String = "",
var url: String = "", var url: String = "",
...@@ -13,6 +14,7 @@ class BookmarkBean( ...@@ -13,6 +14,7 @@ class BookmarkBean(
companion object { companion object {
var folderRoot = "Root Directory" var folderRoot = "Root Directory"
var folderRootId = 0L
} }
} }
package com.base.browserwhite.bean package com.base.browserwhite.bean
abstract class SpBean(var id: Long = 0) { open class SpBean(var id: Long = 0) {
} }
\ No newline at end of file
package com.base.browserwhite.ui.activity.bookmark package com.base.browserwhite.ui.activity.bookmark
import android.annotation.SuppressLint
import android.content.Intent import android.content.Intent
import android.graphics.Color import android.graphics.Color
import android.view.View
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import com.base.browserwhite.bean.BookmarkBean import com.base.browserwhite.bean.BookmarkBean
import com.base.browserwhite.databinding.ActivityBookmarkBinding import com.base.browserwhite.databinding.ActivityBookmarkBinding
import com.base.browserwhite.ui.activity.BaseActivity import com.base.browserwhite.ui.activity.BaseActivity
import com.base.browserwhite.ui.activity.bookmark.BookmarkFolderActivity.Companion.selectFolder
import com.base.browserwhite.ui.views.BookmarkDialog.showBookmarkMoreDialog import com.base.browserwhite.ui.views.BookmarkDialog.showBookmarkMoreDialog
import com.base.browserwhite.ui.views.DialogViews.showDeleteTipDialog
import com.base.browserwhite.utils.BarUtils import com.base.browserwhite.utils.BarUtils
import com.base.browserwhite.utils.SpBeanUtils import com.base.browserwhite.utils.SpBeanUtils
import com.base.browserwhite.utils.SpBeanUtils.BOOKMARK_SP_KEY import com.base.browserwhite.utils.SpBeanUtils.BOOKMARK_SP_KEY
import com.base.browserwhite.utils.ToastUtils.toast
import com.google.gson.Gson import com.google.gson.Gson
class BookmarkActivity : BaseActivity<ActivityBookmarkBinding>() { class BookmarkActivity : BaseActivity<ActivityBookmarkBinding>() {
...@@ -33,18 +38,47 @@ class BookmarkActivity : BaseActivity<ActivityBookmarkBinding>() { ...@@ -33,18 +38,47 @@ class BookmarkActivity : BaseActivity<ActivityBookmarkBinding>() {
binding.root.updatePadding(top = BarUtils.getStatusBarHeight()) binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
bookmarkAdapter = BookmarkAdapter() bookmarkAdapter = BookmarkAdapter()
bookmarkAdapter.changeFolderAction = { folder -> bookmarkAdapter.changeFolderAction = { folderId ->
val list = bookmarkList.filter { it.folder == folder } val list = bookmarkList.filter { it.folderId == folderId }
bookmarkAdapter.submitList(list) bookmarkAdapter.submitList(list)
} }
bookmarkAdapter.moreAction = { view, bean -> bookmarkAdapter.moreAction = { view, bean ->
showBookmarkMoreDialog( showBookmarkMoreDialog(
view, view,
bean.isFolder, bean.isFolder,
//删除
deleteAction = { deleteAction = {
// SpBeanUtils.deleteSpBean() if (bean.isFolder) {//书签目录
val desc = "Delete folder [${bean.name}] and the bookmarks in the folder?"
showDeleteTipDialog(desc) {
//删除书签目录
SpBeanUtils.deleteSpBeanCondition(BOOKMARK_SP_KEY, bean.id)
bookmarkList.remove(bean)
bookmarkAdapter.remove(bean) bookmarkAdapter.remove(bean)
})
//删除目录下书签
val subBeanList = bookmarkList.filter { it.folder == bean.name }
subBeanList.forEach { subBean ->
SpBeanUtils.deleteSpBeanCondition(BOOKMARK_SP_KEY, subBean.id)
bookmarkList.remove(subBean)
}
}
} else {//书签直接删除
SpBeanUtils.deleteSpBeanCondition(BOOKMARK_SP_KEY, bean.id)
bookmarkList.remove(bean)
bookmarkAdapter.remove(bean)
}
},
//编辑
editAction = {
BookmarkFolderEditActivity.editFolder = bean
launcher.launch(Intent(Intent(this, BookmarkFolderEditActivity::class.java)))
},
//选择
selectAction = {
selectUI()
}
)
} }
changeBookmark() changeBookmark()
...@@ -70,7 +104,7 @@ class BookmarkActivity : BaseActivity<ActivityBookmarkBinding>() { ...@@ -70,7 +104,7 @@ class BookmarkActivity : BaseActivity<ActivityBookmarkBinding>() {
val items = list.map { Gson().fromJson(it, BookmarkBean::class.java) } val items = list.map { Gson().fromJson(it, BookmarkBean::class.java) }
bookmarkList.addAll(items) bookmarkList.addAll(items)
bookmarkAdapter.submitList(bookmarkList.filter { it.folder == bookmarkAdapter.currentFolder }) bookmarkAdapter.submitList(bookmarkList.filter { it.folderId == bookmarkAdapter.currentFolderId })
} }
override fun initListener() { override fun initListener() {
...@@ -109,8 +143,47 @@ class BookmarkActivity : BaseActivity<ActivityBookmarkBinding>() { ...@@ -109,8 +143,47 @@ class BookmarkActivity : BaseActivity<ActivityBookmarkBinding>() {
currentTab = HISTORY_TAB currentTab = HISTORY_TAB
} }
binding.ivNewFolder.setOnClickListener { binding.ivNewFolder.setOnClickListener {
launcher.launch(Intent(this, BookmarkFolderAddActivity::class.java)) launcher.launch(Intent(this, BookmarkFolderEditActivity::class.java))
}
binding.tvCancel.setOnClickListener { noSelectUI() }
binding.llRemoveFolder.setOnClickListener {
val select = bookmarkAdapter.items.filter { it.isSelect }
if (select.isEmpty()) {
toast("Please select a bookmark to move")
return@setOnClickListener
} }
if (select.any { it.isFolder }) {
toast("Folder cannot be moved")
return@setOnClickListener
}
selectFolder = select.first().folder
launcher.launch(Intent(this, BookmarkFolderActivity::class.java)) {
}
}
}
@SuppressLint("NotifyDataSetChanged")
private fun selectUI() {
binding.flFanhui.visibility = View.GONE
binding.flTab.visibility = View.GONE
binding.tvCancel.visibility = View.VISIBLE
binding.ivNewFolder.visibility = View.GONE
binding.flOperation.visibility = View.VISIBLE
bookmarkAdapter.showSelector = true
bookmarkAdapter.items.forEach { it.isSelect = false }
bookmarkAdapter.notifyDataSetChanged()
}
@SuppressLint("NotifyDataSetChanged")
private fun noSelectUI() {
binding.tvCancel.visibility = View.GONE
binding.flFanhui.visibility = View.VISIBLE
binding.flTab.visibility = View.VISIBLE
binding.ivNewFolder.visibility = View.VISIBLE
binding.flOperation.visibility = View.GONE
bookmarkAdapter.showSelector = false
bookmarkAdapter.notifyDataSetChanged()
} }
companion object { companion object {
......
package com.base.browserwhite.ui.activity.bookmark package com.base.browserwhite.ui.activity.bookmark
import android.content.Context import android.content.Context
import android.graphics.Color
import android.graphics.drawable.ColorDrawable import android.graphics.drawable.ColorDrawable
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.core.view.isVisible
import androidx.recyclerview.widget.RecyclerView.ViewHolder import androidx.recyclerview.widget.RecyclerView.ViewHolder
import com.base.browserwhite.R import com.base.browserwhite.R
import com.base.browserwhite.bean.BookmarkBean import com.base.browserwhite.bean.BookmarkBean
import com.base.browserwhite.bean.BookmarkBean.Companion.folderRootId
import com.base.browserwhite.databinding.ItemBookmarkBinding import com.base.browserwhite.databinding.ItemBookmarkBinding
import com.base.browserwhite.utils.XmlEx.inflate import com.base.browserwhite.utils.XmlEx.inflate
import com.chad.library.adapter4.BaseQuickAdapter import com.chad.library.adapter4.BaseQuickAdapter
...@@ -15,8 +16,10 @@ import com.chad.library.adapter4.BaseQuickAdapter ...@@ -15,8 +16,10 @@ import com.chad.library.adapter4.BaseQuickAdapter
class BookmarkAdapter : BaseQuickAdapter<BookmarkBean, BookmarkAdapter.BookmarkHolder>() { class BookmarkAdapter : BaseQuickAdapter<BookmarkBean, BookmarkAdapter.BookmarkHolder>() {
var currentFolder = BookmarkBean.folderRoot private val TAG = "BookmarkAdapter"
var changeFolderAction: ((folder: String) -> Unit)? = null var showSelector: Boolean = false
var currentFolderId: Long = folderRootId
var changeFolderAction: ((folderId: Long) -> Unit)? = null
var moreAction: ((view: View, bean: BookmarkBean) -> Unit)? = null var moreAction: ((view: View, bean: BookmarkBean) -> Unit)? = null
inner class BookmarkHolder(view: View) : ViewHolder(view) inner class BookmarkHolder(view: View) : ViewHolder(view)
...@@ -41,15 +44,76 @@ class BookmarkAdapter : BaseQuickAdapter<BookmarkBean, BookmarkAdapter.BookmarkH ...@@ -41,15 +44,76 @@ class BookmarkAdapter : BaseQuickAdapter<BookmarkBean, BookmarkAdapter.BookmarkH
binding.iv.visibility = View.VISIBLE binding.iv.visibility = View.VISIBLE
binding.iv.setImageResource(R.mipmap.wenjiajia_bookmark) binding.iv.setImageResource(R.mipmap.wenjiajia_bookmark)
} }
binding.ivSelector.isVisible = showSelector
if (showSelector) {
binding.ivSelector.isSelected = item.isSelect
}
binding.ivMore.isVisible = !showSelector
binding.root.setOnClickListener {
if (!item.isFolder) return@setOnClickListener
currentFolderId = item.id
changeFolderAction?.invoke(currentFolderId)
}
binding.flOperation.setOnClickListener {
if (showSelector) {
item.isSelect = !item.isSelect
notifyItemChanged(position, "aaa")
} else {
moreAction?.invoke(it, item)
}
}
}
override fun onBindViewHolder(holder: BookmarkHolder, position: Int, item: BookmarkBean?, payloads: List<Any>) {
if (item == null) {
return
}
val binding = ItemBookmarkBinding.bind(holder.itemView)
val context = holder.itemView.context
if (payloads.isEmpty()) {
binding.tvName.text = item.name
if (!item.isFolder) {
binding.card.radius = context.resources.getDimension(R.dimen.dp_5)
binding.iv.visibility = View.GONE
binding.tvLetters.visibility = View.VISIBLE
binding.tvLetters.background = ColorDrawable(item.color)
binding.tvLetters.text = item.name.first().toString()
} else {
binding.card.radius = 0f
binding.tvLetters.visibility = View.GONE
binding.iv.visibility = View.VISIBLE
binding.iv.setImageResource(R.mipmap.wenjiajia_bookmark)
}
binding.ivSelector.isVisible = showSelector
// LogEx.logDebug(TAG, "showSelector=$showSelector")
if (showSelector) {
binding.ivSelector.isSelected = item.isSelect
}
binding.ivMore.isVisible = !showSelector
binding.root.setOnClickListener { binding.root.setOnClickListener {
if (!item.isFolder) return@setOnClickListener if (!item.isFolder) return@setOnClickListener
currentFolder = item.name currentFolderId = item.id
changeFolderAction?.invoke(currentFolder) changeFolderAction?.invoke(currentFolderId)
} }
binding.flMore.setOnClickListener { binding.flOperation.setOnClickListener {
if (showSelector) {
item.isSelect = !item.isSelect
notifyItemChanged(position, "aaa")
} else {
moreAction?.invoke(it, item) moreAction?.invoke(it, item)
} }
}
} else {
if (showSelector) {
binding.ivSelector.isSelected = item.isSelect
super.onBindViewHolder(holder, position, item, payloads)
}
}
} }
...@@ -69,11 +133,11 @@ class BookmarkAdapter : BaseQuickAdapter<BookmarkBean, BookmarkAdapter.BookmarkH ...@@ -69,11 +133,11 @@ class BookmarkAdapter : BaseQuickAdapter<BookmarkBean, BookmarkAdapter.BookmarkH
fun canBeforeFolder(): Boolean { fun canBeforeFolder(): Boolean {
return currentFolder != BookmarkBean.folderRoot return currentFolderId != BookmarkBean.folderRootId
} }
fun beforeFolder() { fun beforeFolder() {
currentFolder = BookmarkBean.folderRoot currentFolderId = BookmarkBean.folderRootId
changeFolderAction?.invoke(currentFolder) changeFolderAction?.invoke(currentFolderId)
} }
} }
\ No newline at end of file
...@@ -15,6 +15,9 @@ import com.base.browserwhite.utils.SpBeanUtils ...@@ -15,6 +15,9 @@ import com.base.browserwhite.utils.SpBeanUtils
import com.base.browserwhite.utils.SpBeanUtils.BOOKMARK_SP_KEY import com.base.browserwhite.utils.SpBeanUtils.BOOKMARK_SP_KEY
import com.google.gson.Gson import com.google.gson.Gson
/**
* 编辑书签
*/
class BookmarkEditActivity : BaseActivity<ActivityBookmarkEditBinding>() { class BookmarkEditActivity : BaseActivity<ActivityBookmarkEditBinding>() {
override val binding: ActivityBookmarkEditBinding by lazy { override val binding: ActivityBookmarkEditBinding by lazy {
...@@ -33,6 +36,7 @@ class BookmarkEditActivity : BaseActivity<ActivityBookmarkEditBinding>() { ...@@ -33,6 +36,7 @@ class BookmarkEditActivity : BaseActivity<ActivityBookmarkEditBinding>() {
binding.ivSelectorNav.isSelected = true binding.ivSelectorNav.isSelected = true
binding.tvFolder.text = editBookmark?.folder binding.tvFolder.text = editBookmark?.folder
binding.tvSave.isEnabled = true binding.tvSave.isEnabled = true
} }
override fun initListener() { override fun initListener() {
...@@ -46,7 +50,10 @@ class BookmarkEditActivity : BaseActivity<ActivityBookmarkEditBinding>() { ...@@ -46,7 +50,10 @@ class BookmarkEditActivity : BaseActivity<ActivityBookmarkEditBinding>() {
binding.llFolder.setOnClickListener { binding.llFolder.setOnClickListener {
BookmarkFolderActivity.selectFolder = editBookmark?.folder ?: "" BookmarkFolderActivity.selectFolder = editBookmark?.folder ?: ""
launcher.launch(Intent(this, BookmarkFolderActivity::class.java)) { launcher.launch(Intent(this, BookmarkFolderActivity::class.java)) {
editBookmark?.folder = it.data?.extras?.getString("Folder", "") ?: "" val json = it.data?.extras?.getString("Folder", "") ?: ""
val bean = Gson().fromJson(json, BookmarkBean::class.java)
editBookmark?.folder = bean.name
editBookmark?.folderId = bean.id
binding.tvFolder.text = editBookmark?.folder ?: "" binding.tvFolder.text = editBookmark?.folder ?: ""
} }
} }
...@@ -61,10 +68,6 @@ class BookmarkEditActivity : BaseActivity<ActivityBookmarkEditBinding>() { ...@@ -61,10 +68,6 @@ class BookmarkEditActivity : BaseActivity<ActivityBookmarkEditBinding>() {
if (editBookmark == null) { if (editBookmark == null) {
throw Exception("bug no BookmarkBean") throw Exception("bug no BookmarkBean")
} }
if (editBookmark?.folder != BookmarkBean.folderRoot) {
val folderBean = BookmarkBean(name = editBookmark?.folder ?: "", isFolder = true)
SpBeanUtils.addSpBean(BOOKMARK_SP_KEY, folderBean)
}
editBookmark?.color = ColorUtils.getRandomColor() editBookmark?.color = ColorUtils.getRandomColor()
editBookmark?.let { SpBeanUtils.addSpBean(BOOKMARK_SP_KEY, it) } editBookmark?.let { SpBeanUtils.addSpBean(BOOKMARK_SP_KEY, it) }
finish() finish()
......
...@@ -26,8 +26,8 @@ class BookmarkFolderActivity : BaseActivity<ActivityBookmarkFolderBinding>() { ...@@ -26,8 +26,8 @@ class BookmarkFolderActivity : BaseActivity<ActivityBookmarkFolderBinding>() {
binding.root.updatePadding(top = BarUtils.getStatusBarHeight()) binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
binding.ivRootSelector.isSelected = selectFolder == "Root Directory" binding.ivRootSelector.isSelected = selectFolder == "Root Directory"
adapter = BookmarkFolderAdapter(selectFolder) { adapter = BookmarkFolderAdapter(selectFolder) { bean ->
setResult(0, Intent().putExtra("Folder", it)) setResult(0, Intent().putExtra("Folder", Gson().toJson(bean)))
finish() finish()
} }
binding.rv.adapter = adapter binding.rv.adapter = adapter
...@@ -43,14 +43,14 @@ class BookmarkFolderActivity : BaseActivity<ActivityBookmarkFolderBinding>() { ...@@ -43,14 +43,14 @@ class BookmarkFolderActivity : BaseActivity<ActivityBookmarkFolderBinding>() {
} }
binding.ivNewFolder.setOnClickListener { binding.ivNewFolder.setOnClickListener {
startActivity(Intent(this, BookmarkFolderAddActivity::class.java)) startActivity(Intent(this, BookmarkFolderEditActivity::class.java))
} }
} }
private fun initData() { private fun initData() {
val spList = SpBeanUtils.getSpBeanList(BOOKMARK_SP_KEY) val spList = SpBeanUtils.getSpBeanList(BOOKMARK_SP_KEY)
val folderList= spList.map { val folderList = spList.map {
Gson().fromJson(it,BookmarkBean::class.java) Gson().fromJson(it, BookmarkBean::class.java)
}.filter { it.isFolder } }.filter { it.isFolder }
adapter.submitList(folderList) adapter.submitList(folderList)
} }
......
...@@ -12,7 +12,7 @@ import com.chad.library.adapter4.BaseQuickAdapter ...@@ -12,7 +12,7 @@ import com.chad.library.adapter4.BaseQuickAdapter
class BookmarkFolderAdapter( class BookmarkFolderAdapter(
val selectFolder: String, val selectFolder: String,
val clickAction: (folder: String) -> Unit val clickAction: (bookmark: BookmarkBean) -> Unit
) : BaseQuickAdapter<BookmarkBean, BookmarkFolderAdapter.BookmarkFolderViewHolder>() { ) : BaseQuickAdapter<BookmarkBean, BookmarkFolderAdapter.BookmarkFolderViewHolder>() {
inner class BookmarkFolderViewHolder(view: View) : ViewHolder(view) inner class BookmarkFolderViewHolder(view: View) : ViewHolder(view)
...@@ -24,7 +24,7 @@ class BookmarkFolderAdapter( ...@@ -24,7 +24,7 @@ class BookmarkFolderAdapter(
binding.tvName.text = item.name binding.tvName.text = item.name
binding.ivSelector.isSelected = item.name == selectFolder binding.ivSelector.isSelected = item.name == selectFolder
binding.root.setOnClickListener { binding.root.setOnClickListener {
clickAction.invoke(item.name) clickAction.invoke(item)
} }
} }
......
...@@ -5,18 +5,19 @@ import androidx.activity.addCallback ...@@ -5,18 +5,19 @@ import androidx.activity.addCallback
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import androidx.core.widget.addTextChangedListener import androidx.core.widget.addTextChangedListener
import com.base.browserwhite.bean.BookmarkBean import com.base.browserwhite.bean.BookmarkBean
import com.base.browserwhite.databinding.ActivityBookmarkFolderAddBinding import com.base.browserwhite.databinding.ActivityBookmarkFolderEditBinding
import com.base.browserwhite.ui.activity.BaseActivity import com.base.browserwhite.ui.activity.BaseActivity
import com.base.browserwhite.utils.BarUtils import com.base.browserwhite.utils.BarUtils
import com.base.browserwhite.utils.SpBeanUtils import com.base.browserwhite.utils.SpBeanUtils
import com.base.browserwhite.utils.SpBeanUtils.BOOKMARK_FOLDER_SP_KEY
import com.base.browserwhite.utils.SpBeanUtils.BOOKMARK_SP_KEY import com.base.browserwhite.utils.SpBeanUtils.BOOKMARK_SP_KEY
import com.google.gson.Gson
class BookmarkFolderAddActivity : BaseActivity<ActivityBookmarkFolderAddBinding>() { /**
* 添加编辑书签
*/
class BookmarkFolderEditActivity : BaseActivity<ActivityBookmarkFolderEditBinding>() {
override val binding: ActivityBookmarkFolderAddBinding by lazy { override val binding: ActivityBookmarkFolderEditBinding by lazy {
ActivityBookmarkFolderAddBinding.inflate(layoutInflater) ActivityBookmarkFolderEditBinding.inflate(layoutInflater)
} }
override fun initView() { override fun initView() {
...@@ -24,7 +25,7 @@ class BookmarkFolderAddActivity : BaseActivity<ActivityBookmarkFolderAddBinding> ...@@ -24,7 +25,7 @@ class BookmarkFolderAddActivity : BaseActivity<ActivityBookmarkFolderAddBinding>
BarUtils.setStatusBarColor(this, Color.WHITE) BarUtils.setStatusBarColor(this, Color.WHITE)
binding.root.updatePadding(top = BarUtils.getStatusBarHeight()) binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
binding.editName.setText(editFolder) editFolder?.let { binding.editName.setText(it.name) }
} }
...@@ -40,15 +41,23 @@ class BookmarkFolderAddActivity : BaseActivity<ActivityBookmarkFolderAddBinding> ...@@ -40,15 +41,23 @@ class BookmarkFolderAddActivity : BaseActivity<ActivityBookmarkFolderAddBinding>
binding.editName.addTextChangedListener { binding.editName.addTextChangedListener {
binding.tvSave.isEnabled = !it.isNullOrEmpty() binding.tvSave.isEnabled = !it.isNullOrEmpty()
} }
binding.tvSave.setOnClickListener { binding.tvSave.setOnClickListener {
val bookmarkBean = BookmarkBean(name = binding.editName.text.toString(), isFolder = true) if (editFolder == null) {
SpBeanUtils.addSpBean(BOOKMARK_SP_KEY, bookmarkBean) editFolder = BookmarkBean(name = binding.editName.text.toString(), isFolder = true)
editFolder?.let { SpBeanUtils.addSpBean(BOOKMARK_SP_KEY, it) }
} else {
editFolder?.let {
it.name = binding.editName.text.toString()
SpBeanUtils.editSpBean(BOOKMARK_SP_KEY, it)
}
}
finish() finish()
} }
} }
companion object { companion object {
var editFolder: String = "" var editFolder: BookmarkBean? = null
} }
} }
\ No newline at end of file
...@@ -142,12 +142,6 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() { ...@@ -142,12 +142,6 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
} }
BOOKMARK -> { BOOKMARK -> {
requireContext().startActivity(
Intent(
requireContext(),
BookmarkActivity::class.java
)
)
requireContext().startActivity(Intent(requireContext(), BookmarkActivity::class.java)) requireContext().startActivity(Intent(requireContext(), BookmarkActivity::class.java))
} }
......
...@@ -14,7 +14,9 @@ object BookmarkDialog { ...@@ -14,7 +14,9 @@ object BookmarkDialog {
fun Context.showBookmarkMoreDialog( fun Context.showBookmarkMoreDialog(
anchorView: View, anchorView: View,
isDir: Boolean, isDir: Boolean,
deleteAction: (() -> Unit)? = null deleteAction: (() -> Unit)? = null,
editAction: (() -> Unit)? = null,
selectAction: (() -> Unit)? = null,
) { ) {
val binding = DialogBookmarkMoreBinding.inflate(LayoutInflater.from(this)) val binding = DialogBookmarkMoreBinding.inflate(LayoutInflater.from(this))
val dialog = AlertDialog.Builder(this).create() val dialog = AlertDialog.Builder(this).create()
...@@ -49,11 +51,18 @@ object BookmarkDialog { ...@@ -49,11 +51,18 @@ object BookmarkDialog {
binding.llOpenNewTab.setOnClickListener { } binding.llOpenNewTab.setOnClickListener { }
binding.llDelete.setOnClickListener { binding.llDelete.setOnClickListener {
dialog.dismiss()
deleteAction?.invoke() deleteAction?.invoke()
} }
binding.llEdit.setOnClickListener { } binding.llEdit.setOnClickListener {
dialog.dismiss()
editAction?.invoke()
}
binding.llAddNavigation.setOnClickListener { } binding.llAddNavigation.setOnClickListener { }
binding.llAddDesktop.setOnClickListener { } binding.llAddDesktop.setOnClickListener { }
binding.llSelect.setOnClickListener { } binding.llSelect.setOnClickListener {
dialog.dismiss()
selectAction?.invoke()
}
} }
} }
\ No newline at end of file
...@@ -278,7 +278,7 @@ object DialogViews { ...@@ -278,7 +278,7 @@ object DialogViews {
} }
fun Context.showDeleteTipDialog(action: () -> Unit) { fun Context.showDeleteTipDialog(desc: String? = null, action: () -> Unit) {
val binding = DialogDeleteTipBinding.inflate(LayoutInflater.from(this)) val binding = DialogDeleteTipBinding.inflate(LayoutInflater.from(this))
val dialog = AlertDialog.Builder(this).create() val dialog = AlertDialog.Builder(this).create()
dialog.setView(binding.root) dialog.setView(binding.root)
...@@ -288,6 +288,7 @@ object DialogViews { ...@@ -288,6 +288,7 @@ object DialogViews {
params?.width = resources.getDimensionPixelOffset(R.dimen.dp_335) params?.width = resources.getDimensionPixelOffset(R.dimen.dp_335)
dialog.window?.attributes = params dialog.window?.attributes = params
dialog.window?.setBackgroundDrawableResource(android.R.color.transparent) dialog.window?.setBackgroundDrawableResource(android.R.color.transparent)
desc?.let { binding.tvDesc.text = it }
binding.tvCancel.setOnClickListener { binding.tvCancel.setOnClickListener {
dialog.dismiss() dialog.dismiss()
} }
......
...@@ -7,7 +7,6 @@ object SpBeanUtils { ...@@ -7,7 +7,6 @@ object SpBeanUtils {
const val BOOKMARK_SP_KEY = "bookmark_sp_key"//书签 const val BOOKMARK_SP_KEY = "bookmark_sp_key"//书签
const val BOOKMARK_FOLDER_SP_KEY = "bookmark_folder_sp_key"//书签目录
const val SEARCH_RECORD_SP_KEY = "search_record_sp_key" const val SEARCH_RECORD_SP_KEY = "search_record_sp_key"
fun getSpBeanList(key: String): List<String> { fun getSpBeanList(key: String): List<String> {
...@@ -21,8 +20,8 @@ object SpBeanUtils { ...@@ -21,8 +20,8 @@ object SpBeanUtils {
fun deleteSpBeanCondition(key: String, id: Long) { fun deleteSpBeanCondition(key: String, id: Long) {
val list =getSpBeanList(key).toMutableList() val list = getSpBeanList(key).toMutableList()
val deleteItem = list .find { Gson().fromJson(it, SpBean::class.java).id == id } val deleteItem = list.find { Gson().fromJson(it, SpBean::class.java).id == id }
list.remove(deleteItem) list.remove(deleteItem)
val string = list.joinToString(separator = "|||") val string = list.joinToString(separator = "|||")
...@@ -31,15 +30,19 @@ object SpBeanUtils { ...@@ -31,15 +30,19 @@ object SpBeanUtils {
} }
fun addSpBean(key: String, bean: SpBean): Long {
fun addSpBean(key: String, bean: SpBean) {
val list = getSpBeanList(key).toMutableList() val list = getSpBeanList(key).toMutableList()
bean.id = if (list.isNotEmpty()) {
val lastSpBean: SpBean? = Gson().fromJson(list.last(), SpBean::class.java) val lastSpBean: SpBean? = Gson().fromJson(list.last(), SpBean::class.java)
bean.id = (lastSpBean?.id ?: 0) + 1 (lastSpBean?.id ?: 0) + 1
} else {
1
}
val value = Gson().toJson(bean) val value = Gson().toJson(bean)
list.add(value) list.add(value)
val string = list.joinToString(separator = "|||") val string = list.joinToString(separator = "|||")
AppPreferences.getInstance().put(key, string) AppPreferences.getInstance().put(key, string)
return bean.id
} }
...@@ -47,4 +50,16 @@ object SpBeanUtils { ...@@ -47,4 +50,16 @@ object SpBeanUtils {
AppPreferences.getInstance().put(key, "") AppPreferences.getInstance().put(key, "")
} }
fun editSpBean(key: String, bean: SpBean) {
val gson = Gson()
val list = getSpBeanList(key).toMutableList()
val oldItem = list.find { gson.fromJson(it, SpBean::class.java).id == bean.id }
val index = list.indexOf(oldItem)
list.remove(oldItem)
list.add(index, gson.toJson(bean))
val string = list.joinToString(separator = "|||")
AppPreferences.getInstance().put(key, string)
}
} }
\ No newline at end of file
...@@ -21,6 +21,18 @@ ...@@ -21,6 +21,18 @@
android:layout_marginVertical="10dp" android:layout_marginVertical="10dp"
android:layout_marginStart="10dp"> android:layout_marginStart="10dp">
<TextView
android:id="@+id/tv_cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginStart="8dp"
android:text="Cancel"
android:textColor="#0571ED"
android:textSize="18sp"
android:visibility="gone"
tools:ignore="HardcodedText" />
<FrameLayout <FrameLayout
android:id="@+id/fl_fanhui" android:id="@+id/fl_fanhui"
android:layout_width="wrap_content" android:layout_width="wrap_content"
...@@ -37,6 +49,7 @@ ...@@ -37,6 +49,7 @@
</FrameLayout> </FrameLayout>
<FrameLayout <FrameLayout
android:id="@+id/fl_tab"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
...@@ -103,6 +116,7 @@ ...@@ -103,6 +116,7 @@
</FrameLayout> </FrameLayout>
<SearchView <SearchView
android:id="@+id/searchView"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="44dp" android:layout_height="44dp"
android:layout_marginHorizontal="15dp" android:layout_marginHorizontal="15dp"
...@@ -126,4 +140,73 @@ ...@@ -126,4 +140,73 @@
</FrameLayout> </FrameLayout>
<FrameLayout
android:id="@+id/fl_operation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:background="@color/white"
android:orientation="horizontal"
android:visibility="gone">
<LinearLayout
android:id="@+id/ll_remove_folder"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:layout_marginStart="45dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="10dp"
android:orientation="vertical"
tools:ignore="UseCompoundDrawables">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:src="@mipmap/remove_folder_edit"
tools:ignore="ContentDescription" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="Remove Folder"
android:textColor="#6E757B"
android:textSize="14sp"
tools:ignore="HardcodedText" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_delete"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_marginTop="5dp"
android:layout_marginEnd="45dp"
android:layout_marginBottom="10dp"
android:orientation="vertical"
tools:ignore="UseCompoundDrawables">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:src="@mipmap/b_del_folder_edit"
tools:ignore="ContentDescription" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="Delete"
android:textColor="#6E757B"
android:textSize="14sp"
tools:ignore="HardcodedText" />
</LinearLayout>
</FrameLayout>
</LinearLayout> </LinearLayout>
\ No newline at end of file
...@@ -84,6 +84,7 @@ ...@@ -84,6 +84,7 @@
tools:text="Google" /> tools:text="Google" />
<TextView <TextView
android:id="@+id/tv_url"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="16dp" android:layout_marginStart="16dp"
...@@ -146,6 +147,7 @@ ...@@ -146,6 +147,7 @@
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
android:id="@+id/ll_nav"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="15dp" android:layout_marginStart="15dp"
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical" android:orientation="vertical"
tools:context=".ui.activity.bookmark.BookmarkFolderAddActivity"> tools:context=".ui.activity.bookmark.BookmarkFolderEditActivity">
<FrameLayout <FrameLayout
android:layout_width="match_parent" android:layout_width="match_parent"
......
...@@ -19,13 +19,14 @@ ...@@ -19,13 +19,14 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="5dp" android:layout_marginTop="5dp"
android:text="Prom" android:text="Prompt"
android:textColor="@color/black" android:textColor="@color/black"
android:textSize="19sp" android:textSize="19sp"
android:textStyle="bold" android:textStyle="bold"
tools:ignore="HardcodedText" /> tools:ignore="HardcodedText" />
<TextView <TextView
android:id="@+id/tv_desc"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="13dp" android:layout_marginTop="13dp"
......
...@@ -14,9 +14,9 @@ ...@@ -14,9 +14,9 @@
android:layout_marginVertical="4dp" android:layout_marginVertical="4dp"
android:layout_marginStart="15dp" android:layout_marginStart="15dp"
app:cardElevation="0dp" app:cardElevation="0dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"> app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView <ImageView
android:id="@+id/iv" android:id="@+id/iv"
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
android:layout_marginStart="16dp" android:layout_marginStart="16dp"
android:orientation="vertical" android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="@id/card" app:layout_constraintBottom_toBottomOf="@id/card"
app:layout_constraintEnd_toStartOf="@id/fl_more" app:layout_constraintEnd_toStartOf="@id/fl_opeartion"
app:layout_constraintStart_toEndOf="@id/card" app:layout_constraintStart_toEndOf="@id/card"
app:layout_constraintTop_toTopOf="@id/card"> app:layout_constraintTop_toTopOf="@id/card">
...@@ -63,7 +63,7 @@ ...@@ -63,7 +63,7 @@
</LinearLayout> </LinearLayout>
<FrameLayout <FrameLayout
android:id="@+id/fl_more" android:id="@+id/fl_operation"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
...@@ -75,17 +75,27 @@ ...@@ -75,17 +75,27 @@
app:layout_constraintTop_toTopOf="@id/card"> app:layout_constraintTop_toTopOf="@id/card">
<ImageView <ImageView
android:id="@+id/iv_more"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:src="@mipmap/geduo" android:src="@mipmap/geduo"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<ImageView
android:id="@+id/iv_selector"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/bg_selector_bookmark"
tools:ignore="ContentDescription" />
</FrameLayout> </FrameLayout>
<View <View
android:layout_marginBottom="2dp"
android:layout_marginTop="20dp"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="1px" android:layout_height="1px"
android:layout_marginTop="20dp"
android:layout_marginBottom="2dp"
android:background="#E5E6EB" android:background="#E5E6EB"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
......
...@@ -69,7 +69,7 @@ ...@@ -69,7 +69,7 @@
android:layout_marginStart="16dp" android:layout_marginStart="16dp"
android:orientation="vertical" android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="@id/card" app:layout_constraintBottom_toBottomOf="@id/card"
app:layout_constraintEnd_toStartOf="@id/fl_more" app:layout_constraintEnd_toStartOf="@id/fl_opeartion"
app:layout_constraintStart_toEndOf="@id/card" app:layout_constraintStart_toEndOf="@id/card"
app:layout_constraintTop_toTopOf="@id/card"> app:layout_constraintTop_toTopOf="@id/card">
...@@ -86,7 +86,7 @@ ...@@ -86,7 +86,7 @@
</LinearLayout> </LinearLayout>
<FrameLayout <FrameLayout
android:id="@+id/fl_more" android:id="@+id/fl_opeartion"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
......
...@@ -68,11 +68,11 @@ ...@@ -68,11 +68,11 @@
</LinearLayout> </LinearLayout>
<FrameLayout <FrameLayout
android:layout_marginEnd="8dp"
android:id="@+id/fl_more" android:id="@+id/fl_more"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:layout_marginEnd="8dp"
android:background="?android:attr/selectableItemBackground" android:background="?android:attr/selectableItemBackground"
android:padding="8dp" android:padding="8dp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment