127 lines
2.6 KiB
C
127 lines
2.6 KiB
C
#include <arpa/inet.h>
|
|
#include <ncurses.h>
|
|
#include <netinet/in.h>
|
|
#include <stdint.h>
|
|
#include <stdlib.h>
|
|
#include <sys/select.h>
|
|
#include <sys/socket.h>
|
|
#include <sys/un.h>
|
|
#include <termios.h>
|
|
#include <unistd.h>
|
|
|
|
#include "connection.h"
|
|
#include "main.h"
|
|
#include "ui/app.h"
|
|
#include "ui/modals/ask_server_addr.h"
|
|
#include "ui/modals/login.h"
|
|
#include "ui/widget.h"
|
|
#include "ui/widget/dialogue.h"
|
|
|
|
uint32_t m_id = 0;
|
|
|
|
void event_loop(app_t *app);
|
|
void app_refresh(app_t *app);
|
|
|
|
int main(int argc, char **argv) {
|
|
app_t *app;
|
|
params_t params;
|
|
app = calloc(1, sizeof(app_t));
|
|
|
|
init_nc();
|
|
|
|
app = init_app();
|
|
init_params(¶ms);
|
|
app->params = ¶ms;
|
|
analyze_args(argc, argv, ¶ms);
|
|
|
|
wrefresh(app->left_win);
|
|
wrefresh(app->right_win);
|
|
|
|
// temporal
|
|
app->modal.type = ask_server_addr;
|
|
|
|
event_loop(app);
|
|
|
|
destroy_app(app);
|
|
endwin();
|
|
|
|
return 0;
|
|
}
|
|
|
|
void app_draw_modal(app_t *app);
|
|
|
|
void event_loop(app_t *app) {
|
|
int c;
|
|
|
|
callback_args_t d_args = {.app = app,
|
|
.win = NULL,
|
|
.widget = NULL,
|
|
.data = (void *)&c,
|
|
.resp_data = NULL};
|
|
app_draw_modal(app);
|
|
app_refresh(app);
|
|
for (;;) {
|
|
c = wgetch(app->win);
|
|
switch (c) {
|
|
// 113 is q key. This exits the program
|
|
case 113:
|
|
return;
|
|
case KEY_F(9):
|
|
return;
|
|
default:
|
|
if (app->modal.type != none) {
|
|
d_args.win = app->modal.dialogue.win;
|
|
d_args.widget = &(app->modal.dialogue);
|
|
app->modal.dialogue.w.callback(&d_args);
|
|
}
|
|
break;
|
|
}
|
|
app_draw_modal(app);
|
|
app_refresh(app);
|
|
};
|
|
}
|
|
|
|
void app_refresh(app_t *app) {
|
|
draw_borders(app);
|
|
|
|
wnoutrefresh(app->win);
|
|
wnoutrefresh(app->left_win);
|
|
wnoutrefresh(app->right_win);
|
|
if (app->modal.type != none) {
|
|
if (app->modal.dialogue.is_initiated == 0) {
|
|
app->modal.type = none;
|
|
} else {
|
|
wnoutrefresh(app->modal.dialogue.win);
|
|
}
|
|
}
|
|
doupdate();
|
|
}
|
|
|
|
void app_draw_modal(app_t *app) {
|
|
if (app->modal.type != none && !app->modal.dialogue.is_initiated) {
|
|
switch (app->modal.type) {
|
|
case login:
|
|
init_login_modal(app);
|
|
break;
|
|
case ask_server_addr:
|
|
init_asa_modal(app);
|
|
break;
|
|
case none:
|
|
default:
|
|
break;
|
|
}
|
|
draw_dialogue(NULL, &(app->modal.dialogue));
|
|
}
|
|
}
|
|
|
|
// int main(int argc, char *argv[]) {
|
|
// params_t params;
|
|
// init_params(¶ms);
|
|
// analyze_args(argc, argv, ¶ms);
|
|
// get_missing_params(¶ms);
|
|
// int sd = init_client();
|
|
// connect_to_server(sd, ¶ms);
|
|
// query_loop(sd, ¶ms);
|
|
// clear_params(¶ms);
|
|
// return 0;
|
|
// }
|