diff --git a/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.kt b/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.kt index 1e3b4d36f..b9806fbd6 100644 --- a/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.kt +++ b/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.kt @@ -28,11 +28,9 @@ import com.google.accompanist.permissions.ExperimentalPermissionsApi import com.google.accompanist.permissions.rememberMultiplePermissionsState import com.google.accompanist.systemuicontroller.rememberSystemUiController import com.stardust.app.permission.DrawOverlaysPermission -import com.stardust.util.IntentUtil import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch import org.autojs.autojs.Pref -import org.autojs.autoxjs.R import org.autojs.autojs.autojs.AutoJs import org.autojs.autojs.external.foreground.ForegroundService import org.autojs.autojs.timing.TimedTaskScheduler @@ -44,12 +42,14 @@ import org.autojs.autojs.ui.compose.widget.MyIcon import org.autojs.autojs.ui.compose.widget.SearchBox2 import org.autojs.autojs.ui.explorer.ExplorerViewKt import org.autojs.autojs.ui.floating.FloatyWindowManger -import org.autojs.autojs.ui.log.LogActivityKt +import org.autojs.autojs.ui.main.components.DocumentPageMenuButton +import org.autojs.autojs.ui.main.components.LogButton import org.autojs.autojs.ui.main.drawer.DrawerPage import org.autojs.autojs.ui.main.scripts.ScriptListFragment import org.autojs.autojs.ui.main.task.TaskManagerFragmentKt import org.autojs.autojs.ui.main.web.WebViewFragment import org.autojs.autojs.ui.widget.fillMaxSize +import org.autojs.autoxjs.R data class BottomNavigationItem(val icon: Int, val label: String) @@ -370,12 +370,7 @@ private fun TopBar( }) ) } - IconButton(onClick = { LogActivityKt.start(context) }) { - Icon( - painter = painterResource(id = R.drawable.ic_logcat), - contentDescription = stringResource(id = R.string.text_logcat) - ) - } + LogButton() when (currentPage) { 0 -> { var expanded by remember { @@ -395,6 +390,7 @@ private fun TopBar( ) } } + 1 -> { IconButton(onClick = { AutoJs.getInstance().scriptEngineService.stopAll() }) { Icon( @@ -403,17 +399,9 @@ private fun TopBar( ) } } + 2 -> { - IconButton(onClick = { - webViewFragment.swipeRefreshWebView.webView.url?.let { - IntentUtil.browse(context, it) - } - }) { - Icon( - painterResource(id = R.drawable.ic_external_link), - contentDescription = stringResource(id = R.string.text_browser_open) - ) - } + DocumentPageMenuButton { webViewFragment.swipeRefreshWebView.webView } } } diff --git a/app/src/main/java/org/autojs/autojs/ui/main/components/main_ui.kt b/app/src/main/java/org/autojs/autojs/ui/main/components/main_ui.kt new file mode 100644 index 000000000..89ea441d0 --- /dev/null +++ b/app/src/main/java/org/autojs/autojs/ui/main/components/main_ui.kt @@ -0,0 +1,73 @@ +package org.autojs.autojs.ui.main.components + +import android.webkit.WebView +import androidx.compose.foundation.layout.Box +import androidx.compose.material.DropdownMenu +import androidx.compose.material.DropdownMenuItem +import androidx.compose.material.Icon +import androidx.compose.material.IconButton +import androidx.compose.material.Text +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.MoreVert +import androidx.compose.material.icons.filled.Refresh +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import com.stardust.util.IntentUtil +import org.autojs.autojs.ui.log.LogActivityKt +import org.autojs.autoxjs.R + +//主界面日志按钮 +@Composable +fun LogButton() { + val context = LocalContext.current + IconButton(onClick = { LogActivityKt.start(context) }) { + Icon( + painter = painterResource(id = R.drawable.ic_logcat), + contentDescription = stringResource(id = R.string.text_logcat) + ) + } +} + +//文档界面菜单按钮 +@Composable +fun DocumentPageMenuButton(getWebView:()-> WebView) { + val context = LocalContext.current + Box { + var expanded by remember { mutableStateOf(false) } + fun dismissMenu() { + expanded = false + } + IconButton({ expanded = true }) { + Icon(imageVector = Icons.Default.MoreVert, contentDescription = null) + } + DropdownMenu( + expanded = expanded, + onDismissRequest = { expanded = false }) { + DropdownMenuItem(onClick = { + dismissMenu() + getWebView().url?.let { + IntentUtil.browse(context, it) + } + }) { + Icon( + painterResource(id = R.drawable.ic_external_link), + contentDescription = null + ) + Text(text = stringResource(id = R.string.text_browser_open)) + } + DropdownMenuItem(onClick = { + dismissMenu() + getWebView().reload() + }) { + Icon(Icons.Default.Refresh, contentDescription = null) + Text(text = "刷新") + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/org/autojs/autojs/ui/widget/SwipeRefreshWebView.kt b/app/src/main/java/org/autojs/autojs/ui/widget/SwipeRefreshWebView.kt index 6e7bee2b1..ddd7db8c4 100644 --- a/app/src/main/java/org/autojs/autojs/ui/widget/SwipeRefreshWebView.kt +++ b/app/src/main/java/org/autojs/autojs/ui/widget/SwipeRefreshWebView.kt @@ -2,7 +2,6 @@ package org.autojs.autojs.ui.widget import android.annotation.SuppressLint import android.content.Context -import android.graphics.Bitmap import android.os.Build import android.util.AttributeSet import android.view.KeyEvent @@ -13,28 +12,18 @@ import org.autojs.autojs.theme.widget.ThemeColorSwipeRefreshLayout class SwipeRefreshWebView : ThemeColorSwipeRefreshLayout { - val webView = NestedWebView(context) + val webView = WebView(context) - constructor(context: Context) : super(context) { - init() - } + constructor(context: Context) : super(context) - constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) { - init() - } + constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) - fun init() { - setOnRefreshListener { - webView.reload() - postDelayed({ - isRefreshing = false - }, 2000) - } + init { + isEnabled = false webView.apply { fillMaxSize() setup() } - addView(webView) } @@ -81,37 +70,12 @@ class SwipeRefreshWebView : ThemeColorSwipeRefreshLayout { mixedContentMode = WebSettings.MIXED_CONTENT_ALWAYS_ALLOW; } - webViewClient = MyWebViewClient( - onPageFinished = { + webViewClient = object : WebViewClient() { + override fun onPageFinished(view: WebView?, url: String?) { + super.onPageFinished(view, url) isRefreshing = false } - ) -// webChromeClient = MyWebChromeClient() + } } } - -open class MyWebViewClient(private val onPageFinished: () -> Unit) : WebViewClient() { - - - override fun onPageStarted( - view: WebView, - url: String, - favicon: Bitmap? - ) { - super.onPageStarted(view, url, favicon) - } - - override fun onPageFinished(view: WebView, url: String) { - super.onPageFinished(view, url) - onPageFinished() - } - - override fun shouldOverrideUrlLoading( - view: WebView, - request: android.webkit.WebResourceRequest - ): Boolean { - return shouldOverrideUrlLoading(view, request.url.toString()) - } - -} \ No newline at end of file