diff options
author | toni <matzeton@googlemail.com> | 2015-10-26 00:30:52 +0100 |
---|---|---|
committer | toni <toni@devlap.local> | 2015-11-02 13:10:59 +0100 |
commit | 1c8d37efdba437ab42d3d14257b7eb6adf7f2e4f (patch) | |
tree | e081f761a89ce2640c42c7e0649c0230c1651b7a /ui_elements.c | |
parent | 659f5274b607a1d8da3e3b30662442de764e9d7a (diff) |
exported UI IPC
Diffstat (limited to 'ui_elements.c')
-rw-r--r-- | ui_elements.c | 62 |
1 files changed, 60 insertions, 2 deletions
diff --git a/ui_elements.c b/ui_elements.c index b5b56e2..b9885a0 100644 --- a/ui_elements.c +++ b/ui_elements.c @@ -2,8 +2,15 @@ #include <stdlib.h> #include <string.h> +#include "ui.h" +#include "ui_ipc.h" +#include "ui_ani.h" +#include "ui_input.h" +#include "ui_statusbar.h" +#include "ui_nwindow.h" #include "ui_elements.h" +#include "status.h" #define PASSWD_WIDTH 35 #define PASSWD_HEIGHT 5 @@ -44,6 +51,57 @@ infownd_update(WINDOW *win, struct txtwindow *tw) return (0); } +static int +mq_passwd_send(char *passwd, size_t len) +{ + int ret; + + ui_ipc_sempost(SEM_IN); + ret = ui_ipc_msgsend(MQ_PW, passwd, len); + memset(passwd, '\0', len); + return ret; +} + +static int +passwd_input_cb(WINDOW *wnd, void *data, int key) +{ + struct input *a = (struct input *) data; + +/* + * if ( process_key(key, pw_input, wnd_main) == false ) { + * curs_set(0); + * memset(mq_msg, '\0', IPC_MQSIZ+1); + * mq_receive(mq_info, mq_msg, IPC_MQSIZ+1, 0); + * set_txtwindow_text(infownd, mq_msg); + * set_txtwindow_active(infownd, true); + * sleep(3); + * sem_trywait(sp_ui); + * } + * activate_input(wnd_main, pw_input); + */ + switch (key) { + case UIKEY_ENTER: + if ( mq_passwd_send(a->input, a->input_len) > 0 ) { + return DOUI_OK; + } else return DOUI_ERR; + break; + case UIKEY_BACKSPACE: + del_input(wnd, a); + break; + case UIKEY_ESC: + return DOUI_ERR; + break; + case UIKEY_DOWN: + case UIKEY_UP: + case UIKEY_LEFT: + case UIKEY_RIGHT: + break; + default: + add_input(wnd, a, key); + } + return DOUI_OK; +} + void init_ui_elements(WINDOW *wnd_main, unsigned int max_x, unsigned int max_y) { @@ -56,7 +114,7 @@ init_ui_elements(WINDOW *wnd_main, unsigned int max_x, unsigned int max_y) infownd->userptr = calloc(4, sizeof(char)); (*(char*)(infownd->userptr)) = '.'; - register_input(NULL, pw_input); + register_input(NULL, pw_input, passwd_input_cb); register_statusbar(higher); register_statusbar(lower); register_anic(heartbeat); @@ -72,7 +130,7 @@ free_ui_elements(void) unregister_ui_elt(lower); unregister_ui_elt(higher); unregister_ui_elt(heartbeat); - unregister_ui_elt(pw_input); + unregister_input(pw_input); free_input(pw_input); free_anic(heartbeat); free_statusbar(higher); |