Commit 525681ed authored by wanglei's avatar wanglei

...

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