Formatting + display Craigslist car price
This commit is contained in:
parent
9b8f568c5b
commit
81b4913e9a
@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
#define START_ROW 2
|
#define START_ROW 2
|
||||||
#define START_COL 2
|
#define START_COL 2
|
||||||
#define TITLE_START_COL 15
|
#define TITLE_START_COL 19
|
||||||
#define COLORS_SUCCESS 1
|
#define COLORS_SUCCESS 1
|
||||||
#define COLORS_FAILURE 2
|
#define COLORS_FAILURE 2
|
||||||
#define COLORS_WARNING 3
|
#define COLORS_WARNING 3
|
||||||
|
@ -33,7 +33,7 @@ void company_init(WINDOW* win, int h, int w)
|
|||||||
height = h;
|
height = h;
|
||||||
width = w;
|
width = w;
|
||||||
|
|
||||||
mvwprintw(window, 0, START_COL, " Company ");
|
mvwprintw(window, 0, START_COL, " FemboyFinancial ");
|
||||||
if (curl == NULL)
|
if (curl == NULL)
|
||||||
{
|
{
|
||||||
wattron(window, COLOR_PAIR(COLORS_FAILURE));
|
wattron(window, COLOR_PAIR(COLORS_FAILURE));
|
||||||
@ -43,6 +43,7 @@ void company_init(WINDOW* win, int h, int w)
|
|||||||
curl_global_cleanup();
|
curl_global_cleanup();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mvwprintw(window, START_ROW, START_COL, "Pinging...");
|
||||||
wrefresh(window);
|
wrefresh(window);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -103,7 +104,7 @@ void* company_refresh(void* arg)
|
|||||||
char* tagline = div->children->content;
|
char* tagline = div->children->content;
|
||||||
// clear line
|
// clear line
|
||||||
for (int i = START_COL; i < width - 1; ++i)
|
for (int i = START_COL; i < width - 1; ++i)
|
||||||
mvwprintw(window, START_ROW+3, i, " ");
|
mvwprintw(window, START_ROW+2, i, " ");
|
||||||
// say the funny reference
|
// say the funny reference
|
||||||
char buf[1024];
|
char buf[1024];
|
||||||
sprintf(buf, "espeak \"%s\" >/dev/null 2>&1", tagline);
|
sprintf(buf, "espeak \"%s\" >/dev/null 2>&1", tagline);
|
||||||
@ -115,37 +116,36 @@ void* company_refresh(void* arg)
|
|||||||
tagline[max_length] = 0;
|
tagline[max_length] = 0;
|
||||||
}
|
}
|
||||||
// print the funny reference
|
// print the funny reference
|
||||||
mvwprintw(window, START_ROW+3, START_COL, "%s", tagline);
|
mvwprintw(window, START_ROW+2, START_COL, "%s", tagline);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
struct tm lastmeeting = {0};
|
struct tm lastmeeting = {0};
|
||||||
mvwprintw(window, START_ROW+1, START_COL, "Last meeting:");
|
mvwprintw(window, START_ROW, START_COL, "Last meeting:");
|
||||||
wattron(window, WA_BOLD);
|
wattron(window, WA_BOLD);
|
||||||
bool result = parse_meet_time(meet_data.memory, &lastmeeting);
|
bool result = parse_meet_time(meet_data.memory, &lastmeeting);
|
||||||
double diff_min = difftime(time(NULL), timegm(&lastmeeting)) / 60.0;
|
double diff_min = difftime(time(NULL), timegm(&lastmeeting)) / 60.0;
|
||||||
double diff_hr = diff_min / 60.0;
|
double diff_hr = diff_min / 60.0;
|
||||||
if (result && diff_hr < 1000)
|
if (result && diff_hr < 1000)
|
||||||
{
|
{
|
||||||
mvwprintw(window, START_ROW+1, START_COL+13, " %.0fh %.0fm ago", diff_hr, diff_min);
|
mvwprintw(window, START_ROW, START_COL+13, " %.0fh %.0fm ago", diff_hr, diff_min);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mvwprintw(window, START_ROW+1, START_COL+13, " a long time ago");
|
mvwprintw(window, START_ROW, START_COL+13, " a long time ago");
|
||||||
}
|
}
|
||||||
wattroff(window, WA_BOLD);
|
wattroff(window, WA_BOLD);
|
||||||
|
|
||||||
mvwprintw(window, START_ROW, START_COL, "FemboyFinancial website:");
|
|
||||||
if (res == CURLE_OK)
|
if (res == CURLE_OK)
|
||||||
{
|
{
|
||||||
wattron(window, COLOR_PAIR(COLORS_SUCCESS));
|
wattron(window, COLOR_PAIR(COLORS_SUCCESS));
|
||||||
mvwprintw(window, START_ROW, START_COL+24, " ONLINE");
|
mvwprintw(window, 0, TITLE_START_COL, " ONLINE ");
|
||||||
wattroff(window, COLOR_PAIR(COLORS_SUCCESS));
|
wattroff(window, COLOR_PAIR(COLORS_SUCCESS));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
wattron(window, COLOR_PAIR(COLORS_FAILURE));
|
wattron(window, COLOR_PAIR(COLORS_FAILURE));
|
||||||
mvwprintw(window, START_ROW, START_COL+24, " OFFLINE");
|
mvwprintw(window, 0, TITLE_START_COL, " OFFLINE ");
|
||||||
wattroff(window, COLOR_PAIR(COLORS_FAILURE));
|
wattroff(window, COLOR_PAIR(COLORS_FAILURE));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,17 +53,35 @@ bool parse_rand_craigslist(const char* json, char* name, unsigned* price)
|
|||||||
|
|
||||||
int r = rand() % 400;
|
int r = rand() % 400;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
const char* start_price = items;
|
||||||
|
const char* end_price = items;
|
||||||
const char* start_item = items;
|
const char* start_item = items;
|
||||||
const char* end_item = items;
|
const char* end_item = items;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
|
end_price = strstr(end_item, ",\"");
|
||||||
|
for (start_price = end_price - 1; *start_price != ','; --start_price)
|
||||||
|
;
|
||||||
|
++start_price;
|
||||||
|
|
||||||
start_item = strstr(end_item, "],\"");
|
start_item = strstr(end_item, "],\"");
|
||||||
end_item = strstr(start_item, "\"]");
|
end_item = strstr(start_item, "\"]");
|
||||||
}
|
}
|
||||||
while (i++ < r && strstr(end_item, "],\""));
|
while (i++ < r && strstr(end_item, "],\""));
|
||||||
strncpy(name, start_item + 3, end_item - start_item - 3);
|
|
||||||
//*price = atoi();
|
// omit backslashes when copying string
|
||||||
*price = 0;
|
i = 0;
|
||||||
|
for (const char* c = start_item + 3; c < end_item; ++c)
|
||||||
|
{
|
||||||
|
if (*c != '\\')
|
||||||
|
{
|
||||||
|
name[i++] = *c;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
char price_str[8] = {0};
|
||||||
|
strncpy(price_str, start_price, end_price - start_price);
|
||||||
|
*price = atoi(price_str);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,11 +94,14 @@ void* craigslist_refresh(void* arg)
|
|||||||
mvwprintw(window, i, j, " ");
|
mvwprintw(window, i, j, " ");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int max_length = width - 2*START_COL;
|
||||||
char result[256] = {0};
|
char result[256] = {0};
|
||||||
unsigned price;
|
unsigned price;
|
||||||
if (parse_rand_craigslist(car_data.memory, result, &price))
|
if (parse_rand_craigslist(car_data.memory, result, &price))
|
||||||
{
|
{
|
||||||
|
result[max_length] = 0;
|
||||||
mvwprintw(window, START_ROW, START_COL, "%s", result);
|
mvwprintw(window, START_ROW, START_COL, "%s", result);
|
||||||
|
mvwprintw(window, START_ROW+1, START_COL, "$%d", price);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -132,10 +132,8 @@ void* mail_refresh(void* arg)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
wattron(window, COLOR_PAIR(COLORS_FAILURE));
|
wattron(window, COLOR_PAIR(COLORS_FAILURE));
|
||||||
mvwprintw(window, 0, TITLE_START_COL, " ONLINE ");
|
|
||||||
wattroff(window, COLOR_PAIR(COLORS_FAILURE));
|
|
||||||
|
|
||||||
mvwprintw(window, START_ROW, START_COL, "Couldn't retrieve mail server status");
|
mvwprintw(window, START_ROW, START_COL, "Couldn't retrieve mail server status");
|
||||||
|
wattroff(window, COLOR_PAIR(COLORS_FAILURE));
|
||||||
}
|
}
|
||||||
|
|
||||||
// refresh view
|
// refresh view
|
||||||
|
@ -67,19 +67,19 @@ int main(int argc, const char* argv[])
|
|||||||
|
|
||||||
// setup various status windows
|
// setup various status windows
|
||||||
// the bottom windows will be one row shorter to fit the status line at the end
|
// the bottom windows will be one row shorter to fit the status line at the end
|
||||||
WINDOW* topleft = create_newwin(LINES/4, COLS/2, 0, 0);
|
WINDOW* topleft = create_newwin((LINES - 11)/2, COLS/2, 0, 0);
|
||||||
WINDOW* topmidleft = create_newwin(LINES/4, COLS/2, LINES/4, 0);
|
WINDOW* topmidleft = create_newwin((LINES - 11)/2, COLS/2, (LINES - 11)/2, 0);
|
||||||
WINDOW* botmidleft = create_newwin(LINES/4, COLS/2, LINES*2/4, 0);
|
WINDOW* botmidleft = create_newwin(5, COLS/2, LINES - 11, 0);
|
||||||
WINDOW* botleft = create_newwin(LINES/4 - 1, COLS/2, LINES*3/4, 0);
|
WINDOW* botleft = create_newwin(5, COLS/2, LINES - 6, 0);
|
||||||
WINDOW* topright = create_newwin(LINES/2, COLS/2, 0, COLS/2);
|
WINDOW* topright = create_newwin(LINES/2, COLS/2, 0, COLS/2);
|
||||||
WINDOW* midright = create_newwin(LINES/4, COLS/2, LINES*2/4, COLS/2);
|
WINDOW* midright = create_newwin(LINES/4, COLS/2, LINES*2/4, COLS/2);
|
||||||
WINDOW* botright = create_newwin(LINES/4 - 1, COLS/2, LINES*3/4, COLS/2);
|
WINDOW* botright = create_newwin(LINES/4 - 1, COLS/2, LINES*3/4, COLS/2);
|
||||||
|
|
||||||
company_init(topleft, LINES/4, COLS/2);
|
company_init(topleft, LINES/4, COLS/2);
|
||||||
craigslist_init(midright, LINES/4, COLS/2);
|
craigslist_init(midright, LINES/4, COLS/2);
|
||||||
numbers_init(topmidleft, LINES/4, COLS/2);
|
numbers_init(botmidleft, LINES/4, COLS/2);
|
||||||
bool_init(botmidleft, LINES/4, COLS/2);
|
bool_init(botleft, LINES/4, COLS/2);
|
||||||
mail_init(botleft, LINES/4 - 1, COLS/2);
|
mail_init(topmidleft, LINES/4 - 1, COLS/2);
|
||||||
booru_init(botright, LINES/2 - 1, COLS/2);
|
booru_init(botright, LINES/2 - 1, COLS/2);
|
||||||
|
|
||||||
time_t t;
|
time_t t;
|
||||||
|
4
Makefile
4
Makefile
@ -1,5 +1,5 @@
|
|||||||
CFLAGS = -std=gnu99 `curl-config --cflags` `xml2-config --cflags` `ncurses6-config --cflags`
|
CFLAGS = -std=gnu99 `curl-config --cflags` `xml2-config --cflags` `ncursesw6-config --cflags`
|
||||||
LDFLAGS = `curl-config --libs` `xml2-config --libs` `ncurses6-config --libs` -lpthread
|
LDFLAGS = `curl-config --libs` `xml2-config --libs` `ncursesw6-config --libs` -lpthread
|
||||||
OUT = fem
|
OUT = fem
|
||||||
|
|
||||||
all:
|
all:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user