Update to v0.12-alpha and add area headers

This commit is contained in:
Andrew Pamment 2018-10-04 10:05:04 +10:00
parent 1d1f83cd41
commit 991b1c4368
3 changed files with 43 additions and 25 deletions

View File

@ -14,7 +14,7 @@
#include "jamlib/jam.h" #include "jamlib/jam.h"
#define VERSION_MAJOR 0 #define VERSION_MAJOR 0
#define VERSION_MINOR 11 #define VERSION_MINOR 12
#define VERSION_STR "alpha" #define VERSION_STR "alpha"
#define NETWORK_FIDO 1 #define NETWORK_FIDO 1
@ -76,6 +76,7 @@ struct mail_conference {
char *path; char *path;
char *tagline; char *tagline;
char *domain; char *domain;
char *header;
int networked; int networked;
int nettype; int nettype;
int realnames; int realnames;

View File

@ -2921,6 +2921,14 @@ void choose_area() {
int start = 0; int start = 0;
int selected = 0; int selected = 0;
char c; char c;
int offset = 2;
int height = 22;
if (conf.mail_conferences[gUser->cur_mail_conf]->header != NULL) {
offset = 8;
height = 13;
}
for (i=0;i<conf.mail_conferences[gUser->cur_mail_conf]->mail_area_count;i++) { for (i=0;i<conf.mail_conferences[gUser->cur_mail_conf]->mail_area_count;i++) {
if (conf.mail_conferences[gUser->cur_mail_conf]->mail_areas[i]->read_sec_level <= gUser->sec_level) { if (conf.mail_conferences[gUser->cur_mail_conf]->mail_areas[i]->read_sec_level <= gUser->sec_level) {
@ -2939,25 +2947,31 @@ void choose_area() {
while (1) { while (1) {
if (redraw) { if (redraw) {
if (conf.mail_conferences[gUser->cur_mail_conf]->header != NULL) {
s_printf("\e[2J\e[1;1H"); s_printf("\e[2J\e[1;1H");
s_displayansi(conf.mail_conferences[gUser->cur_mail_conf]->header);
s_printf("\e[7;1H");
} else {
s_printf("\e[2J\e[1;1H");
}
s_printf(get_string(251), conf.mail_conferences[gUser->cur_mail_conf]->name); s_printf(get_string(251), conf.mail_conferences[gUser->cur_mail_conf]->name);
s_printf(get_string(248)); s_printf(get_string(248));
for (i=start;i<start+22 && i < list_tmp;i++) { for (i=start;i<start+height && i < list_tmp;i++) {
if (i == selected) { if (i == selected) {
if (new_messages(gUser, gUser->cur_mail_conf, area_tmp[i]->index)) { if (new_messages(gUser, gUser->cur_mail_conf, area_tmp[i]->index)) {
s_printf(get_string(259), i - start + 2, area_tmp[i]->index, area_tmp[i]->area->name); s_printf(get_string(259), i - start + offset, area_tmp[i]->index, area_tmp[i]->area->name);
} else { } else {
s_printf(get_string(249), i - start + 2, area_tmp[i]->index, area_tmp[i]->area->name); s_printf(get_string(249), i - start + offset, area_tmp[i]->index, area_tmp[i]->area->name);
} }
} else { } else {
if (new_messages(gUser, gUser->cur_mail_conf, area_tmp[i]->index)) { if (new_messages(gUser, gUser->cur_mail_conf, area_tmp[i]->index)) {
s_printf(get_string(260), i - start + 2, area_tmp[i]->index, area_tmp[i]->area->name); s_printf(get_string(260), i - start + offset, area_tmp[i]->index, area_tmp[i]->area->name);
} else { } else {
s_printf(get_string(250), i - start + 2, area_tmp[i]->index, area_tmp[i]->area->name); s_printf(get_string(250), i - start + offset, area_tmp[i]->index, area_tmp[i]->area->name);
} }
} }
} }
s_printf("\e[%d;5H", selected - start + 2); s_printf("\e[%d;5H", selected - start + offset);
redraw = 0; redraw = 0;
} }
c = s_getchar(); c = s_getchar();
@ -2969,10 +2983,10 @@ void choose_area() {
c = s_getchar(); c = s_getchar();
if (c == 66) { if (c == 66) {
// down // down
if (selected + 1 >= start + 22) { if (selected + 1 >= start + height) {
start += 22; start += height;
if (start >= list_tmp) { if (start >= list_tmp) {
start = list_tmp - 22; start = list_tmp - height;
} }
redraw = 1; redraw = 1;
} }
@ -2982,22 +2996,22 @@ void choose_area() {
} else { } else {
if (!redraw) { if (!redraw) {
if (new_messages(gUser, gUser->cur_mail_conf, area_tmp[selected - 1]->index)) { if (new_messages(gUser, gUser->cur_mail_conf, area_tmp[selected - 1]->index)) {
s_printf(get_string(260), selected - start + 1, area_tmp[selected - 1]->index, area_tmp[selected - 1]->area->name); s_printf(get_string(260), selected - start + (offset - 1), area_tmp[selected - 1]->index, area_tmp[selected - 1]->area->name);
} else { } else {
s_printf(get_string(250), selected - start + 1, area_tmp[selected - 1]->index, area_tmp[selected - 1]->area->name); s_printf(get_string(250), selected - start + (offset - 1), area_tmp[selected - 1]->index, area_tmp[selected - 1]->area->name);
} }
if (new_messages(gUser, gUser->cur_mail_conf, area_tmp[selected]->index)) { if (new_messages(gUser, gUser->cur_mail_conf, area_tmp[selected]->index)) {
s_printf(get_string(259), selected - start + 2, area_tmp[selected]->index, area_tmp[selected]->area->name); s_printf(get_string(259), selected - start + offset, area_tmp[selected]->index, area_tmp[selected]->area->name);
} else { } else {
s_printf(get_string(249), selected - start + 2, area_tmp[selected]->index, area_tmp[selected]->area->name); s_printf(get_string(249), selected - start + offset, area_tmp[selected]->index, area_tmp[selected]->area->name);
} }
s_printf("\e[%d;5H", selected - start + 2); s_printf("\e[%d;5H", selected - start + offset);
} }
} }
} else if (c == 65) { } else if (c == 65) {
// up // up
if (selected - 1 < start) { if (selected - 1 < start) {
start -= 22; start -= height;
if (start < 0) { if (start < 0) {
start = 0; start = 0;
} }
@ -3009,22 +3023,22 @@ void choose_area() {
} else { } else {
if (!redraw) { if (!redraw) {
if (new_messages(gUser, gUser->cur_mail_conf, area_tmp[selected]->index)) { if (new_messages(gUser, gUser->cur_mail_conf, area_tmp[selected]->index)) {
s_printf(get_string(259), selected - start + 2, area_tmp[selected]->index, area_tmp[selected]->area->name); s_printf(get_string(259), selected - start + offset, area_tmp[selected]->index, area_tmp[selected]->area->name);
} else { } else {
s_printf(get_string(249), selected - start + 2, area_tmp[selected]->index, area_tmp[selected]->area->name); s_printf(get_string(249), selected - start + offset, area_tmp[selected]->index, area_tmp[selected]->area->name);
} }
if (new_messages(gUser, gUser->cur_mail_conf, area_tmp[selected + 1]->index)) { if (new_messages(gUser, gUser->cur_mail_conf, area_tmp[selected + 1]->index)) {
s_printf(get_string(260), selected - start + 3, area_tmp[selected + 1]->index, area_tmp[selected + 1]->area->name); s_printf(get_string(260), selected - start + (offset + 1), area_tmp[selected + 1]->index, area_tmp[selected + 1]->area->name);
} else { } else {
s_printf(get_string(250), selected - start + 3, area_tmp[selected + 1]->index, area_tmp[selected + 1]->area->name); s_printf(get_string(250), selected - start + (offset + 1), area_tmp[selected + 1]->index, area_tmp[selected + 1]->area->name);
} }
s_printf("\e[%d;5H", selected - start + 2); s_printf("\e[%d;5H", selected - start + offset);
} }
} }
} else if (c == 75) { } else if (c == 75) {
// END KEY // END KEY
selected = list_tmp - 1; selected = list_tmp - 1;
start = list_tmp - 22; start = list_tmp - height;
if (start < 0) { if (start < 0) {
start = 0; start = 0;
} }
@ -3039,7 +3053,7 @@ void choose_area() {
s_getchar(); s_getchar();
} }
// PAGE UP // PAGE UP
selected = selected - 22; selected = selected - height;
if (selected < 0) { if (selected < 0) {
selected = 0; selected = 0;
} }
@ -3050,7 +3064,7 @@ void choose_area() {
s_getchar(); s_getchar();
} }
// PAGE DOWN // PAGE DOWN
selected = selected + 22; selected = selected + height;
if (selected >= list_tmp) { if (selected >= list_tmp) {
selected = list_tmp -1; selected = list_tmp -1;
} }

View File

@ -330,6 +330,8 @@ static int mail_area_handler(void* user, const char* section, const char* name,
} }
} else if (strcasecmp(name, "tagline") == 0) { } else if (strcasecmp(name, "tagline") == 0) {
mc->tagline = strdup(value); mc->tagline = strdup(value);
} else if (strcasecmp(name, "header") == 0) {
mc->header = strdup(value);
} }
} else if (strcasecmp(section, "network") == 0) { } else if (strcasecmp(section, "network") == 0) {
if (strcasecmp(name, "type") == 0) { if (strcasecmp(name, "type") == 0) {
@ -584,6 +586,7 @@ static int handler(void* user, const char* section, const char* name,
conf->mail_conferences[conf->mail_conference_count]->mail_area_count = 0; conf->mail_conferences[conf->mail_conference_count]->mail_area_count = 0;
conf->mail_conferences[conf->mail_conference_count]->nettype = 0; conf->mail_conferences[conf->mail_conference_count]->nettype = 0;
conf->mail_conferences[conf->mail_conference_count]->domain = NULL; conf->mail_conferences[conf->mail_conference_count]->domain = NULL;
conf->mail_conferences[conf->mail_conference_count]->header = NULL;
conf->mail_conference_count++; conf->mail_conference_count++;
} else if (strcasecmp(section, "file directories") == 0) { } else if (strcasecmp(section, "file directories") == 0) {
if (conf->file_directory_count == 0) { if (conf->file_directory_count == 0) {