diff options
author | Holger Cremer <HolgerCremer@gmail.com> | 2015-06-10 22:23:24 +0200 |
---|---|---|
committer | Holger Cremer <HolgerCremer@gmail.com> | 2015-06-10 22:23:24 +0200 |
commit | 609f72b68df7d8c5a029d5faf1867ef68a5ff6ef (patch) | |
tree | fa545c306893ecdee61e23a6707e6b70d15694de /src/curses-ui | |
parent | c2b6e54ba93bb2f28e65626417e2cee29f8eec64 (diff) | |
download | serial-barcode-scanner-609f72b68df7d8c5a029d5faf1867ef68a5ff6ef.tar.bz2 |
show a popup for invalid product or missing login
Diffstat (limited to 'src/curses-ui')
-rw-r--r-- | src/curses-ui/curses-ui.vala | 26 | ||||
-rw-r--r-- | src/curses-ui/main.vala | 16 | ||||
-rw-r--r-- | src/curses-ui/message_box.vala | 11 |
3 files changed, 44 insertions, 9 deletions
diff --git a/src/curses-ui/curses-ui.vala b/src/curses-ui/curses-ui.vala index ec007f2..e866c6e 100644 --- a/src/curses-ui/curses-ui.vala +++ b/src/curses-ui/curses-ui.vala @@ -65,12 +65,32 @@ public class CursesUI { statuswin.set(message); } - public void log(string message) { - messages.add(message); + public void log(MessageType type, string message) { + switch (type) { + case MessageType.WARNING: + messages.add(message, MessageBox.WARN_COLOR); + break; + case MessageType.ERROR: + messages.add(message, MessageBox.ERROR_COLOR); + break; + default: + messages.add(message, MessageBox.INFO_COLOR); + break; + } + } - public void dialog_open(string title, string message) { + public void dialog_open(string title, string message, int closeAfter=0) { dialog = new Dialog(message, title); + if (closeAfter > 0) { + Timeout.add_seconds(closeAfter, close); + } + } + + bool close() { + dialog_close(); + // just call me once + return false; } public void dialog_close() { diff --git a/src/curses-ui/main.vala b/src/curses-ui/main.vala index 5ea5a96..7487308 100644 --- a/src/curses-ui/main.vala +++ b/src/curses-ui/main.vala @@ -22,16 +22,21 @@ private static void play(string file) { try { audio.play_system(file); } catch(IOError e) { - ui.log("could not play audio: %s".printf(e.message)); + ui.log(MessageType.WARNING, "could not play audio: %s".printf(e.message)); } } public void msg_handler(MessageType type, string message) { - ui.log(message); + ui.log(type, message); } +public void popup_handler(string title, string message) { + ui.dialog_open(title, message, 10); +} + + public void log_handler(string? log_domain, LogLevelFlags flags, string message) { - ui.log(message); + ui.log(MessageType.INFO, message); } public static int main(string[] args) { @@ -53,14 +58,15 @@ public static int main(string[] args) { Log.set_default_handler(log_handler); scanner.msg.connect(msg_handler); + scanner.popup.connect(popup_handler); - ui.log("KtT Shop System has been started"); + ui.log(MessageType.INFO, "KtT Shop System has been started"); play("startup.ogg"); /* run mainloop */ loop.run(); - ui.log("Stopping Shop System"); + ui.log(MessageType.INFO, "Stopping Shop System"); play("shutdown.ogg"); /* leave curses mode */ diff --git a/src/curses-ui/message_box.vala b/src/curses-ui/message_box.vala index cc258b4..e786517 100644 --- a/src/curses-ui/message_box.vala +++ b/src/curses-ui/message_box.vala @@ -20,6 +20,10 @@ public class MessageBox { Window subwin; DateTime last; + public const short INFO_COLOR = 5; + public const short WARN_COLOR = 6; + public const short ERROR_COLOR = 7; + public MessageBox() { win = new Window(LINES-9, COLS - 2, 8, 1); win.bkgdset(COLOR_PAIR(0)); @@ -34,9 +38,13 @@ public class MessageBox { subwin.refresh(); last = new DateTime.from_unix_utc(0); + + init_pair (INFO_COLOR, Color.WHITE, Color.BLACK); + init_pair (WARN_COLOR, Color.YELLOW, Color.BLACK); + init_pair (ERROR_COLOR, Color.RED, Color.BLACK); } - public void add(string msg) { + public void add(string msg, short color_pair = MessageBox.INFO_COLOR) { var now = new DateTime.now_local(); if(now.get_day_of_year() != last.get_day_of_year() || now.get_year() != last.get_year()) { @@ -47,6 +55,7 @@ public class MessageBox { last = now; string curtime = now.format("%H:%M:%S"); + subwin.bkgdset(COLOR_PAIR(color_pair)); subwin.addstr("\n[" + curtime + "] " + msg); subwin.refresh(); } |