diff options
author | Sebastian Reichel <sre@ring0.de> | 2012-10-05 23:05:51 +0200 |
---|---|---|
committer | Sebastian Reichel <sre@ring0.de> | 2012-10-05 23:05:51 +0200 |
commit | afe0975e49cc795e36c98e62f0b662ad1759134e (patch) | |
tree | 322f6347a74f68d0b17790701b6c79644a957c28 /src/main.vala | |
parent | 22190faeace11d58b452d0c5dea8b7c613c08705 (diff) | |
download | serial-barcode-scanner-afe0975e49cc795e36c98e62f0b662ad1759134e.tar.bz2 |
refactor scanner session code
Diffstat (limited to 'src/main.vala')
-rw-r--r-- | src/main.vala | 64 |
1 files changed, 2 insertions, 62 deletions
diff --git a/src/main.vala b/src/main.vala index eff3a9d..b1c91d8 100644 --- a/src/main.vala +++ b/src/main.vala @@ -17,6 +17,7 @@ public Device dev; public Database db; public AudioPlayer audio; public CSVMemberFile csvimport; +public ScannerSession localsession; public MainLoop loop; public static int main(string[] args) { @@ -31,14 +32,13 @@ public static int main(string[] args) { Unix.signal_add(Posix.SIGTERM, handle_signals); Unix.signal_add(Posix.SIGINT, handle_signals); - dev = new Device(args[1], 9600, 8, 1); db = new Database("shop.db"); audio = new AudioPlayer(); loop = new MainLoop(); dev.received_barcode.connect((data) => { - if(interpret(data)) + if(localsession.interpret(data)) dev.blink(10); }); @@ -73,66 +73,6 @@ public void write_to_log(string format, ...) { stdout.printf(message + "\n"); } -public static bool interpret(string data) { - if(data.has_prefix("USER ")) { - string str_id = data.substring(5); - int32 id = int.parse(str_id); - - /* check if data has valid format */ - if(data != "USER %d".printf(id)) { - write_to_log("ungültige Benutzernummer: %s", data); - return false; - } - - if(db.is_logged_in()) { - write_to_log("Last User forgot to logout!"); - db.logout(); - } - - write_to_log("Login: %d", id); - return db.login(id); - } else if(data == "GUEST") { - if(db.is_logged_in()) { - write_to_log("Last User forgot to logout!"); - db.logout(); - } - - write_to_log("Login: Guest"); - return db.login(0); - } else if(data == "UNDO") { - if(!db.is_logged_in()) { - write_to_log("Can't undo if not logged in!"); - return false; - } else { - write_to_log("Undo last purchase!"); - return db.undo(); - } - } else if(data == "LOGOUT") { - if(db.is_logged_in()) { - write_to_log("Logout!"); - return db.logout(); - } - - return false; - } else { - uint64 id = uint64.parse(data); - - /* check if data has valid format */ - if(data != "%llu".printf(id)) { - write_to_log("ungültiges Produkt: %s", data); - return false; - } - - if(db.buy(id)) { - write_to_log("gekaufter Artikel: %s (%d,%02d €)", db.get_product_name(id), db.get_product_price(id)/100, db.get_product_price(id) % 100); - return true; - } else { - write_to_log("Kauf fehlgeschlagen!"); - return false; - } - } -} - bool handle_signals() { loop.quit(); return false; |