Commit ffc183d2 authored by wanglei's avatar wanglei

...

parent e65d4cf7
......@@ -25,9 +25,10 @@
android:roundIcon="@mipmap/logo"
android:supportsRtl="true"
android:theme="@style/Theme.BrowserWhite"
android:usesCleartextTraffic="true"
tools:targetApi="34">
<activity
android:name=".ui.activity.MainActivity"
android:name=".ui.activity.MainActivity"
android:exported="true"
android:launchMode="singleTask">
<intent-filter>
......
......@@ -10,9 +10,13 @@ import androidx.core.view.updatePadding
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentTransaction
import com.base.browserwhite.R
import com.base.browserwhite.bean.ConstObject
import com.base.browserwhite.bean.ConstObject.GOOGLE
import com.base.browserwhite.databinding.ActivityWebBrowserBinding
import com.base.browserwhite.ui.activity.BaseActivity
import com.base.browserwhite.ui.fragment.HomeFragment
import com.base.browserwhite.ui.fragment.WebViewFragment
import com.base.browserwhite.ui.views.DialogViews.showSearchEngineDialog
import com.base.browserwhite.utils.BarUtils
......@@ -23,6 +27,7 @@ class WebBrowserActivity : BaseActivity<ActivityWebBrowserBinding>() {
}
private val fragmentList = arrayListOf<Fragment>()
private var currentFragment: WebViewFragment? = null
private var searchAction: (context: String) -> String = HomeFragment.Companion::getBaiduSearch
override fun initView() {
BarUtils.setStatusBarLightMode(this, true)
......@@ -32,11 +37,45 @@ class WebBrowserActivity : BaseActivity<ActivityWebBrowserBinding>() {
val uri = intent.extras?.getString("url") ?: ""
binding.editWeb.setText(uri)
val searchEngine = intent.extras?.getString("searchEngine") ?: GOOGLE
when (searchEngine) {
GOOGLE -> {
binding.ivSearchEngine.setImageResource(R.mipmap.h_s_google)
searchAction = HomeFragment.Companion::getGoogleSearch
}
ConstObject.BING -> {
binding.ivSearchEngine.setImageResource(R.mipmap.h_s_bing)
searchAction = HomeFragment.Companion::getBingSearch
}
ConstObject.YAHOO -> {
binding.ivSearchEngine.setImageResource(R.mipmap.h_s_yahoo)
searchAction = HomeFragment.Companion::getYahooSearch
}
ConstObject.DUCKDUCKGO -> {
binding.ivSearchEngine.setImageResource(R.mipmap.h_s_xuckd)
searchAction = HomeFragment.Companion::getDuckDuckGoSearch
}
ConstObject.YANDEX -> {
binding.ivSearchEngine.setImageResource(R.mipmap.h_s_yandex)
searchAction = HomeFragment.Companion::getYandexSearch
}
ConstObject.BAIDU -> {
binding.ivSearchEngine.setImageResource(R.mipmap.h_s_baidu)
searchAction = HomeFragment.Companion::getBaiduSearch
}
}
addNewWebSite(uri)
}
private fun checkLeftRight() {
if (currentFragment?.canGoBack() == true) {
binding.ivLeft.setImageResource(R.mipmap.left_s)
......@@ -53,7 +92,7 @@ class WebBrowserActivity : BaseActivity<ActivityWebBrowserBinding>() {
override fun onEditorAction(v: TextView?, actionId: Int, event: KeyEvent?): Boolean {
if (actionId == EditorInfo.IME_ACTION_DONE) {
val url = v?.text.toString()
currentFragment?.loadWebView(url)
currentFragment?.loadWebView(searchAction(url))
return true; // 返回true表示事件已处理
}
return false
......@@ -84,6 +123,43 @@ class WebBrowserActivity : BaseActivity<ActivityWebBrowserBinding>() {
binding.ivHome.setOnClickListener {
finishToMain()
}
binding.flSearchEngine.setOnClickListener {
showSearchEngineDialog { website ->
when (website) {
ConstObject.GOOGLE -> {
binding.ivSearchEngine.setImageResource(R.mipmap.h_s_google)
searchAction = HomeFragment.Companion::getGoogleSearch
}
ConstObject.BING -> {
binding.ivSearchEngine.setImageResource(R.mipmap.h_s_bing)
searchAction = HomeFragment.Companion::getBingSearch
}
ConstObject.YAHOO -> {
binding.ivSearchEngine.setImageResource(R.mipmap.h_s_yahoo)
searchAction = HomeFragment.Companion::getYahooSearch
}
ConstObject.DUCKDUCKGO -> {
binding.ivSearchEngine.setImageResource(R.mipmap.h_s_xuckd)
searchAction = HomeFragment.Companion::getDuckDuckGoSearch
}
ConstObject.YANDEX -> {
binding.ivSearchEngine.setImageResource(R.mipmap.h_s_yandex)
searchAction = HomeFragment.Companion::getYandexSearch
}
ConstObject.BAIDU -> {
binding.ivSearchEngine.setImageResource(R.mipmap.h_s_baidu)
searchAction = HomeFragment.Companion::getBaiduSearch
}
}
}
}
}
private fun addNewWebSite(uri: String) {
......
......@@ -5,6 +5,12 @@ import android.view.KeyEvent
import android.view.inputmethod.EditorInfo.IME_ACTION_DONE
import android.widget.TextView
import com.base.browserwhite.R
import com.base.browserwhite.bean.ConstObject.BAIDU
import com.base.browserwhite.bean.ConstObject.BING
import com.base.browserwhite.bean.ConstObject.DUCKDUCKGO
import com.base.browserwhite.bean.ConstObject.GOOGLE
import com.base.browserwhite.bean.ConstObject.YAHOO
import com.base.browserwhite.bean.ConstObject.YANDEX
import com.base.browserwhite.bean.WebSiteBean
import com.base.browserwhite.bean.defaultValue
import com.base.browserwhite.bean.webSiteGroupBeanList
......@@ -15,12 +21,15 @@ import com.base.browserwhite.ui.activity.webbrowser.WebBrowserActivity
import com.base.browserwhite.ui.adapter.HeadWebsiteAdapter
import com.base.browserwhite.ui.adapter.HeaderAdapter
import com.base.browserwhite.ui.adapter.NewsAdapter
import com.base.browserwhite.ui.views.DialogViews.showSearchEngineDialog
import com.base.browserwhite.utils.AppPreferences
import com.base.browserwhite.utils.LogEx
import com.base.browserwhite.utils.NewsUtils.requestNews
import com.chad.library.adapter4.QuickAdapterHelper
import com.chad.library.adapter4.loadState.LoadState
import com.chad.library.adapter4.loadState.trailing.TrailingLoadStateAdapter
import java.net.URLEncoder
import java.nio.charset.StandardCharsets
class HomeFragment : BaseFragment<FragmentHomeBinding>() {
......@@ -35,6 +44,8 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
private lateinit var helper: QuickAdapterHelper
private var isLoading = false
private var headWebsiteAdapter: HeadWebsiteAdapter? = null
private var searchAction: (context: String) -> String = ::getBaiduSearch
private var searchEngine: String = GOOGLE
override fun setView() {
......@@ -128,41 +139,49 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
}
binding.flSearchEngine.setOnClickListener {
// requireContext().showSearchEngineDialog { website ->
// when (website) {
// GOOGLE -> {
// binding.ivSearchEngine.setImageResource(R.mipmap.h_s_google)
// }
//
// BING -> {
// binding.ivSearchEngine.setImageResource(R.mipmap.h_s_bing)
// }
//
// YAHOO -> {
// binding.ivSearchEngine.setImageResource(R.mipmap.h_s_yahoo)
// }
//
// DUCKDUCKGO -> {
// binding.ivSearchEngine.setImageResource(R.mipmap.h_s_xuckd)
// }
//
// YANDEX -> {
// binding.ivSearchEngine.setImageResource(R.mipmap.h_s_yandex)
// }
//
// BAIDU -> {
// binding.ivSearchEngine.setImageResource(R.mipmap.h_s_baidu)
// }
//
// }
// }
requireContext().showSearchEngineDialog { website ->
searchEngine = website
when (website) {
GOOGLE -> {
binding.ivSearchEngine.setImageResource(R.mipmap.h_s_google)
searchAction = ::getGoogleSearch
}
BING -> {
binding.ivSearchEngine.setImageResource(R.mipmap.h_s_bing)
searchAction = ::getBingSearch
}
YAHOO -> {
binding.ivSearchEngine.setImageResource(R.mipmap.h_s_yahoo)
searchAction = ::getYahooSearch
}
DUCKDUCKGO -> {
binding.ivSearchEngine.setImageResource(R.mipmap.h_s_xuckd)
searchAction = ::getDuckDuckGoSearch
}
YANDEX -> {
binding.ivSearchEngine.setImageResource(R.mipmap.h_s_yandex)
searchAction = ::getYandexSearch
}
BAIDU -> {
binding.ivSearchEngine.setImageResource(R.mipmap.h_s_baidu)
searchAction = ::getBaiduSearch
}
}
}
}
binding.editWeb.setOnEditorActionListener(object : TextView.OnEditorActionListener {
override fun onEditorAction(v: TextView?, actionId: Int, event: KeyEvent?): Boolean {
if (actionId == IME_ACTION_DONE) {
requireActivity().startActivity(Intent(requireContext(), WebBrowserActivity::class.java).apply {
putExtra("url", getGoogleSearch(v?.text.toString()))
putExtra("searchEngine", searchEngine)
putExtra("url", searchAction(v?.text.toString()))
})
return true; // 返回true表示事件已处理
}
......@@ -181,7 +200,8 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
companion object {
fun getGoogleSearch(content: String): String {
val base = "https://www.google.com/"
val search = "search?q=${content}&oq=${content}"
val encodedQuery = URLEncoder.encode(content, StandardCharsets.UTF_8.toString())
val search = "search?q=${encodedQuery}&oq=${encodedQuery}"
return "$base$search"
}
......@@ -193,6 +213,27 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
}
fun getYahooSearch(content: String): String {
val encodedQuery = URLEncoder.encode(content, StandardCharsets.UTF_8.toString())
return "https://search.yahoo.com/search?p=$encodedQuery"
}
fun getDuckDuckGoSearch(content: String): String {
val encodedQuery = URLEncoder.encode(content, StandardCharsets.UTF_8.toString())
return "https://www.duckduckgo.com/?q=encodedQuery"
}
fun getYandexSearch(content: String): String {
val encodedQuery = URLEncoder.encode(content, StandardCharsets.UTF_8.toString())
return "https://yandex.com/search/?text=$encodedQuery"
}
fun getBaiduSearch(content: String): String {
val encodedQuery = URLEncoder.encode(content, StandardCharsets.UTF_8.toString())
return "https://www.baidu.com/s?wd=$encodedQuery"
}
}
......
......@@ -15,7 +15,10 @@ import android.webkit.WebSettings
import android.webkit.WebStorage
import android.webkit.WebView
import android.webkit.WebViewClient
import com.base.browserwhite.R
import com.base.browserwhite.bean.ConstObject
import com.base.browserwhite.databinding.FragmentWebViewBinding
import com.base.browserwhite.ui.views.DialogViews.showSearchEngineDialog
import com.base.browserwhite.utils.LogEx
import kotlinx.coroutines.Job
......@@ -23,6 +26,7 @@ class WebViewFragment(val url: String) : BaseFragment<FragmentWebViewBinding>()
private val TAG = "WebViewFragment"
private var job: Job? = null
private var searchAction: (context: String) -> String = HomeFragment.Companion::getBaiduSearch
override val binding: FragmentWebViewBinding by lazy {
FragmentWebViewBinding.inflate(layoutInflater)
......@@ -52,6 +56,7 @@ class WebViewFragment(val url: String) : BaseFragment<FragmentWebViewBinding>()
}
fun loadWebView(loadUrl: String) {
binding.llError.visibility = View.GONE
binding.webView.visibility = View.VISIBLE
binding.webView.loadUrl(loadUrl)
}
......@@ -140,7 +145,7 @@ class WebViewFragment(val url: String) : BaseFragment<FragmentWebViewBinding>()
}
override fun onReceivedError(view: WebView?, request: WebResourceRequest?, error: WebResourceError?) {
LogEx.logDebug(TAG, "onReceivedError")
LogEx.logDebug(TAG, "onReceivedError ${error?.description}")
super.onReceivedError(view, request, error)
job?.cancel()
binding.webView.visibility = View.GONE
......
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