Commit fa0d47f7 by Aleksandr

job status and colors

parent 64369c62
package com.isidroid.c23.domain.use_case package com.isidroid.c23.domain.use_case
import android.content.Context
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import com.isidroid.c23.domain.dto.PrintJobListItem import com.isidroid.c23.domain.dto.PrintJobListItem
import com.isidroid.c23.ext.getPrintJobStatus
import com.isidroid.c23.ext.getPrintJobStatusColor
import com.isidroid.core.FlowResult import com.isidroid.core.FlowResult
import com.isidroid.job.constant.jobStatusName import com.isidroid.job.constant.jobStatusName
import com.isidroid.job.repository.JobRepository import com.isidroid.job.repository.JobRepository
import com.isidroid.rendering.constant.printSizeName import com.isidroid.rendering.constant.printSizeName
import com.isidroid.spot.repository.SpotRepository import com.isidroid.spot.repository.SpotRepository
import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.flow.flow import kotlinx.coroutines.flow.flow
import java.io.File import java.io.File
import javax.inject.Inject import javax.inject.Inject
...@@ -14,13 +18,18 @@ import javax.inject.Singleton ...@@ -14,13 +18,18 @@ import javax.inject.Singleton
@Singleton @Singleton
class PrintJobsUseCase @Inject constructor( class PrintJobsUseCase @Inject constructor(
@ApplicationContext private val context: Context,
private val repository: JobRepository, private val repository: JobRepository,
private val spotRepository: SpotRepository private val spotRepository: SpotRepository
) { ) {
fun load() = flow { fun load() = flow {
emit(FlowResult.Loading) emit(FlowResult.Loading)
val jobList = repository.readLocalList() val jobList = repository.readLocalList()
val spots = jobList.map { it.spotId }.distinct().let { spotRepository.findLocalRichSpots(it) }?.associateBy({ it.spot.id }, { it }) val spots = jobList
.map { it.spotId }
.distinct()
.let { spotRepository.findLocalRichSpots(it) }
?.associateBy({ it.spot.id }, { it })
val result = jobList.map { job -> val result = jobList.map { job ->
val richSpot = spots?.get(job.spotId) val richSpot = spots?.get(job.spotId)
...@@ -32,11 +41,11 @@ class PrintJobsUseCase @Inject constructor( ...@@ -32,11 +41,11 @@ class PrintJobsUseCase @Inject constructor(
cost = job.cost, cost = job.cost,
paperInfo = job.printSize.printSizeName, paperInfo = job.printSize.printSizeName,
isColor = profile?.grayscale != true, isColor = profile?.grayscale != true,
statusColor = Color(0xFF1E88E5), statusColor = getPrintJobStatusColor(job.status),
comment = job.comment, comment = job.comment,
copies = job.copies, copies = job.copies,
cover = job.sourceFiles?.firstOrNull()?.takeIf { File(it).exists() }, cover = job.sourceFiles?.firstOrNull()?.takeIf { File(it).exists() },
statusName = job.status.jobStatusName.lowercase(), statusName = context.getString(getPrintJobStatus(job.status)),
accessCode = job.accessCode.orEmpty(), accessCode = job.accessCode.orEmpty(),
createdAt = job.createdAt createdAt = job.createdAt
) )
......
package com.isidroid.c23.ext
import androidx.compose.ui.graphics.Color
import com.isidroid.c23.R
import com.isidroid.c23.ui.theme.ColorBlue
import com.isidroid.c23.ui.theme.ColorGreen
import com.isidroid.c23.ui.theme.ColorOrange
import com.isidroid.c23.ui.theme.ColorRed
import com.isidroid.job.constant.JobStatus
fun getPrintJobStatus(@JobStatus status: Int) = when (status) {
JobStatus.CREATED -> R.string.print_job_status_created
JobStatus.CANCELED -> R.string.print_job_status_canceled
JobStatus.READY -> R.string.print_job_status_ready
JobStatus.ACCEPTED -> R.string.print_job_status_accepted
JobStatus.REJECTED -> R.string.print_job_status_rejected
JobStatus.PRINTING -> R.string.print_job_status_printing
JobStatus.COMPLETED -> R.string.print_job_status_completed
JobStatus.ERROR -> R.string.print_job_status_error
JobStatus.IDLE -> R.string.print_job_status_idle
JobStatus.RENDER_UPLOAD -> R.string.print_job_status_render_upload
JobStatus.READY_TO_PRINT -> R.string.print_job_status_ready_to_print
JobStatus.UPLOAD_ERROR -> R.string.print_job_status_upload_error
else -> R.string.empty
}
fun getPrintJobStatusColor(@JobStatus status: Int) = when (status) {
JobStatus.CREATED -> ColorBlue
JobStatus.CANCELED -> ColorOrange
JobStatus.READY -> ColorGreen
JobStatus.ACCEPTED -> ColorGreen
JobStatus.REJECTED -> ColorOrange
JobStatus.PRINTING -> ColorBlue
JobStatus.COMPLETED -> ColorGreen
JobStatus.ERROR -> ColorRed
JobStatus.IDLE -> ColorBlue
JobStatus.RENDER_UPLOAD -> ColorBlue
JobStatus.READY_TO_PRINT -> ColorBlue
JobStatus.UPLOAD_ERROR -> ColorRed
else -> Color.Transparent
}
\ No newline at end of file
package com.isidroid.c23.ui.theme
import androidx.compose.ui.graphics.Color
val ColorBlue = Color(0xFF1E88E5)
val ColorOrange = Color(0xFFF44336)
val ColorGreen = Color(0xFF009688)
val ColorRed = Color(0xFFE91E63)
\ No newline at end of file
<resources>
<string name="print_job_status_created">Created</string>
<string name="print_job_status_canceled">Canceled</string>
<string name="print_job_status_ready">Ready to print</string>
<string name="print_job_status_accepted">Accepted</string>
<string name="print_job_status_rejected">Rejected</string>
<string name="print_job_status_printing">Printing</string>
<string name="print_job_status_completed">Complete</string>
<string name="print_job_status_error">Error</string>
<string name="print_job_status_idle">Created</string>
<string name="print_job_status_render_upload">Ready to upload</string>
<string name="print_job_status_ready_to_print">Ready to print</string>
<string name="print_job_status_upload_error">Error</string>
</resources>
\ No newline at end of file
...@@ -34,7 +34,8 @@ ...@@ -34,7 +34,8 @@
<string name="appbar_print_preview">Print Preview</string> <string name="appbar_print_preview">Print Preview</string>
<string name="error_spot_has_no_printing_profiles">You can\'t print in this Spot, please select another ones</string> <string name="error_spot_has_no_printing_profiles">You can\'t print in this Spot, please select another ones</string>
<string name="action_find_spot">Find spot</string> <string name="action_find_spot">Find spot</string>
<string name="print_job_sending">Print job is sending...</string> <string name="print_job_sending">Print job is sending</string>
<string name="print_job_list">My Print jobs</string> <string name="print_job_list">My Print jobs</string>
<string name="rendered_files_copied_message">Successfully copied %d files</string> <string name="rendered_files_copied_message">Successfully copied %d files</string>
<string name="empty" />
</resources> </resources>
\ No newline at end of file
...@@ -60,7 +60,6 @@ fun PrintJobListItemComponent( ...@@ -60,7 +60,6 @@ fun PrintJobListItemComponent(
Text( Text(
text = spotName, text = spotName,
fontSize = 16.sp, fontSize = 16.sp,
fontWeight = FontWeight.W600,
modifier = Modifier modifier = Modifier
.clickable { clickOnSpot() } .clickable { clickOnSpot() }
.constrainAs(titleView) { .constrainAs(titleView) {
......
...@@ -37,19 +37,26 @@ internal fun CardInfoComponent( ...@@ -37,19 +37,26 @@ internal fun CardInfoComponent(
Column(modifier = modifier.fillMaxWidth()) { Column(modifier = modifier.fillMaxWidth()) {
CardInfoItemComponent( CardInfoItemComponent(
text = stringResource(id = R.string.label_access_code, code), text = stringResource(id = R.string.label_access_code, code),
icon = Icons.Rounded.Lock icon = Icons.Rounded.Lock,
highlight = true
) )
CardInfoItemComponent( CardInfoItemComponent(
text = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.SHORT).format(createdAt), text = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.SHORT).format(createdAt),
icon = Icons.Rounded.DateRange, icon = Icons.Rounded.DateRange,
highlight = false,
modifier = Modifier.padding(top = itemSpace) modifier = Modifier.padding(top = itemSpace)
) )
} }
} }
@Composable @Composable
private fun CardInfoItemComponent(text: String, icon: ImageVector, modifier: Modifier = Modifier) { private fun CardInfoItemComponent(
text: String,
icon: ImageVector,
highlight: Boolean,
modifier: Modifier = Modifier
) {
Row(modifier = modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically) { Row(modifier = modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically) {
Icon(imageVector = icon, contentDescription = null, modifier = Modifier.size(16.dp)) Icon(imageVector = icon, contentDescription = null, modifier = Modifier.size(16.dp))
Text( Text(
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment