Skip to content

Commit

Permalink
Use enums in the printer demo
Browse files Browse the repository at this point in the history
  • Loading branch information
tronical committed Jun 16, 2023
1 parent 24c822d commit b17dc05
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 19 deletions.
4 changes: 2 additions & 2 deletions examples/printerdemo/rust/main.rs
Expand Up @@ -25,7 +25,7 @@ struct PrinterQueueData {
impl PrinterQueueData {
fn push_job(&self, title: slint::SharedString) {
self.data.push(PrinterQueueItem {
status: "WAITING...".into(),
status: JobStatus::Waiting,
progress: 0,
title,
owner: env!("CARGO_PKG_AUTHORS").into(),
Expand Down Expand Up @@ -86,7 +86,7 @@ pub fn main() {
if printer_queue.data.row_count() > 0 {
let mut top_item = printer_queue.data.row_data(0).unwrap();
top_item.progress += 1;
top_item.status = "PRINTING".into();
top_item.status = JobStatus::Waiting;
if top_item.progress > 100 {
printer_queue.data.remove(0);
if printer_queue.data.row_count() == 0 {
Expand Down
31 changes: 23 additions & 8 deletions examples/printerdemo/ui/printer_queue.slint
Expand Up @@ -3,8 +3,13 @@

import { DemoPalette, PushButton } from "./common.slint";

enum JobStatus {
Waiting,
Printing
}

export struct PrinterQueueItem {
status: string, // WAITING..., PRINTING
status: JobStatus,
progress: int,
title: string,
owner: string,
Expand All @@ -19,10 +24,20 @@ export global PrinterQueue {
callback pause-job(int);

in property <[PrinterQueueItem]> printer-queue: [
{ status: @tr("PRINTING"), progress: 63, title: "210106-FinalPresentation.pdf", owner: "info@slint-ui.com", pages: 6, size: "143kb", submission-date: "11:41 25/01/21" },
{ status: @tr("WAITING..."), title: "Adressliste.docx", owner: "info@slint-ui.com", pages: 6, size: "143kb", submission-date: "11:41 25/01/21" },
{ status: @tr("WAITING..."), title: "Salaries.pdf", owner: "info@slint-ui.com", pages: 6, size: "143kb", submission-date: "11:41 25/01/21" },
{ status: JobStatus.Printing, progress: 63, title: "210106-FinalPresentation.pdf", owner: "info@slint-ui.com", pages: 6, size: "143kb", submission-date: "11:41 25/01/21" },
{ status: JobStatus.Waiting, title: "Adressliste.docx", owner: "info@slint-ui.com", pages: 6, size: "143kb", submission-date: "11:41 25/01/21" },
{ status: JobStatus.Waiting, title: "Salaries.pdf", owner: "info@slint-ui.com", pages: 6, size: "143kb", submission-date: "11:41 25/01/21" },
];

function statusString(status: JobStatus) -> string {
if (status == JobStatus.Printing) {
@tr("PRINTING")
} else if (status == JobStatus.Waiting) {
@tr("WAITING...")
} else {
@tr("Unknown job status")
}
}
}


Expand Down Expand Up @@ -160,9 +175,9 @@ component NarrowPrintQueueElement inherits Rectangle {
// TODO: text-transform: uppercase
text: {
if (root.queue-item.progress > 0) {
@tr("{}% - {}",root.queue-item.progress, root.queue-item.status)
@tr("{}% - {}",root.queue-item.progress, PrinterQueue.statusString(root.queue-item.status))
} else {
root.queue-item.status
PrinterQueue.statusString(root.queue-item.status)
}
}
color: DemoPalette.status-label-text-color;
Expand Down Expand Up @@ -269,9 +284,9 @@ component WidePrintQueueElement inherits Rectangle {
// TODO: text-transform: uppercase
text: {
if (root.queue-item.progress > 0) {
@tr("{}% - {}",root.queue-item.progress, root.queue-item.status)
@tr("{}% - {}",root.queue-item.progress, PrinterQueue.statusString(root.queue-item.status))
} else {
root.queue-item.status
PrinterQueue.statusString(root.queue-item.status)
}
}
color: DemoPalette.status-label-text-color;
Expand Down
4 changes: 2 additions & 2 deletions examples/printerdemo_mcu/main.rs
Expand Up @@ -21,7 +21,7 @@ struct PrinterQueueData {
impl PrinterQueueData {
fn push_job(&self, title: slint::SharedString) {
self.data.push(PrinterQueueItem {
status: "WAITING...".into(),
status: JobStatus::Waiting,
progress: 0,
title,
owner: env!("CARGO_PKG_AUTHORS").into(),
Expand Down Expand Up @@ -78,7 +78,7 @@ fn main() -> ! {
if printer_queue.data.row_count() > 0 {
let mut top_item = printer_queue.data.row_data(0).unwrap();
top_item.progress += 1;
top_item.status = "PRINTING".into();
top_item.status = JobStatus::Printing;
if top_item.progress > 100 {
printer_queue.data.remove(0);
if printer_queue.data.row_count() == 0 {
Expand Down
29 changes: 22 additions & 7 deletions examples/printerdemo_mcu/ui/printer_queue.slint
Expand Up @@ -3,8 +3,13 @@

import { DemoPalette, PushButton } from "./common.slint";

enum JobStatus {
Waiting,
Printing
}

export struct PrinterQueueItem {
status: string, // WAITING..., PRINTING
status: JobStatus,
progress: int,
title: string,
owner: string,
Expand All @@ -19,10 +24,20 @@ export global PrinterQueue {
callback pause-job(int);

in property <[PrinterQueueItem]> printer-queue: [
{ status: "PRINTING", progress: 63, title: "Slint-Demo.jpeg", owner: "info@slint-ui.com", pages: 6, size: "143kb", submission-date: "11:41 25/01/21" },
{ status: "WAITING...", title: "Adressliste.docx", owner: "info@slint-ui.com", pages: 6, size: "143kb", submission-date: "11:41 25/01/21" },
{ status: "WAITING...", title: "210106-FinalPresentation.pdf", owner: "info@slint-ui.com", pages: 6, size: "143kb", submission-date: "11:41 25/01/21" },
{ status: JobStatus.Printing, progress: 63, title: "Slint-Demo.jpeg", owner: "info@slint-ui.com", pages: 6, size: "143kb", submission-date: "11:41 25/01/21" },
{ status: JobStatus.Waiting, title: "Adressliste.docx", owner: "info@slint-ui.com", pages: 6, size: "143kb", submission-date: "11:41 25/01/21" },
{ status: JobStatus.Waiting, title: "210106-FinalPresentation.pdf", owner: "info@slint-ui.com", pages: 6, size: "143kb", submission-date: "11:41 25/01/21" },
];

function statusString(status: JobStatus) -> string {
if (status == JobStatus.Printing) {
"PRINTING"
} else if (status == JobStatus.Waiting) {
"WAITING..."
} else {
"Unknown job status"
}
}
}


Expand Down Expand Up @@ -160,10 +175,10 @@ component NarrowPrintQueueElement inherits Rectangle {
Text {
// TODO: text-transform: uppercase
text: {
if (root.queue-item.status == "PRINTING") {
"\{root.queue-item.progress}% - \{root.queue-item.status}"
if (root.queue-item.status == JobStatus.Printing) {
"\{root.queue-item.progress}% - \{PrinterQueue.statusString(root.queue-item.status)}"
} else {
root.queue-item.status
PrinterQueue.statusString(root.queue-item.status)
}
}
color: DemoPalette.status-label-text-color;
Expand Down

0 comments on commit b17dc05

Please sign in to comment.