Skip to content

Commit

Permalink
move homepage to standalone activity
Browse files Browse the repository at this point in the history
  • Loading branch information
wxxsfxyzm committed Jan 31, 2025
1 parent c77fbdb commit 744592f
Show file tree
Hide file tree
Showing 10 changed files with 132 additions and 53 deletions.
6 changes: 6 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission
android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
Expand Down Expand Up @@ -36,6 +37,10 @@
</intent-filter>
</activity>

<activity
android:name="com.rosan.installer.ui.activity.AboutPageActivity"
android:exported="false" />

<activity
android:name="com.rosan.installer.ui.activity.InstallerActivity"
android:excludeFromRecents="true"
Expand All @@ -54,6 +59,7 @@

<category android:name="android.intent.category.DEFAULT" />

<data android:host="${applicationId}.fileprovider" />
<data android:scheme="content" />
<data android:scheme="file" />
<data android:mimeType="application/vnd.android.package-archive" />
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.rosan.installer.ui.activity

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.Surface
import androidx.compose.ui.Modifier
import com.rosan.installer.ui.page.settings.home.HomePage
import com.rosan.installer.ui.theme.InstallerTheme
import org.koin.core.component.KoinComponent

class AboutPageActivity : ComponentActivity(), KoinComponent {
override fun onCreate(savedInstanceState: Bundle?) {
enableEdgeToEdge()
super.onCreate(savedInstanceState)
setContent {
// A surface based on material design theme.
InstallerTheme {
Surface(
modifier = Modifier
.fillMaxSize()
) {
// AgreementDialog()

HomePage()
}
}
}
}
}
Original file line number Diff line number Diff line change
@@ -1,19 +1,16 @@
package com.rosan.installer.ui.page.settings

import androidx.compose.animation.AnimatedContentTransitionScope
import androidx.compose.animation.ExperimentalAnimationApi
import androidx.compose.runtime.Composable
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.navigation.NavType
import androidx.navigation.compose.rememberNavController
import androidx.navigation.navArgument
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
import androidx.navigation.navArgument
import com.rosan.installer.ui.page.settings.config.apply.ApplyPage
import com.rosan.installer.ui.page.settings.config.edit.EditPage
import com.rosan.installer.ui.page.settings.main.MainPage

@OptIn(ExperimentalAnimationApi::class, ExperimentalComposeUiApi::class)
@Composable
fun SettingsPage() {
val navController = rememberNavController()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,29 @@
package com.rosan.installer.ui.page.settings.home

import android.content.Context
import android.content.Intent
import android.net.Uri
import androidx.compose.foundation.Image
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.material3.*
import androidx.compose.material3.CardColors
import androidx.compose.material3.CardDefaults
import androidx.compose.material3.ElevatedCard
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.LocalContentColor
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.ProvideTextStyle
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.ui.Alignment
Expand All @@ -16,28 +32,22 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import androidx.core.content.ContextCompat
import androidx.navigation.NavController
import com.google.accompanist.drawablepainter.rememberDrawablePainter
import com.rosan.installer.R
import com.rosan.installer.build.Level
import com.rosan.installer.build.RsConfig
import com.rosan.installer.ui.theme.none

@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun HomePage(
navController: NavController,
windowInsets: WindowInsets
) {
fun HomePage() {
Scaffold(
modifier = Modifier
.windowInsetsPadding(windowInsets)
.fillMaxSize(),
contentWindowInsets = WindowInsets.none,
topBar = {
TopAppBar(
title = {
Text(text = stringResource(id = R.string.home))
Text(text = stringResource(id = R.string.about))
//Text(text = "About")
},
)
},
Expand All @@ -52,12 +62,12 @@ fun HomePage(
item {
StatusWidget()
}
/* item {
DonateWidget()
}
item {
DiscussWidget()
}*/
/* item {
DonateWidget()
}
item {
DiscussWidget()
}*/
}
}
}
Expand Down Expand Up @@ -111,20 +121,14 @@ fun StatusWidget() {
Box(modifier = Modifier.fillMaxWidth()) {
Text(
modifier = Modifier.align(Alignment.Center),
text = "$level [${RsConfig.versionName} (${RsConfig.versionCode})]",
text = "$level ${RsConfig.versionName} (${RsConfig.versionCode})",
style = MaterialTheme.typography.bodyMedium,
)
}
}
)
}

fun openUrl(context: Context, url: String) {
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context.startActivity(intent)
}

