summaryrefslogtreecommitdiffstats
path: root/src/main.vala
diff options
context:
space:
mode:
authorSebastian Reichel <sre@ring0.de>2012-10-05 23:05:51 +0200
committerSebastian Reichel <sre@ring0.de>2012-10-05 23:05:51 +0200
commitafe0975e49cc795e36c98e62f0b662ad1759134e (patch)
tree322f6347a74f68d0b17790701b6c79644a957c28 /src/main.vala
parent22190faeace11d58b452d0c5dea8b7c613c08705 (diff)
downloadserial-barcode-scanner-afe0975e49cc795e36c98e62f0b662ad1759134e.tar.bz2
refactor scanner session code
Diffstat (limited to 'src/main.vala')
-rw-r--r--src/main.vala64
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;