summaryrefslogtreecommitdiffstats
path: root/src/curses-ui
diff options
context:
space:
mode:
authorHolger Cremer <HolgerCremer@gmail.com>2015-06-10 22:23:24 +0200
committerHolger Cremer <HolgerCremer@gmail.com>2015-06-10 22:23:24 +0200
commit609f72b68df7d8c5a029d5faf1867ef68a5ff6ef (patch)
treefa545c306893ecdee61e23a6707e6b70d15694de /src/curses-ui
parentc2b6e54ba93bb2f28e65626417e2cee29f8eec64 (diff)
downloadserial-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.vala26
-rw-r--r--src/curses-ui/main.vala16
-rw-r--r--src/curses-ui/message_box.vala11
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();
}