Commit 8a3cf7c2 authored by wanglei's avatar wanglei

...

parent a574f00d
...@@ -38,18 +38,7 @@ ...@@ -38,18 +38,7 @@
android:theme="@style/Theme.BrowserWhite" android:theme="@style/Theme.BrowserWhite"
android:usesCleartextTraffic="true" android:usesCleartextTraffic="true"
tools:targetApi="34"> tools:targetApi="34">
<activity
android:name=".ui.activity.bookmark.BookmarkFolderEditActivity"
android:exported="false" />
<activity
android:name=".ui.activity.bookmark.BookmarkFolderActivity"
android:exported="false" />
<activity
android:name=".ui.activity.bookmark.BookmarkEditActivity"
android:exported="false" />
<activity
android:name=".ui.activity.bookmark.BookmarkActivity"
android:exported="false" />
<receiver <receiver
android:name=".ui.widget.BrowserAppWidget" android:name=".ui.widget.BrowserAppWidget"
...@@ -80,6 +69,30 @@ ...@@ -80,6 +69,30 @@
android:launchMode="singleTop" android:launchMode="singleTop"
android:screenOrientation="portrait" android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" /> tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity
android:name=".ui.activity.bookmark.BookmarkFolderEditActivity"
android:exported="false"
android:launchMode="singleTop"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity
android:name=".ui.activity.bookmark.BookmarkFolderActivity"
android:exported="false"
android:launchMode="singleTop"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity
android:name=".ui.activity.bookmark.BookmarkEditActivity"
android:exported="false"
android:launchMode="singleTop"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity
android:name=".ui.activity.bookmark.BookmarkActivity"
android:exported="false"
android:launchMode="singleTop"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity <activity
android:name=".ui.activity.about.AboutActivity" android:name=".ui.activity.about.AboutActivity"
android:exported="false" android:exported="false"
......
...@@ -30,6 +30,8 @@ data class WebSiteBean( ...@@ -30,6 +30,8 @@ data class WebSiteBean(
var localIcon: Int = 0 var localIcon: Int = 0
var increase = false var increase = false
var isAdd: Boolean = false var isAdd: Boolean = false
var isBookmarkNav: Boolean = false
var color:Int=0
companion object { companion object {
fun WebSiteBean.getLocalImage(): Int { fun WebSiteBean.getLocalImage(): Int {
......
...@@ -10,10 +10,12 @@ import com.base.browserwhite.bean.BookmarkBean ...@@ -10,10 +10,12 @@ 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.activity.bookmark.BookmarkFolderActivity.Companion.selectFolder
import com.base.browserwhite.ui.activity.webbrowser.WebBrowserActivity
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.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_NAV_SP_KEY
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.base.browserwhite.utils.ToastUtils.toast
import com.google.gson.Gson import com.google.gson.Gson
...@@ -46,6 +48,12 @@ class BookmarkActivity : BaseActivity<ActivityBookmarkBinding>() { ...@@ -46,6 +48,12 @@ class BookmarkActivity : BaseActivity<ActivityBookmarkBinding>() {
showBookmarkMoreDialog( showBookmarkMoreDialog(
view, view,
bean.isFolder, bean.isFolder,
//新开
openNewTab = {
startActivity(Intent(this, WebBrowserActivity::class.java).apply {
putExtra("url", bean.url)
})
},
//删除 //删除
deleteAction = { deleteAction = {
if (bean.isFolder) {//书签目录 if (bean.isFolder) {//书签目录
...@@ -74,6 +82,10 @@ class BookmarkActivity : BaseActivity<ActivityBookmarkBinding>() { ...@@ -74,6 +82,10 @@ class BookmarkActivity : BaseActivity<ActivityBookmarkBinding>() {
BookmarkFolderEditActivity.editFolder = bean BookmarkFolderEditActivity.editFolder = bean
launcher.launch(Intent(Intent(this, BookmarkFolderEditActivity::class.java))) launcher.launch(Intent(Intent(this, BookmarkFolderEditActivity::class.java)))
}, },
//添加导航
addNavAction = {
SpBeanUtils.addSpBean(BOOKMARK_NAV_SP_KEY, bean)
},
//选择 //选择
selectAction = { selectAction = {
selectUI() selectUI()
...@@ -104,6 +116,7 @@ class BookmarkActivity : BaseActivity<ActivityBookmarkBinding>() { ...@@ -104,6 +116,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.currentFolderId = 0
bookmarkAdapter.submitList(bookmarkList.filter { it.folderId == bookmarkAdapter.currentFolderId }) bookmarkAdapter.submitList(bookmarkList.filter { it.folderId == bookmarkAdapter.currentFolderId })
} }
...@@ -147,18 +160,26 @@ class BookmarkActivity : BaseActivity<ActivityBookmarkBinding>() { ...@@ -147,18 +160,26 @@ class BookmarkActivity : BaseActivity<ActivityBookmarkBinding>() {
} }
binding.tvCancel.setOnClickListener { noSelectUI() } binding.tvCancel.setOnClickListener { noSelectUI() }
binding.llRemoveFolder.setOnClickListener { binding.llRemoveFolder.setOnClickListener {
val select = bookmarkAdapter.items.filter { it.isSelect } val selectList = bookmarkAdapter.items.filter { it.isSelect }
if (select.isEmpty()) { if (selectList.isEmpty()) {
toast("Please select a bookmark to move") toast("Please select a bookmark to move")
return@setOnClickListener return@setOnClickListener
} }
if (select.any { it.isFolder }) { if (selectList.any { it.isFolder }) {
toast("Folder cannot be moved") toast("Folder cannot be moved")
return@setOnClickListener return@setOnClickListener
} }
selectFolder = select.first().folder selectFolder = selectList.first().folder
launcher.launch(Intent(this, BookmarkFolderActivity::class.java)) { launcher.launch(Intent(this, BookmarkFolderActivity::class.java)) {
val json = it.data?.extras?.getString("Folder")
val folder = Gson().fromJson(json, BookmarkBean::class.java)
selectList.forEach { bookmarkBean ->
bookmarkBean.folderId = folder.id
bookmarkBean.folder = folder.name
SpBeanUtils.editSpBean(BOOKMARK_SP_KEY, bookmarkBean)
}
initBookmarkData()
noSelectUI()
} }
} }
} }
......
...@@ -2,6 +2,7 @@ package com.base.browserwhite.ui.adapter ...@@ -2,6 +2,7 @@ package com.base.browserwhite.ui.adapter
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.graphics.Color import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
...@@ -56,10 +57,20 @@ class WebsiteAdapter(val uiType: Int = 0, val click: (bean: WebSiteBean) -> Unit ...@@ -56,10 +57,20 @@ class WebsiteAdapter(val uiType: Int = 0, val click: (bean: WebSiteBean) -> Unit
if (bean.name == "Increase") { if (bean.name == "Increase") {
binding.ivAdd.visibility = View.VISIBLE binding.ivAdd.visibility = View.VISIBLE
binding.ivIcon.visibility = View.GONE binding.ivIcon.visibility = View.GONE
binding.tvBookmarkNav.visibility = View.GONE
binding.ivAdd.setImageResource(bean.localIcon) binding.ivAdd.setImageResource(bean.localIcon)
} else if (bean.isBookmarkNav) {
binding.ivAdd.visibility = View.GONE
binding.ivIcon.visibility = View.VISIBLE
binding.tvBookmarkNav.visibility = View.VISIBLE
binding.tvBookmarkNav.text = bean.name.first().toString()
Glide.with(context).load(ColorDrawable(bean.color)).into(binding.ivIcon)
binding.ivIcon.borderColor = ContextCompat.getColor(context, R.color.color_cbcdd7)
binding.ivIcon.borderWidth = 1
} else { } else {
binding.ivIcon.visibility = View.VISIBLE binding.ivIcon.visibility = View.VISIBLE
binding.ivAdd.visibility = View.GONE binding.ivAdd.visibility = View.GONE
binding.tvBookmarkNav.visibility = View.GONE
val bordIconName = arrayOf("Ebay", "Bing", "Wikipedia", "Pinterest", "NBC News", "Shopee", "Drugs") val bordIconName = arrayOf("Ebay", "Bing", "Wikipedia", "Pinterest", "NBC News", "Shopee", "Drugs")
// LogEx.logDebug(TAG, bean.name) // LogEx.logDebug(TAG, bean.name)
if (bordIconName.contains(bean.name)) { if (bordIconName.contains(bean.name)) {
......
...@@ -12,6 +12,7 @@ import android.widget.Toast ...@@ -12,6 +12,7 @@ import android.widget.Toast
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import com.base.browserwhite.R import com.base.browserwhite.R
import com.base.browserwhite.bean.BookmarkBean
import com.base.browserwhite.bean.ConstObject import com.base.browserwhite.bean.ConstObject
import com.base.browserwhite.bean.ConstObject.APP_PROCESS import com.base.browserwhite.bean.ConstObject.APP_PROCESS
import com.base.browserwhite.bean.ConstObject.BAIDU import com.base.browserwhite.bean.ConstObject.BAIDU
...@@ -54,9 +55,12 @@ import com.base.browserwhite.utils.LinkSearchUtils.getSpSearchAction ...@@ -54,9 +55,12 @@ import com.base.browserwhite.utils.LinkSearchUtils.getSpSearchAction
import com.base.browserwhite.utils.LinkSearchUtils.getYahooSearch import com.base.browserwhite.utils.LinkSearchUtils.getYahooSearch
import com.base.browserwhite.utils.LinkSearchUtils.getYandexSearch import com.base.browserwhite.utils.LinkSearchUtils.getYandexSearch
import com.base.browserwhite.utils.LogEx import com.base.browserwhite.utils.LogEx
import com.base.browserwhite.utils.SpBeanUtils
import com.base.browserwhite.utils.SpBeanUtils.BOOKMARK_NAV_SP_KEY
import com.chad.library.adapter4.QuickAdapterHelper import com.chad.library.adapter4.QuickAdapterHelper
import com.chad.library.adapter4.loadState.LoadState import com.chad.library.adapter4.loadState.LoadState
import com.chad.library.adapter4.loadState.trailing.TrailingLoadStateAdapter import com.chad.library.adapter4.loadState.trailing.TrailingLoadStateAdapter
import com.google.gson.Gson
class HomeFragment : BaseFragment<FragmentHomeBinding>() { class HomeFragment : BaseFragment<FragmentHomeBinding>() {
...@@ -227,10 +231,22 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() { ...@@ -227,10 +231,22 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
} }
val list = arrayListOf<WebSiteBean>() val list = arrayListOf<WebSiteBean>()
list.addAll(recommendWebSite) list.addAll(recommendWebSite)
//书签导航
SpBeanUtils.getSpBeanList(BOOKMARK_NAV_SP_KEY).forEach { json ->
val bean = Gson().fromJson(json, BookmarkBean::class.java)
list.add(WebSiteBean(name = bean.name, url = bean.url).apply {
isBookmarkNav = true
color = bean.color
})
}
//添加按钮
list.add(WebSiteBean(name = "Increase").apply { list.add(WebSiteBean(name = "Increase").apply {
localIcon = R.mipmap.increase localIcon = R.mipmap.increase
increase = true increase = true
}) })
headWebsiteAdapter = HeadWebsiteAdapter() headWebsiteAdapter = HeadWebsiteAdapter()
headWebsiteAdapter?.setItem(list, null) headWebsiteAdapter?.setItem(list, null)
headWebsiteAdapter?.let { headWebsiteAdapter?.let {
...@@ -331,7 +347,7 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() { ...@@ -331,7 +347,7 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
binding.flScan.setOnClickListener { binding.flScan.setOnClickListener {
requireContext().startActivity(Intent(requireContext(), ScanQRCActivity::class.java)) requireContext().startActivity(Intent(requireContext(), ScanQRCActivity::class.java))
} }
binding.tvName.setOnClickListener { binding.ivName.setOnClickListener {
// if (System.currentTimeMillis() - lastClickTime > 5 * 1000 && i != 0) { // if (System.currentTimeMillis() - lastClickTime > 5 * 1000 && i != 0) {
// lastClickTime = 0 // lastClickTime = 0
// i = 0 // i = 0
......
...@@ -14,8 +14,10 @@ object BookmarkDialog { ...@@ -14,8 +14,10 @@ object BookmarkDialog {
fun Context.showBookmarkMoreDialog( fun Context.showBookmarkMoreDialog(
anchorView: View, anchorView: View,
isDir: Boolean, isDir: Boolean,
openNewTab: (() -> Unit)? = null,
deleteAction: (() -> Unit)? = null, deleteAction: (() -> Unit)? = null,
editAction: (() -> Unit)? = null, editAction: (() -> Unit)? = null,
addNavAction: (() -> Unit)? = null,
selectAction: (() -> Unit)? = null, selectAction: (() -> Unit)? = null,
) { ) {
val binding = DialogBookmarkMoreBinding.inflate(LayoutInflater.from(this)) val binding = DialogBookmarkMoreBinding.inflate(LayoutInflater.from(this))
...@@ -49,7 +51,10 @@ object BookmarkDialog { ...@@ -49,7 +51,10 @@ object BookmarkDialog {
binding.vAddDesktop.visibility = View.GONE binding.vAddDesktop.visibility = View.GONE
} }
binding.llOpenNewTab.setOnClickListener { } binding.llOpenNewTab.setOnClickListener {
dialog.dismiss()
openNewTab?.invoke()
}
binding.llDelete.setOnClickListener { binding.llDelete.setOnClickListener {
dialog.dismiss() dialog.dismiss()
deleteAction?.invoke() deleteAction?.invoke()
...@@ -58,7 +63,10 @@ object BookmarkDialog { ...@@ -58,7 +63,10 @@ object BookmarkDialog {
dialog.dismiss() dialog.dismiss()
editAction?.invoke() editAction?.invoke()
} }
binding.llAddNavigation.setOnClickListener { } binding.llAddNavigation.setOnClickListener {
dialog.dismiss()
addNavAction?.invoke()
}
binding.llAddDesktop.setOnClickListener { } binding.llAddDesktop.setOnClickListener { }
binding.llSelect.setOnClickListener { binding.llSelect.setOnClickListener {
dialog.dismiss() dialog.dismiss()
......
...@@ -7,6 +7,7 @@ object SpBeanUtils { ...@@ -7,6 +7,7 @@ object SpBeanUtils {
const val BOOKMARK_SP_KEY = "bookmark_sp_key"//书签 const val BOOKMARK_SP_KEY = "bookmark_sp_key"//书签
const val BOOKMARK_NAV_SP_KEY = "bookmark_nav_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> {
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
tools:ignore="ContentDescription"> tools:ignore="ContentDescription">
<ImageView <ImageView
android:id="@+id/tv_name" android:id="@+id/iv_name"
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"
...@@ -38,9 +38,9 @@ ...@@ -38,9 +38,9 @@
android:layout_height="36dp" android:layout_height="36dp"
android:layout_marginEnd="16dp" android:layout_marginEnd="16dp"
android:background="@drawable/bg_e7eef6_18" android:background="@drawable/bg_e7eef6_18"
app:layout_constraintBottom_toBottomOf="@id/tv_name" app:layout_constraintBottom_toBottomOf="@id/iv_name"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/tv_name"> app:layout_constraintTop_toTopOf="@id/iv_name">
<LinearLayout <LinearLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"
......
...@@ -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_opeartion" app:layout_constraintEnd_toStartOf="@id/fl_operation"
app:layout_constraintStart_toEndOf="@id/card" app:layout_constraintStart_toEndOf="@id/card"
app:layout_constraintTop_toTopOf="@id/card"> app:layout_constraintTop_toTopOf="@id/card">
......
...@@ -32,6 +32,17 @@ ...@@ -32,6 +32,17 @@
android:visibility="gone" android:visibility="gone"
tools:ignore="ContentDescription" tools:ignore="ContentDescription"
tools:src="@mipmap/amazon" /> tools:src="@mipmap/amazon" />
<TextView
android:textSize="15sp"
android:textColor="@color/white"
android:id="@+id/tv_bookmark_nav"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:visibility="gone"
tools:ignore="ContentDescription"
tools:text="必" />
</FrameLayout> </FrameLayout>
......
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