Commit fa0d47f7 by Aleksandr

job status and colors

parent 64369c62
package com.isidroid.c23.domain.use_case
import android.content.Context
import androidx.compose.ui.graphics.Color
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.job.constant.jobStatusName
import com.isidroid.job.repository.JobRepository
import com.isidroid.rendering.constant.printSizeName
import com.isidroid.spot.repository.SpotRepository
import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.flow.flow
import java.io.File
import javax.inject.Inject
......@@ -14,13 +18,18 @@ import javax.inject.Singleton
@Singleton
class PrintJobsUseCase @Inject constructor(
@ApplicationContext private val context: Context,
private val repository: JobRepository,
private val spotRepository: SpotRepository
) {
fun load() = flow {
emit(FlowResult.Loading)
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 richSpot = spots?.get(job.spotId)
......@@ -32,11 +41,11 @@ class PrintJobsUseCase @Inject constructor(
cost = job.cost,
paperInfo = job.printSize.printSizeName,
isColor = profile?.grayscale != true,
statusColor = Color(0xFF1E88E5),
statusColor = getPrintJobStatusColor(job.status),
comment = job.comment,
copies = job.copies,
cover = job.sourceFiles?.firstOrNull()?.takeIf { File(it).exists() },
statusName = job.status.jobStatusName.lowercase(),
statusName = context.getString(getPrintJobStatus(job.status)),
accessCode = job.accessCode.orEmpty(),
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 @@
<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="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="rendered_files_copied_message">Successfully copied %d files</string>
<string name="empty" />
</resources>
\ No newline at end of file
......@@ -60,7 +60,6 @@ fun PrintJobListItemComponent(
Text(
text = spotName,
fontSize = 16.sp,
fontWeight = FontWeight.W600,
modifier = Modifier
.clickable { clickOnSpot() }
.constrainAs(titleView) {
......
......@@ -37,19 +37,26 @@ internal fun CardInfoComponent(
Column(modifier = modifier.fillMaxWidth()) {
CardInfoItemComponent(
text = stringResource(id = R.string.label_access_code, code),
icon = Icons.Rounded.Lock
icon = Icons.Rounded.Lock,
highlight = true
)
CardInfoItemComponent(
text = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.SHORT).format(createdAt),
icon = Icons.Rounded.DateRange,
highlight = false,
modifier = Modifier.padding(top = itemSpace)
)
}
}
@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) {
Icon(imageVector = icon, contentDescription = null, modifier = Modifier.size(16.dp))
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