diff --git a/app/build.gradle.kts b/app/build.gradle.kts index cbaf1c40..e20f3a2a 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -45,6 +45,7 @@ android { buildFeatures { viewBinding = true + //compose = true } packagingOptions { @@ -63,6 +64,7 @@ android { tasks.withType { kotlinOptions { jvmTarget = "1.8" + //useIR = true } } @@ -85,6 +87,7 @@ fun getLanguages(): String { dependencies { + //val composeVersion = "1.0.0-alpha12" implementation(project(":core-presentation")) implementation(project(":core-ui")) @@ -108,6 +111,17 @@ dependencies { implementation("androidx.preference:preference-ktx:1.1.1") implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0") + + // Compose +// implementation("androidx.compose.ui:ui:$composeVersion") +// implementation("androidx.compose.ui:ui-tooling:$composeVersion") +// implementation("androidx.compose.foundation:foundation:$composeVersion") +// implementation("androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha02") +// implementation("androidx.compose.material:material:$composeVersion") +// implementation("androidx.compose.material:material-icons-core:$composeVersion") +// implementation("androidx.compose.material:material-icons-extended:$composeVersion") +// implementation("androidx.compose.runtime:runtime-livedata:$composeVersion") + // Appearance implementation("com.github.madrapps:pikolo:2.0.1") implementation("com.google.android.material:material:1.3.0") diff --git a/app/src/main/java/com/vanced/manager/model/DataModel.kt b/app/src/main/java/com/vanced/manager/model/DataModel.kt index f2ce944f..d1b6d94c 100644 --- a/app/src/main/java/com/vanced/manager/model/DataModel.kt +++ b/app/src/main/java/com/vanced/manager/model/DataModel.kt @@ -17,7 +17,7 @@ open class DataModel( lifecycleOwner: LifecycleOwner, val appPkg: String, val appName: String, - val appIcon: Drawable?, + val appIcon: Drawable? ) { private val versionCode = MutableLiveData() diff --git a/app/src/main/java/com/vanced/manager/model/LinkModel.kt b/app/src/main/java/com/vanced/manager/model/LinkModel.kt index b342fd4d..3c370ffa 100644 --- a/app/src/main/java/com/vanced/manager/model/LinkModel.kt +++ b/app/src/main/java/com/vanced/manager/model/LinkModel.kt @@ -4,5 +4,5 @@ import android.graphics.drawable.Drawable data class LinkModel( val linkIcon: Drawable?, - val linkUrl: String, + val linkUrl: String ) \ No newline at end of file diff --git a/app/src/main/java/com/vanced/manager/ui/compose/Colors.kt b/app/src/main/java/com/vanced/manager/ui/compose/Colors.kt new file mode 100644 index 00000000..a60c9bfe --- /dev/null +++ b/app/src/main/java/com/vanced/manager/ui/compose/Colors.kt @@ -0,0 +1,2 @@ +package com.vanced.manager.ui.compose + diff --git a/app/src/main/java/com/vanced/manager/ui/compose/PreferenceViews.kt b/app/src/main/java/com/vanced/manager/ui/compose/PreferenceViews.kt new file mode 100644 index 00000000..c0eb5dbc --- /dev/null +++ b/app/src/main/java/com/vanced/manager/ui/compose/PreferenceViews.kt @@ -0,0 +1,107 @@ +package com.vanced.manager.ui.compose + +//import androidx.compose.foundation.clickable +//import androidx.compose.foundation.layout.Column +//import androidx.compose.foundation.layout.ColumnScope +//import androidx.compose.foundation.layout.padding +//import androidx.compose.material.Switch +//import androidx.compose.material.Text +//import androidx.compose.runtime.* +//import androidx.compose.ui.Modifier +//import androidx.compose.ui.graphics.Color +//import androidx.compose.ui.platform.LocalContext +//import androidx.compose.ui.tooling.preview.Preview +//import androidx.compose.ui.unit.dp +//import androidx.compose.ui.unit.em +//import androidx.compose.ui.unit.sp +//import androidx.constraintlayout.compose.ConstraintLayout +//import androidx.core.content.edit +//import androidx.preference.PreferenceManager +// +//@Composable +//@Preview +//inline fun PreferenceCategory( +// categoryTitle: String, +// content: @Composable ColumnScope.() -> Unit +//) { +// Column { +// Text( +// categoryTitle, +// letterSpacing = 0.15.em, +// color = Color(LocalContext.current.accentColor) +// ) +// content() +// } +//} +// +// +//@Composable +//@Preview +//inline fun SwitchPreference( +// preferenceTitle: String, +// preferenceDescription: String? = null, +// preferenceKey: String, +// defValue: Boolean = true, +// crossinline onCheckedChange: (Boolean) -> Unit = {} +//) { +// val prefs = PreferenceManager.getDefaultSharedPreferences(LocalContext.current) +// val isChecked = remember { mutableStateOf(prefs.getBoolean(preferenceKey, defValue)) } +// ConstraintLayout(modifier = Modifier.padding(12.dp, 4.dp).clickable { +// isChecked.value = !isChecked.value +// }) { +// val (title, description, switch) = createRefs() +// Text(preferenceTitle, fontSize = 16.sp, modifier = Modifier.constrainAs(title) { +// top.linkTo(parent.top) +// start.linkTo(parent.start) +// end.linkTo(switch.start, 4.dp) +// if (preferenceDescription != null) { +// bottom.linkTo(description.top) +// } else { +// bottom.linkTo(parent.bottom) +// } +// }) +// if (preferenceDescription != null) { +// Text(preferenceDescription, fontSize = 13.sp, modifier = Modifier.constrainAs(description) { +// top.linkTo(title.bottom) +// start.linkTo(parent.start) +// end.linkTo(switch.start, 8.dp) +// }) +// } +// Switch( +// isChecked.value, +// onCheckedChange = { +// prefs.edit { putBoolean(preferenceKey, it) } +// onCheckedChange(it) +// }, +// modifier = Modifier.clickable(false) {} +// ) +// } +//} +// +//@Composable +//@Preview +//fun Preference( +// preferenceTitle: String, +// preferenceDescription: String? = null, +// onClick: () -> Unit +//) { +// ConstraintLayout(modifier = Modifier.padding(12.dp, 4.dp).clickable(onClick = onClick)) { +// val (title, description, switch) = createRefs() +// Text(preferenceTitle, fontSize = 16.sp, modifier = Modifier.constrainAs(title) { +// top.linkTo(parent.top) +// start.linkTo(parent.start) +// end.linkTo(switch.start, 4.dp) +// if (preferenceDescription != null) { +// bottom.linkTo(description.top) +// } else { +// bottom.linkTo(parent.bottom) +// } +// }) +// if (preferenceDescription != null) { +// Text(preferenceDescription, fontSize = 13.sp, modifier = Modifier.constrainAs(description) { +// top.linkTo(title.bottom) +// }) +// } +// } +// +//} \ No newline at end of file diff --git a/app/src/main/java/com/vanced/manager/ui/compose/Theme.kt b/app/src/main/java/com/vanced/manager/ui/compose/Theme.kt new file mode 100644 index 00000000..6f873761 --- /dev/null +++ b/app/src/main/java/com/vanced/manager/ui/compose/Theme.kt @@ -0,0 +1,52 @@ +package com.vanced.manager.ui.compose + +//import android.content.Context +//import androidx.compose.foundation.isSystemInDarkTheme +//import androidx.compose.material.MaterialTheme +//import androidx.compose.material.darkColors +//import androidx.compose.material.lightColors +//import androidx.compose.runtime.Composable +//import androidx.compose.runtime.MutableState +//import androidx.compose.runtime.mutableStateOf +//import androidx.compose.runtime.remember +//import androidx.compose.ui.graphics.Color +//import androidx.compose.ui.platform.LocalContext +//import androidx.preference.PreferenceManager.getDefaultSharedPreferences +//import com.vanced.manager.utils.mutableAccentColor +// +//const val Dark = "Dark" +//const val SystemDefault = "System Default" +// +//const val defAccentColor: Int = -13732865 +// +//val Context.accentColor get() = mutableAccentColor.value ?: getDefaultSharedPreferences(this).getInt("manager_accent_color", defAccentColor) +// +//enum class Theme { +// DARK, LIGHT +//} +// +//val lightColors = lightColors( +// primary = Color(defAccentColor) +//) +// +//val darkColors = darkColors( +// primary = Color(defAccentColor) +//) +// +//fun Context.retrieveTheme(): Theme = when (getDefaultSharedPreferences(this).getString("manager_theme", SystemDefault)) { +// SystemDefault -> if (isSystemInDarkTheme()) Theme.DARK else Theme.LIGHT +// Dark -> Theme.DARK +// else -> Theme.LIGHT +//} +// +//val Context.isDarkTheme: Boolean +// get() = retrieveTheme() == Theme.DARK +// +//fun Context.ManagerTheme( +// content: @Composable () -> Unit +//) { +// MaterialTheme( +// colors = if (isDarkTheme) darkColors else lightColors, +// content = content +// ) +//} \ No newline at end of file diff --git a/app/src/main/java/com/vanced/manager/ui/core/PreferenceCategory.kt b/app/src/main/java/com/vanced/manager/ui/core/PreferenceCategory.kt index 76b82963..4c0f49ea 100644 --- a/app/src/main/java/com/vanced/manager/ui/core/PreferenceCategory.kt +++ b/app/src/main/java/com/vanced/manager/ui/core/PreferenceCategory.kt @@ -10,7 +10,7 @@ import com.vanced.manager.databinding.ViewPreferenceCategoryBinding class PreferenceCategory @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, - defStyle: Int = 0, + defStyle: Int = 0 ) : LinearLayout(context, attrs, defStyle) { private var _binding: ViewPreferenceCategoryBinding? = null diff --git a/app/src/main/java/com/vanced/manager/ui/fragments/SettingsFragmentCompose.kt b/app/src/main/java/com/vanced/manager/ui/fragments/SettingsFragmentCompose.kt new file mode 100644 index 00000000..401a92a3 --- /dev/null +++ b/app/src/main/java/com/vanced/manager/ui/fragments/SettingsFragmentCompose.kt @@ -0,0 +1,56 @@ +package com.vanced.manager.ui.fragments + +//import android.os.Bundle +//import android.view.LayoutInflater +//import android.view.View +//import android.view.ViewGroup +//import androidx.compose.foundation.lazy.LazyColumn +//import androidx.compose.ui.platform.ComposeView +//import androidx.fragment.app.Fragment +//import com.vanced.manager.R +//import com.vanced.manager.ui.compose.Preference +//import com.vanced.manager.ui.compose.PreferenceCategory +//import com.vanced.manager.ui.compose.SwitchPreference +// +//class SettingsFragmentCompose : Fragment() { +// +// override fun onCreateView( +// inflater: LayoutInflater, +// container: ViewGroup?, +// savedInstanceState: Bundle? +// ): View { +// return ComposeView(requireActivity()).apply { +// setContent { +// LazyColumn { +// // use `item` for separate elements like headers +// // and `items` for lists of identical elements +// item { +// PreferenceCategory( +// categoryTitle = getString(R.string.category_behaviour) +// ) { +// SwitchPreference( +// preferenceTitle = getString(R.string.use_custom_tabs), +// preferenceDescription = getString(R.string.link_custom_tabs), +// preferenceKey = "use_custom_tabs" +// ) +// } +// } +// item { +// PreferenceCategory( +// categoryTitle = getString(R.string.category_appearance) +// ) { +// Preference( +// preferenceTitle = "test", +// preferenceDescription = "test", +// ) {} +// Preference( +// preferenceTitle = "test" +// ) {} +// } +// } +// } +// } +// } +// } +// +//} \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index 39c40a8e..4b1157d0 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,6 +1,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { + val kotlin_version by extra("1.4.30") repositories { google() jcenter() diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index cef5a4c7..fe0f9bb6 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sat Jan 09 23:28:33 GET 2021 +#Fri Feb 19 17:21:09 GET 2021 distributionBase=GRADLE_USER_HOME +distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.2-bin.zip distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.8-bin.zip +zipStoreBase=GRADLE_USER_HOME diff --git a/library-network/src/main/AndroidManifest.xml b/library-network/src/main/AndroidManifest.xml index 492aa7ff..53d91c7c 100644 --- a/library-network/src/main/AndroidManifest.xml +++ b/library-network/src/main/AndroidManifest.xml @@ -2,5 +2,4 @@ package="com.vanced.manager.library.network"> - \ No newline at end of file