Commit 525681ed authored by wanglei's avatar wanglei

...

parent 429245cd
package com.base.browserwhite.bean package com.base.browserwhite.bean
data class BookmarkBean( data class BookmarkBean(
var folder: String = folderRoot, var folder: String = folderRoot,
var name: String = "", var name: String = "",
var url: String = "", var url: String = "",
var isFolder: Boolean = false, var isFolder: Boolean = false,
var color: Int =0
) { ) {
val viewType: Int = 0 val viewType: Int = 0
var isSelect:Boolean=false
companion object { companion object {
var folderRoot = "Root Directory" var folderRoot = "Root Directory"
} }
......
package com.base.browserwhite.ui.activity.bookmark package com.base.browserwhite.ui.activity.bookmark
import android.content.Intent
import android.graphics.Color import android.graphics.Color
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.views.BookmarkDialog.showBookmarkMoreDialog
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
...@@ -35,6 +37,15 @@ class BookmarkActivity : BaseActivity<ActivityBookmarkBinding>() { ...@@ -35,6 +37,15 @@ class BookmarkActivity : BaseActivity<ActivityBookmarkBinding>() {
val list = bookmarkList.filter { it.folder == folder } val list = bookmarkList.filter { it.folder == folder }
bookmarkAdapter.submitList(list) bookmarkAdapter.submitList(list)
} }
bookmarkAdapter.moreAction = { view, bean ->
showBookmarkMoreDialog(
view,
bean.isFolder,
deleteAction = {
// SpBeanUtils.deleteSpBean()
bookmarkAdapter.remove(bean)
})
}
changeBookmark() changeBookmark()
} }
...@@ -97,6 +108,9 @@ class BookmarkActivity : BaseActivity<ActivityBookmarkBinding>() { ...@@ -97,6 +108,9 @@ class BookmarkActivity : BaseActivity<ActivityBookmarkBinding>() {
binding.tvTabBookmark.isSelected = false binding.tvTabBookmark.isSelected = false
currentTab = HISTORY_TAB currentTab = HISTORY_TAB
} }
binding.ivNewFolder.setOnClickListener {
launcher.launch(Intent(this, BookmarkFolderAddActivity::class.java))
}
} }
companion object { companion object {
......
...@@ -11,13 +11,13 @@ import com.base.browserwhite.bean.BookmarkBean ...@@ -11,13 +11,13 @@ import com.base.browserwhite.bean.BookmarkBean
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
import java.util.Random
class BookmarkAdapter : BaseQuickAdapter<BookmarkBean, BookmarkAdapter.BookmarkHolder>() { class BookmarkAdapter : BaseQuickAdapter<BookmarkBean, BookmarkAdapter.BookmarkHolder>() {
var currentFolder = BookmarkBean.folderRoot var currentFolder = BookmarkBean.folderRoot
var changeFolderAction: ((folder: String) -> Unit)? = null var changeFolderAction: ((folder: String) -> Unit)? = null
var moreAction: ((view: View, bean: BookmarkBean) -> Unit)? = null
inner class BookmarkHolder(view: View) : ViewHolder(view) inner class BookmarkHolder(view: View) : ViewHolder(view)
...@@ -33,7 +33,7 @@ class BookmarkAdapter : BaseQuickAdapter<BookmarkBean, BookmarkAdapter.BookmarkH ...@@ -33,7 +33,7 @@ class BookmarkAdapter : BaseQuickAdapter<BookmarkBean, BookmarkAdapter.BookmarkH
binding.card.radius = context.resources.getDimension(R.dimen.dp_5) binding.card.radius = context.resources.getDimension(R.dimen.dp_5)
binding.iv.visibility = View.GONE binding.iv.visibility = View.GONE
binding.tvLetters.visibility = View.VISIBLE binding.tvLetters.visibility = View.VISIBLE
binding.tvLetters.background = getRandomColorDrawable() binding.tvLetters.background = ColorDrawable(item.color)
binding.tvLetters.text = item.name.first().toString() binding.tvLetters.text = item.name.first().toString()
} else { } else {
binding.card.radius = 0f binding.card.radius = 0f
...@@ -47,6 +47,9 @@ class BookmarkAdapter : BaseQuickAdapter<BookmarkBean, BookmarkAdapter.BookmarkH ...@@ -47,6 +47,9 @@ class BookmarkAdapter : BaseQuickAdapter<BookmarkBean, BookmarkAdapter.BookmarkH
currentFolder = item.name currentFolder = item.name
changeFolderAction?.invoke(currentFolder) changeFolderAction?.invoke(currentFolder)
} }
binding.flMore.setOnClickListener {
moreAction?.invoke(it, item)
}
} }
...@@ -64,14 +67,6 @@ class BookmarkAdapter : BaseQuickAdapter<BookmarkBean, BookmarkAdapter.BookmarkH ...@@ -64,14 +67,6 @@ class BookmarkAdapter : BaseQuickAdapter<BookmarkBean, BookmarkAdapter.BookmarkH
return BookmarkHolder(layout.inflate(parent)) return BookmarkHolder(layout.inflate(parent))
} }
fun getRandomColorDrawable(): ColorDrawable {
val random = Random()
val red: Int = random.nextInt(256)
val green: Int = random.nextInt(256)
val blue: Int = random.nextInt(256)
val color = Color.rgb(red, green, blue)
return ColorDrawable(color)
}
fun canBeforeFolder(): Boolean { fun canBeforeFolder(): Boolean {
return currentFolder != BookmarkBean.folderRoot return currentFolder != BookmarkBean.folderRoot
......
...@@ -10,6 +10,7 @@ import com.base.browserwhite.bean.BookmarkBean ...@@ -10,6 +10,7 @@ import com.base.browserwhite.bean.BookmarkBean
import com.base.browserwhite.databinding.ActivityBookmarkEditBinding import com.base.browserwhite.databinding.ActivityBookmarkEditBinding
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.ColorUtils
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.google.gson.Gson import com.google.gson.Gson
...@@ -64,6 +65,7 @@ class BookmarkEditActivity : BaseActivity<ActivityBookmarkEditBinding>() { ...@@ -64,6 +65,7 @@ class BookmarkEditActivity : BaseActivity<ActivityBookmarkEditBinding>() {
val folderBean = BookmarkBean(name = editBookmark?.folder ?: "", isFolder = true) val folderBean = BookmarkBean(name = editBookmark?.folder ?: "", isFolder = true)
SpBeanUtils.addSpBean(BOOKMARK_SP_KEY, Gson().toJson(folderBean)) SpBeanUtils.addSpBean(BOOKMARK_SP_KEY, Gson().toJson(folderBean))
} }
editBookmark?.color = ColorUtils.getRandomColor()
SpBeanUtils.addSpBean(BOOKMARK_SP_KEY, Gson().toJson(editBookmark)) SpBeanUtils.addSpBean(BOOKMARK_SP_KEY, Gson().toJson(editBookmark))
finish() finish()
} }
......
...@@ -4,11 +4,13 @@ import android.content.Intent ...@@ -4,11 +4,13 @@ import android.content.Intent
import android.graphics.Color import android.graphics.Color
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.databinding.ActivityBookmarkFolderBinding import com.base.browserwhite.databinding.ActivityBookmarkFolderBinding
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.google.gson.Gson
class BookmarkFolderActivity : BaseActivity<ActivityBookmarkFolderBinding>() { class BookmarkFolderActivity : BaseActivity<ActivityBookmarkFolderBinding>() {
...@@ -46,8 +48,11 @@ class BookmarkFolderActivity : BaseActivity<ActivityBookmarkFolderBinding>() { ...@@ -46,8 +48,11 @@ class BookmarkFolderActivity : BaseActivity<ActivityBookmarkFolderBinding>() {
} }
private fun initData() { private fun initData() {
val spList = SpBeanUtils.getSpBeanList(BOOKMARK_FOLDER_SP_KEY) val spList = SpBeanUtils.getSpBeanList(BOOKMARK_SP_KEY)
adapter.submitList(spList) val folderList= spList.map {
Gson().fromJson(it,BookmarkBean::class.java)
}.filter { it.isFolder }
adapter.submitList(folderList)
} }
override fun onResume() { override fun onResume() {
......
...@@ -5,6 +5,7 @@ import android.view.View ...@@ -5,6 +5,7 @@ import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
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.databinding.ItemBookmarkFolderBinding import com.base.browserwhite.databinding.ItemBookmarkFolderBinding
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
...@@ -12,18 +13,18 @@ import com.chad.library.adapter4.BaseQuickAdapter ...@@ -12,18 +13,18 @@ import com.chad.library.adapter4.BaseQuickAdapter
class BookmarkFolderAdapter( class BookmarkFolderAdapter(
val selectFolder: String, val selectFolder: String,
val clickAction: (folder: String) -> Unit val clickAction: (folder: String) -> Unit
) : BaseQuickAdapter<String, BookmarkFolderAdapter.BookmarkFolderViewHolder>() { ) : BaseQuickAdapter<BookmarkBean, BookmarkFolderAdapter.BookmarkFolderViewHolder>() {
inner class BookmarkFolderViewHolder(view: View) : ViewHolder(view) inner class BookmarkFolderViewHolder(view: View) : ViewHolder(view)
override fun onBindViewHolder(holder: BookmarkFolderViewHolder, position: Int, item: String?) { override fun onBindViewHolder(holder: BookmarkFolderViewHolder, position: Int, item: BookmarkBean?) {
if (item == null) return if (item == null) return
val binding = ItemBookmarkFolderBinding.bind(holder.itemView) val binding = ItemBookmarkFolderBinding.bind(holder.itemView)
binding.tvName.text = item binding.tvName.text = item.name
binding.ivSelector.isSelected = item == selectFolder binding.ivSelector.isSelected = item.name == selectFolder
binding.root.setOnClickListener { binding.root.setOnClickListener {
clickAction.invoke(item) clickAction.invoke(item.name)
} }
} }
......
...@@ -4,11 +4,14 @@ import android.graphics.Color ...@@ -4,11 +4,14 @@ import android.graphics.Color
import androidx.activity.addCallback 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.databinding.ActivityBookmarkFolderAddBinding import com.base.browserwhite.databinding.ActivityBookmarkFolderAddBinding
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_FOLDER_SP_KEY
import com.base.browserwhite.utils.SpBeanUtils.BOOKMARK_SP_KEY
import com.google.gson.Gson
class BookmarkFolderAddActivity : BaseActivity<ActivityBookmarkFolderAddBinding>() { class BookmarkFolderAddActivity : BaseActivity<ActivityBookmarkFolderAddBinding>() {
...@@ -38,7 +41,8 @@ class BookmarkFolderAddActivity : BaseActivity<ActivityBookmarkFolderAddBinding> ...@@ -38,7 +41,8 @@ class BookmarkFolderAddActivity : BaseActivity<ActivityBookmarkFolderAddBinding>
binding.tvSave.isEnabled = !it.isNullOrEmpty() binding.tvSave.isEnabled = !it.isNullOrEmpty()
} }
binding.tvSave.setOnClickListener { binding.tvSave.setOnClickListener {
SpBeanUtils.addSpBean(BOOKMARK_FOLDER_SP_KEY, binding.editName.text.toString()) val bookmarkBean = BookmarkBean(name = binding.editName.text.toString(), isFolder = true)
SpBeanUtils.addSpBean(BOOKMARK_SP_KEY, Gson().toJson(bookmarkBean))
finish() finish()
} }
} }
......
...@@ -14,6 +14,7 @@ object BookmarkDialog { ...@@ -14,6 +14,7 @@ object BookmarkDialog {
fun Context.showBookmarkMoreDialog( fun Context.showBookmarkMoreDialog(
anchorView: View, anchorView: View,
isDir: Boolean, isDir: Boolean,
deleteAction: (() -> 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()
...@@ -25,14 +26,14 @@ object BookmarkDialog { ...@@ -25,14 +26,14 @@ object BookmarkDialog {
val params = dialog.window?.attributes val params = dialog.window?.attributes
params?.dimAmount = 0f params?.dimAmount = 0f
params?.width = resources.getDimensionPixelOffset(R.dimen.dp_258) params?.width = resources.getDimensionPixelOffset(R.dimen.dp_250)
// params?.width = FrameLayout.LayoutParams.WRAP_CONTENT // params?.width = FrameLayout.LayoutParams.WRAP_CONTENT
params?.height = FrameLayout.LayoutParams.WRAP_CONTENT params?.height = FrameLayout.LayoutParams.WRAP_CONTENT
params?.gravity = Gravity.TOP params?.gravity = Gravity.TOP
val location = IntArray(2) val location = IntArray(2)
anchorView.getLocationOnScreen(location) anchorView.getLocationOnScreen(location)
params?.x = location[0] params?.x = resources.getDimensionPixelOffset(R.dimen.dp_100)
params?.y = location[1] - resources.getDimensionPixelOffset(R.dimen.dp_200) params?.y = location[1] - resources.getDimensionPixelOffset(R.dimen.dp_150)
dialog.window?.attributes = params dialog.window?.attributes = params
if (isDir) { if (isDir) {
...@@ -47,7 +48,9 @@ object BookmarkDialog { ...@@ -47,7 +48,9 @@ object BookmarkDialog {
} }
binding.llOpenNewTab.setOnClickListener { } binding.llOpenNewTab.setOnClickListener { }
binding.llDelete.setOnClickListener { } binding.llDelete.setOnClickListener {
deleteAction?.invoke()
}
binding.llEdit.setOnClickListener { } binding.llEdit.setOnClickListener { }
binding.llAddNavigation.setOnClickListener { } binding.llAddNavigation.setOnClickListener { }
binding.llAddDesktop.setOnClickListener { } binding.llAddDesktop.setOnClickListener { }
......
package com.base.browserwhite.utils
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import java.util.Random
object ColorUtils {
fun getRandomColorDrawable(): ColorDrawable {
val random = Random()
val red: Int = random.nextInt(256)
val green: Int = random.nextInt(256)
val blue: Int = random.nextInt(256)
val color = Color.rgb(red, green, blue)
return ColorDrawable(color)
}
fun getRandomColor(): Int {
val random = Random()
val red: Int = random.nextInt(256)
val green: Int = random.nextInt(256)
val blue: Int = random.nextInt(256)
val color = Color.rgb(red, green, blue)
return color
}
}
\ No newline at end of file
...@@ -15,6 +15,14 @@ object SpBeanUtils { ...@@ -15,6 +15,14 @@ object SpBeanUtils {
sp.split("|||") sp.split("|||")
} }
} }
fun deleteSpBeanCondition(key: String, value: String,condition:String) {
val list = getSpBeanList(key).toMutableList()
list.remove(value)
val string = list.joinToString(separator = "|||")
AppPreferences.getInstance().put(key, string)
}
fun deleteSpBean(key: String, value: String) { fun deleteSpBean(key: String, value: String) {
val list = getSpBeanList(key).toMutableList() val list = getSpBeanList(key).toMutableList()
......
...@@ -89,7 +89,7 @@ ...@@ -89,7 +89,7 @@
</LinearLayout> </LinearLayout>
<ImageView <ImageView
android:id="@+id/iv_delete" android:id="@+id/iv_new_folder"
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|end" android:layout_gravity="center_vertical|end"
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
android:layout_height="wrap_content"> android:layout_height="wrap_content">
<androidx.cardview.widget.CardView <androidx.cardview.widget.CardView
android:layout_width="258dp" android:layout_width="230dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="10dp" android:layout_margin="10dp"
app:cardBackgroundColor="@color/white" app:cardBackgroundColor="@color/white"
......
...@@ -19,4 +19,7 @@ ...@@ -19,4 +19,7 @@
<dimen name="dp_26">26dp</dimen> <dimen name="dp_26">26dp</dimen>
<dimen name="widget_margin">0dp</dimen> <dimen name="widget_margin">0dp</dimen>
<dimen name="dp_258">258dp</dimen> <dimen name="dp_258">258dp</dimen>
<dimen name="dp_250">250dp</dimen>
<dimen name="dp_50">50dp</dimen>
<dimen name="dp_100">100dp</dimen>
</resources> </resources>
\ No newline at end of file
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