Open clock/calendar app again when clicking on clock widget

This commit is contained in:
MM20 2021-12-18 23:05:51 +01:00
parent 6c0c6bd6f8
commit fbcd5ed327
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389
3 changed files with 52 additions and 16 deletions

View File

@ -3,6 +3,7 @@ package de.mm20.launcher2.ui.component
import android.text.format.DateFormat import android.text.format.DateFormat
import androidx.compose.foundation.Canvas import androidx.compose.foundation.Canvas
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.border
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.material3.LocalContentColor import androidx.compose.material3.LocalContentColor
@ -14,6 +15,7 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.geometry.center import androidx.compose.ui.geometry.center
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.PointMode import androidx.compose.ui.graphics.PointMode
import androidx.compose.ui.graphics.StrokeCap import androidx.compose.ui.graphics.StrokeCap
import androidx.compose.ui.graphics.drawscope.rotate import androidx.compose.ui.graphics.drawscope.rotate
@ -35,14 +37,14 @@ fun DigitalClock(time: Long) {
Locale.getDefault() Locale.getDefault()
) )
Text( Text(
modifier = Modifier.padding(4.dp), modifier = Modifier.offset(y = 16.dp),
text = format.format(time), text = format.format(time),
style = MaterialTheme.typography.displayLarge.copy( style = MaterialTheme.typography.displayLarge.copy(
fontSize = 100.sp, fontSize = 100.sp,
fontWeight = FontWeight.Black, fontWeight = FontWeight.Black,
textAlign = TextAlign.Center, textAlign = TextAlign.Center,
lineHeight = 0.8.em, lineHeight = 0.8.em,
letterSpacing = -0.1.em letterSpacing = -0.1.em,
) )
) )
} }

View File

@ -4,14 +4,16 @@ import android.content.BroadcastReceiver
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.IntentFilter import android.content.IntentFilter
import android.provider.AlarmClock
import androidx.compose.animation.animateColorAsState import androidx.compose.animation.animateColorAsState
import androidx.compose.foundation.clickable
import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.material3.LocalContentColor import androidx.compose.material3.LocalContentColor
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.blur
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
@ -21,7 +23,6 @@ import de.mm20.launcher2.preferences.dataStore
import de.mm20.launcher2.ui.component.AnalogClock import de.mm20.launcher2.ui.component.AnalogClock
import de.mm20.launcher2.ui.component.BinaryClock import de.mm20.launcher2.ui.component.BinaryClock
import de.mm20.launcher2.ui.component.DigitalClock import de.mm20.launcher2.ui.component.DigitalClock
import de.mm20.launcher2.ui.ktx.toDp
import de.mm20.launcher2.ui.locals.LocalWindowSize import de.mm20.launcher2.ui.locals.LocalWindowSize
import de.mm20.launcher2.ui.widget.parts.DatePart import de.mm20.launcher2.ui.widget.parts.DatePart
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
@ -81,15 +82,26 @@ fun Clock(transparentBackground: Boolean) {
} }
} }
when (clockStyle) { Box(
ClockStyle.Analog -> { modifier = Modifier.clickable(
AnalogClock(time = time) indication = null,
interactionSource = remember { MutableInteractionSource() }
) {
context.startActivity(Intent(AlarmClock.ACTION_SHOW_ALARMS).apply {
flags = Intent.FLAG_ACTIVITY_NEW_TASK
})
} }
ClockStyle.Binary -> { ) {
BinaryClock(time = time) when (clockStyle) {
} ClockStyle.Analog -> {
else -> { AnalogClock(time = time)
DigitalClock(time = time) }
ClockStyle.Binary -> {
BinaryClock(time = time)
}
else -> {
DigitalClock(time = time)
}
} }
} }
} }

View File

@ -1,14 +1,36 @@
package de.mm20.launcher2.ui.widget.parts package de.mm20.launcher2.ui.widget.parts
import android.content.ContentUris
import android.content.Intent
import android.provider.CalendarContract
import android.text.format.DateUtils import android.text.format.DateUtils
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalContext
import de.mm20.launcher2.calendar.CalendarViewModel
import de.mm20.launcher2.ui.component.TextClock import de.mm20.launcher2.ui.component.TextClock
import org.koin.androidx.compose.getViewModel
@Composable @Composable
fun DatePart() { fun DatePart() {
TextClock( val context = LocalContext.current
formatFlags = DateUtils.FORMAT_SHOW_WEEKDAY or DateUtils.FORMAT_SHOW_DATE or DateUtils.FORMAT_SHOW_YEAR, TextButton(onClick = {
style = MaterialTheme.typography.titleMedium val startMillis = System.currentTimeMillis()
) val builder = CalendarContract.CONTENT_URI.buildUpon()
builder.appendPath("time")
ContentUris.appendId(builder, startMillis)
val intent = Intent(Intent.ACTION_VIEW)
.setData(builder.build())
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context.startActivity(intent)
}) {
TextClock(
formatFlags = DateUtils.FORMAT_SHOW_WEEKDAY or DateUtils.FORMAT_SHOW_DATE or DateUtils.FORMAT_SHOW_YEAR,
style = MaterialTheme.typography.titleMedium,
color = Color.White
)
}
} }