Continue implementing copying multireddits.

This commit is contained in:
Docile-Alligator
2025-11-28 18:50:47 -05:00
parent b6ca992bcb
commit c12614bebe
5 changed files with 160 additions and 5 deletions

View File

@ -38,7 +38,9 @@
tools:replace="android:label">
<activity
android:name=".activities.CopyMultiRedditActivity"
android:exported="false" />
android:exported="false"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.Slidable" />
<activity
android:name=".activities.LoginChromeCustomTabActivity"
android:exported="true"

View File

@ -1,18 +1,40 @@
package ml.docilealligator.infinityforreddit.activities
import android.R.attr.checked
import android.content.SharedPreferences
import android.os.Bundle
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.text.input.TextFieldState
import androidx.compose.foundation.text.input.rememberTextFieldState
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.MaterialTheme.colorScheme
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.material3.TextFieldDefaults
import androidx.compose.material3.TopAppBar
import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import ml.docilealligator.infinityforreddit.Infinity
import ml.docilealligator.infinityforreddit.R
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper
import ml.docilealligator.infinityforreddit.customviews.compose.AppTheme
import ml.docilealligator.infinityforreddit.customviews.compose.CustomTextField
import ml.docilealligator.infinityforreddit.customviews.compose.LocalAppTheme
import ml.docilealligator.infinityforreddit.customviews.compose.SwitchRow
import retrofit2.Retrofit
import java.util.concurrent.Executor
import javax.inject.Inject
@ -47,21 +69,63 @@ class CopyMultiRedditActivity : BaseActivity() {
super.onCreate(savedInstanceState)
setContent {
val scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior()
val name = rememberTextFieldState()
val description = rememberTextFieldState()
var isPrivate by remember { mutableStateOf(true) }
AppTheme(customThemeWrapper.themeType) {
Scaffold(
topBar = {
TopAppBar(
colors = TopAppBarDefaults.topAppBarColors(
containerColor = MaterialTheme.colorScheme.primaryContainer,
titleContentColor = MaterialTheme.colorScheme.primary,
containerColor = Color(LocalAppTheme.current.colorPrimary),
titleContentColor = Color(LocalAppTheme.current.toolbarPrimaryTextAndIconColor),
),
title = {
Text("Small Top App Bar")
}
Text(stringResource(R.string.copy_multireddit_activity_label))
},
scrollBehavior = scrollBehavior
)
},
modifier = Modifier
.fillMaxSize()
.nestedScroll(scrollBehavior.nestedScrollConnection)
) { innerPadding ->
LazyColumn(
modifier = Modifier.padding(innerPadding)
) {
item {
CustomTextField(
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 16.dp)
.padding(top = 16.dp, bottom = 8.dp),
state = name,
placeholder = stringResource(R.string.multi_reddit_name_hint)
)
}
item {
CustomTextField(
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 16.dp)
.padding(top = 8.dp, bottom = 8.dp),
state = description,
placeholder = stringResource(R.string.multi_reddit_description_hint)
)
}
item {
SwitchRow(
checked = isPrivate,
title = stringResource(R.string.private_multi_reddit)
) {
isPrivate = it
}
}
}
}
}
}

View File

@ -0,0 +1,49 @@
package ml.docilealligator.infinityforreddit.customviews.compose
import android.R.attr.checked
import androidx.compose.foundation.clickable
import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Switch
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
import com.google.common.math.LinearTransformation.horizontal
@Composable
fun SwitchRow(
modifier: Modifier = Modifier,
checked: Boolean,
title: String,
subTitle: String? = null,
onCheckedChange: (Boolean) -> Unit
) {
Row(
modifier = modifier
.fillMaxWidth()
.clickable {
onCheckedChange(!checked);
}
.padding(horizontal = 16.dp, vertical = 8.dp),
verticalAlignment = Alignment.CenterVertically
) {
Text(
text = title,
color = Color(LocalAppTheme.current.primaryTextColor)
)
Spacer(modifier = Modifier.weight(1f))
Switch(
checked = checked,
onCheckedChange = onCheckedChange
)
}
}

View File

@ -0,0 +1,39 @@
package ml.docilealligator.infinityforreddit.customviews.compose
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.text.input.TextFieldLineLimits
import androidx.compose.foundation.text.input.TextFieldState
import androidx.compose.material3.OutlinedTextField
import androidx.compose.material3.OutlinedTextFieldDefaults
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
@Composable
fun CustomTextField(
modifier: Modifier = Modifier,
state: TextFieldState,
placeholder: String,
lineLimits: TextFieldLineLimits = TextFieldLineLimits.Default
) {
OutlinedTextField(
modifier = modifier,
state = state,
placeholder = {
Text(
text = placeholder,
color = Color(LocalAppTheme.current.secondaryTextColor)
)
},
lineLimits = lineLimits,
colors = OutlinedTextFieldDefaults.colors(
focusedTextColor = Color(LocalAppTheme.current.primaryTextColor),
unfocusedTextColor = Color(LocalAppTheme.current.primaryTextColor),
focusedBorderColor = Color(LocalAppTheme.current.primaryTextColor),
unfocusedBorderColor = Color(LocalAppTheme.current.secondaryTextColor),
cursorColor = Color(LocalAppTheme.current.colorPrimary)
)
)
}

View File

@ -47,6 +47,7 @@
<string name="subscription_activity_label">Subscription</string>
<string name="comment_filter_preference_activity_label">Comment Filter</string>
<string name="customize_comment_filter_activity_label">Customize Comment Filter</string>
<string name="copy_multireddit_activity_label">Copy Multireddit</string>
<string name="navigation_drawer_open">Open navigation drawer</string>
<string name="navigation_drawer_close">Close navigation drawer</string>