/*@Composable
fun DonateWidget() {
val context = LocalContext.current
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.rosan.installer.ui.page.settings.main

import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.layout.BoxWithConstraints
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
Expand All @@ -16,7 +15,6 @@ import androidx.compose.foundation.layout.wrapContentSize
import androidx.compose.foundation.pager.HorizontalPager
import androidx.compose.foundation.pager.rememberPagerState
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.twotone.Home
import androidx.compose.material.icons.twotone.RoomPreferences
import androidx.compose.material.icons.twotone.SettingsSuggest
import androidx.compose.material3.Icon
Expand All @@ -31,7 +29,6 @@ import androidx.compose.ui.res.stringResource
import androidx.navigation.NavController
import com.rosan.installer.R
import com.rosan.installer.ui.page.settings.config.all.AllPage
import com.rosan.installer.ui.page.settings.home.HomePage
import com.rosan.installer.ui.page.settings.preferred.PreferredPage
import com.rosan.installer.ui.theme.exclude
import kotlinx.coroutines.DelicateCoroutinesApi
Expand All @@ -43,12 +40,12 @@ import kotlinx.coroutines.launch
@Composable
fun MainPage(navController: NavController) {
val data = arrayOf(
NavigationData(
icon = Icons.TwoTone.Home,
label = stringResource(R.string.home)
) {
HomePage(navController, it)
},
/* NavigationData(
icon = Icons.TwoTone.Home,
label = stringResource(R.string.home)
) {
HomePage(it)
},*/
NavigationData(
icon = Icons.TwoTone.RoomPreferences,
label = stringResource(R.string.config)
Expand All @@ -59,7 +56,7 @@ fun MainPage(navController: NavController) {
icon = Icons.TwoTone.SettingsSuggest,
label = stringResource(R.string.preferred)
) {
PreferredPage(navController, it)
PreferredPage(it)
}
)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
package com.rosan.installer.ui.page.settings.preferred

import android.content.Intent
import android.os.VibrationEffect
import android.os.Vibrator
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.focusable
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.WindowInsets
Expand All @@ -12,6 +16,7 @@ import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.selection.SelectionContainer
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Info
import androidx.compose.material.icons.twotone.ClearAll
import androidx.compose.material.icons.twotone.Downloading
import androidx.compose.material.icons.twotone.Favorite
Expand All @@ -21,6 +26,7 @@ import androidx.compose.material.icons.twotone.Terminal
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.ListItem
import androidx.compose.material3.LocalContentColor
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
Expand All @@ -46,11 +52,11 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.navigation.NavController
import com.rosan.installer.R
import com.rosan.installer.data.app.model.impl.DSRepoImpl
import com.rosan.installer.data.settings.model.room.entity.ConfigEntity
import com.rosan.installer.data.settings.util.ConfigUtil
import com.rosan.installer.ui.activity.AboutPageActivity
import com.rosan.installer.ui.theme.none
import com.rosan.installer.ui.widget.setting.BaseWidget
import com.rosan.installer.ui.widget.setting.DropDownMenuWidget
Expand All @@ -64,10 +70,11 @@ import java.io.File
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun PreferredPage(
navController: NavController,
windowInsets: WindowInsets,
viewModel: PreferredViewModel = koinViewModel()
) {
val context = LocalContext.current

LaunchedEffect(true) {
viewModel.dispatch(PreferredViewAction.Init)
}
Expand Down Expand Up @@ -98,13 +105,22 @@ fun PreferredPage(
item { DataAuthorizerWidget(viewModel) }
item { DataCustomizeAuthorizerWidget(viewModel) }
item { DataInstallModeWidget(viewModel) }
item { LabelWidget(label = stringResource(id = R.string.basic)) }
item { LabelWidget(stringResource(R.string.basic)) }
item { DefaultInstaller(snackBarHostState, true) }
item { DefaultInstaller(snackBarHostState, false) }
item { ClearCache() }
// item { LabelWidget(label = stringResource(id = R.string.more)) }
// item { UserTerms() }
// item { PrivacyPolicy() }
item { LabelWidget(stringResource(R.string.about)) }
item {
SettingsAboutItem(
onClick = {
val intent = Intent(context, AboutPageActivity::class.java)
context.startActivity(intent)
}
)
}
}
}
}
Expand Down Expand Up @@ -335,3 +351,26 @@ fun PrivacyPolicy() {
}
) {}
}*/

@Composable
fun SettingsAboutItem(
onClick: () -> Unit
) {
val context = LocalContext.current
val vibrator = context.getSystemService(Vibrator::class.java)
ListItem(
leadingContent = {
Icon(
imageVector = Icons.Default.Info,
contentDescription = null,
modifier = Modifier
)
},
headlineContent = { Text(text = stringResource(R.string.about)) },
supportingContent = { Text(text = stringResource(R.string.about_detail)) },
modifier = Modifier.clickable {
onClick()
vibrator?.vibrate(VibrationEffect.createPredefined(VibrationEffect.EFFECT_CLICK))
}
)
}
4 changes: 3 additions & 1 deletion app/src/main/res/values-zh-rCN/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
<string name="config">配置</string>
<string name="app">应用</string>
<string name="preferred">设置</string>
<string name="about">关于</string>
<string name="about_detail">关于 InstallerX</string>

<string name="stable">正式版</string>
<string name="preview">预览版</string>
Expand Down Expand Up @@ -52,7 +54,7 @@

<string name="delete_success">删除成功</string>

<string name="loading">加载中...</string>
<string name="loading">加载中</string>
<string name="empty_configs">没有配置</string>
<string name="filter">过滤</string>
<string name="order">排序</string>
Expand Down
Loading

0 comments on commit 744592f

Please sign in to comment.