Skip to content

Commit

Permalink
20/02/2024.
Browse files Browse the repository at this point in the history
  • Loading branch information
youndon committed Feb 20, 2024
1 parent 194f802 commit e2e23db
Show file tree
Hide file tree
Showing 18 changed files with 240 additions and 131 deletions.
4 changes: 2 additions & 2 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ android {
namespace = "city.zouitel.jetnote"
defaultConfig {
applicationId = "city.zouitel.jetnote"
versionCode = libs.versions.codeVersion.get().toInt()
versionName = libs.versions.nameVersion.get()
versionCode = 654//libs.versions.code.v.get().toInt()
versionName = "654"//libs.versions.name.v.get()
}

buildTypes {
Expand Down
12 changes: 6 additions & 6 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
[versions]
agp = "8.2.1"
kotlin = "1.9.22"
compileSdkVersion = "34"
minSdkVersion = "26"
targetSdkVersion = "34"
codeVersion = "412"
nameVersion = "4.1.2"
composeVersion = "1.5.8"
compilesdk-v = "34"
minsdk-v = "26"
targetsdk-v = "34"
code-v = "412"
name-v = "4.1.2"
compose-v = "1.5.8"

#Android.
core-ktx = "1.12.0"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ class NotificationVM(): ViewModel() {
dateTime: Long,
title: String?,
message: String?,
uid:String?
uid: String?,
onReset: () -> Boolean
) {
val intent = Intent(context.applicationContext, Notification::class.java)
intent.putExtra(TITLE, title)
Expand All @@ -30,6 +31,7 @@ class NotificationVM(): ViewModel() {
intent,
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)

val alarmManager = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager

dateTime.let {
Expand All @@ -39,5 +41,7 @@ class NotificationVM(): ViewModel() {
pendingInt
)
}

if (onReset.invoke()) alarmManager.cancel(pendingInt)
}
}
2 changes: 1 addition & 1 deletion source/src/main/java/AndroidApplication.kt
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ class AndroidApplication: Plugin<Project> {
apply("org.jetbrains.kotlin.android")
}
extensions.configure<ApplicationExtension> {
defaultConfig.targetSdk = libs.findVersion("targetSdkVersion").get().requiredVersion.toInt()
defaultConfig.targetSdk = libs.findVersion("targetsdk-v").get().requiredVersion.toInt()

configureAndroidApplication(this)
configureAndroidCompose(this)
Expand Down
2 changes: 1 addition & 1 deletion source/src/main/java/city/zouitel/source/androidCompose.kt
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ internal fun Project.configureAndroidCompose(
}

composeOptions {
kotlinCompilerExtensionVersion = libs.findVersion("composeVersion").get().requiredVersion
kotlinCompilerExtensionVersion = libs.findVersion("compose-v").get().requiredVersion
}

dependencies {
Expand Down
14 changes: 7 additions & 7 deletions source/src/main/java/city/zouitel/source/androidLibray.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,18 @@ fun Project.configureAndroidLibrary(
common: CommonExtension<*, *, *, *, *>,
) {
common.apply {
compileSdk = libs.findVersion("compileSdkVersion").get().requiredVersion.toInt()
compileSdk = libs.findVersion("compilesdk-v").get().requiredVersion.toInt()

defaultConfig {
minSdk = libs.findVersion("minSdkVersion").get().requiredVersion.toInt()
minSdk = libs.findVersion("minsdk-v").get().requiredVersion.toInt()
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}

// packaging {
// resources {
// excludes += "/META-INF/{AL2.0,LGPL2.1}"
// }
// }
packaging {
resources {
excludes += "/META-INF/{AL2.0,LGPL2.1}"
}
}

compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package city.zouitel.systemDesign

import city.zouitel.systemDesign.R


object Icons {

Expand Down Expand Up @@ -44,7 +42,7 @@ object Icons {
val SORT_ALPHA_DOWN_ICON = R.drawable.sort_alpha_down_24
val SORT_AMOUNT_DOWN_ICON = R.drawable.sort_amount_down_alt_24
val SORT_AMOUNT_UP_ICON = R.drawable.sort_amount_up_alt_24
val TRASH_ICON = R.drawable.trash_24
val REMOVE_ICON = R.drawable.trash_24
val RESET_ICON = R.drawable.reset_24
val MENU_BURGER_ICON = R.drawable.menu_burger_24
val HOME_ICON = R.drawable.home_24
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
package city.zouitel.note.ui.bottom_bar

import android.Manifest
import android.annotation.SuppressLint
import android.net.Uri
import android.os.Build
import androidx.activity.compose.ManagedActivityResultLauncher
import androidx.annotation.RequiresApi
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.background
import androidx.compose.foundation.combinedClickable
Expand Down Expand Up @@ -33,13 +36,17 @@ import city.zouitel.systemDesign.PopupTip
import city.zouitel.systemDesign.SoundEffect
import city.zouitel.systemDesign.listOfBackgroundColors
import city.zouitel.systemDesign.listOfTextColors
import com.google.accompanist.permissions.ExperimentalPermissionsApi
import com.google.accompanist.permissions.rememberMultiplePermissionsState
import org.koin.androidx.compose.koinViewModel
import java.text.SimpleDateFormat

@RequiresApi(Build.VERSION_CODES.TIRAMISU)
@SuppressLint("SimpleDateFormat")
@OptIn(
ExperimentalFoundationApi::class,
ExperimentalFoundationApi::class
ExperimentalFoundationApi::class,
ExperimentalPermissionsApi::class
)
@Composable
fun AddEditBottomBar(
Expand Down Expand Up @@ -70,6 +77,23 @@ fun AddEditBottomBar(

val formatter = SimpleDateFormat("dd-MM-yyyy hh:mm")

val permissionState = rememberMultiplePermissionsState(
permissions = listOf(
Manifest.permission.POST_NOTIFICATIONS,
)
) {
if (it.getValue(Manifest.permission.POST_NOTIFICATIONS)) {
recordDialogState.value = true
}
}
val showRationalDialog = remember { mutableStateOf(false) }

RationalDialog(
showRationalDialog = showRationalDialog,
permissionState = permissionState,
permissionName = "post notification"
)

Column {
Row {
AdaptingRow(
Expand Down Expand Up @@ -123,8 +147,16 @@ fun AddEditBottomBar(
it.showAlignTop()
}
) {
remindingDialogState.value = !remindingDialogState.value
sound.makeSound.invoke(context, KEY_CLICK, thereIsSoundEffect.value)
if (!permissionState.allPermissionsGranted) {
if (permissionState.shouldShowRationale) {
showRationalDialog.value = true
} else {
permissionState.launchMultiplePermissionRequest()
}
} else {
remindingDialogState.value = true
}
}
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import androidx.compose.material3.DropdownMenu
import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.OutlinedIconButton
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.runtime.*
Expand Down Expand Up @@ -88,66 +89,12 @@ internal fun Plus(
val currentColor = remember { mutableStateOf(getColorOfPriority(priorityColorState.value)) }

val showRationalDialog = remember { mutableStateOf(false) }
if (showRationalDialog.value) {
AlertDialog(
onDismissRequest = {
showRationalDialog.value = false
},
title = {
Text(
text = "Permission",
fontWeight = FontWeight.Bold,
fontSize = 16.sp
)
},
text = {
Text(
if (permissionState.revokedPermissions.size == 1) {
"You need audio record and wright external storage permission to contourne"
} else if (permissionState.revokedPermissions.first().permission == permission.RECORD_AUDIO) {
"You need audio record permission. Please grant the permission."
} else {
throw Exception("...")
},
fontSize = 16.sp
)
},
confirmButton = {
TextButton(
onClick = {
showRationalDialog.value = false
val intent = Intent(
Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
Uri.fromParts("package", context.packageName, null)
)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
ContextCompat.startActivity(context, intent, null)
}) {
Text(
text = "Ok",
style = TextStyle(
fontSize = 12.sp,
color = MaterialTheme.colorScheme.surfaceVariant
)
)
}
},
dismissButton = {
TextButton(
onClick = {
showRationalDialog.value = false
}) {
Text(
text = "Cancel",
style = TextStyle(
fontSize = 12.sp,
color = MaterialTheme.colorScheme.surfaceVariant
)
)
}
},
)
}

RationalDialog(
showRationalDialog = showRationalDialog,
permissionState = permissionState,
permissionName = "audio record"
)

DropdownMenu(
expanded = isShow.value,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
package city.zouitel.note.ui.bottom_bar

import android.Manifest
import android.content.Intent
import android.net.Uri
import android.provider.Settings
import androidx.compose.foundation.layout.size
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.OutlinedIconButton
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.MutableState
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.core.content.ContextCompat
import com.google.accompanist.permissions.ExperimentalPermissionsApi
import com.google.accompanist.permissions.MultiplePermissionsState

@OptIn(ExperimentalPermissionsApi::class)
@Composable
fun RationalDialog(
showRationalDialog: MutableState<Boolean>,
permissionState: MultiplePermissionsState,
permissionName: String?
) {
val context = LocalContext.current
if (showRationalDialog.value) {
AlertDialog(
onDismissRequest = {
showRationalDialog.value = false
},
title = {
Text(text = "Permission")
},
text = {
Text(
if (permissionState.revokedPermissions.size == 1) {
"You need $permissionName permission to contourne"
} else if (permissionState.revokedPermissions.first().permission == Manifest.permission.RECORD_AUDIO) {
"You need $permissionName permission. Please grant the permission."
} else {
throw Exception("There is no permission grant!")
}
)
},
confirmButton = {
OutlinedIconButton(
modifier = Modifier
.size(90.dp, 35.dp),
onClick = {
showRationalDialog.value = false
val intent = Intent(
Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
Uri.fromParts("package", context.packageName, null)
)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
ContextCompat.startActivity(context, intent, null)
}) {
Text(text = "Settings", fontSize = 16.sp)
}
},
dismissButton = {
OutlinedIconButton(
modifier = Modifier
.size(90.dp, 35.dp),
onClick = {
showRationalDialog.value = false
}) {
Text(text = "Cansel", fontSize = 16.sp)
}
},
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -38,14 +38,13 @@ internal fun DateLayout(
},
confirmButton = {
OutlinedIconButton(
modifier = Modifier
.size(90.dp, 35.dp),
modifier = Modifier.size(90.dp, 35.dp),
onClick = {
onAction.invoke()
dateDialog.value = false
selectedDate.value = dateState.selectedDateMillis!!
}) {
Text(text = "Select", fontSize = 17.sp)
Text(text = "Select", fontSize = 16.sp)
}

},
Expand All @@ -57,9 +56,8 @@ internal fun DateLayout(
onAction.invoke()
dateDialog.value = false
}) {
Text(text = "Cansel", fontSize = 17.sp)
Text(text = "Cansel", fontSize = 16.sp)
}

}
) {

Expand Down
Loading

0 comments on commit e2e23db

Please sign in to comment.