mirror of
https://github.com/Tha14/toxic.git
synced 2024-11-26 13:53:26 +01:00
Merge pull request #303 from louipc/interface
Add support for custom timestamps in chat and logs.
This commit is contained in:
commit
3e3f2614b5
@ -2,12 +2,12 @@
|
|||||||
.\" Title: toxic.conf
|
.\" Title: toxic.conf
|
||||||
.\" Author: [see the "AUTHORS" section]
|
.\" Author: [see the "AUTHORS" section]
|
||||||
.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
|
.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
|
||||||
.\" Date: 2015-02-08
|
.\" Date: 2015-02-19
|
||||||
.\" Manual: Toxic Manual
|
.\" Manual: Toxic Manual
|
||||||
.\" Source: toxic __VERSION__
|
.\" Source: toxic __VERSION__
|
||||||
.\" Language: English
|
.\" Language: English
|
||||||
.\"
|
.\"
|
||||||
.TH "TOXIC\&.CONF" "5" "2015\-02\-08" "toxic __VERSION__" "Toxic Manual"
|
.TH "TOXIC\&.CONF" "5" "2015\-02\-19" "toxic __VERSION__" "Toxic Manual"
|
||||||
.\" -----------------------------------------------------------------
|
.\" -----------------------------------------------------------------
|
||||||
.\" * Define some portability stuff
|
.\" * Define some portability stuff
|
||||||
.\" -----------------------------------------------------------------
|
.\" -----------------------------------------------------------------
|
||||||
@ -66,6 +66,23 @@ Configuration related to interface elements\&.
|
|||||||
Enable or disable timestamps\&. true or false
|
Enable or disable timestamps\&. true or false
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
|
\fBtime_format\fR
|
||||||
|
.RS 4
|
||||||
|
Select between 24 and 12 hour time\&. Specify 24 or 12\&. Setting timestamp_format and log_timestamp_format will override this setting\&.
|
||||||
|
.RE
|
||||||
|
.PP
|
||||||
|
\fBtimestamp_format\fR
|
||||||
|
.RS 4
|
||||||
|
Time format string for the interface enclosed by double quotes\&. See
|
||||||
|
\fBdate\fR(1)
|
||||||
|
.RE
|
||||||
|
.PP
|
||||||
|
\fBlog_timestamp_format\fR
|
||||||
|
.RS 4
|
||||||
|
Time format string for logging enclosed by double quotes\&. See
|
||||||
|
\fBdate\fR(1)
|
||||||
|
.RE
|
||||||
|
.PP
|
||||||
\fBalerts\fR
|
\fBalerts\fR
|
||||||
.RS 4
|
.RS 4
|
||||||
Enable or disable terminal alerts on events\&. true or false
|
Enable or disable terminal alerts on events\&. true or false
|
||||||
@ -81,11 +98,6 @@ Select between native terminal colors and toxic color theme\&. true or false
|
|||||||
Enable or disable autologging\&. true or false
|
Enable or disable autologging\&. true or false
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
\fBtime_format\fR
|
|
||||||
.RS 4
|
|
||||||
Select between 24 and 12 hour time\&. Specify 24 or 12
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBshow_typing_other\fR
|
\fBshow_typing_other\fR
|
||||||
.RS 4
|
.RS 4
|
||||||
Show when others are typing in a 1\-on\-1 chat\&. true or false
|
Show when others are typing in a 1\-on\-1 chat\&. true or false
|
||||||
|
@ -42,6 +42,18 @@ OPTIONS
|
|||||||
*timestamps*;;
|
*timestamps*;;
|
||||||
Enable or disable timestamps. true or false
|
Enable or disable timestamps. true or false
|
||||||
|
|
||||||
|
*time_format*;;
|
||||||
|
Select between 24 and 12 hour time. Specify 24 or 12. Setting
|
||||||
|
timestamp_format and log_timestamp_format will override this setting.
|
||||||
|
|
||||||
|
*timestamp_format*;;
|
||||||
|
Time format string for the interface enclosed by double quotes.
|
||||||
|
See *date*(1)
|
||||||
|
|
||||||
|
*log_timestamp_format*;;
|
||||||
|
Time format string for logging enclosed by double quotes.
|
||||||
|
See *date*(1)
|
||||||
|
|
||||||
*alerts*;;
|
*alerts*;;
|
||||||
Enable or disable terminal alerts on events. true or false
|
Enable or disable terminal alerts on events. true or false
|
||||||
|
|
||||||
@ -51,9 +63,6 @@ OPTIONS
|
|||||||
*autolog*;;
|
*autolog*;;
|
||||||
Enable or disable autologging. true or false
|
Enable or disable autologging. true or false
|
||||||
|
|
||||||
*time_format*;;
|
|
||||||
Select between 24 and 12 hour time. Specify 24 or 12
|
|
||||||
|
|
||||||
*show_typing_other*;;
|
*show_typing_other*;;
|
||||||
Show when others are typing in a 1-on-1 chat. true or false
|
Show when others are typing in a 1-on-1 chat. true or false
|
||||||
|
|
||||||
|
@ -17,6 +17,9 @@ ui = {
|
|||||||
// 24 or 12 hour time
|
// 24 or 12 hour time
|
||||||
time_format=24;
|
time_format=24;
|
||||||
|
|
||||||
|
// timestamp format string according to date/strftime format. Overrides time_format setting
|
||||||
|
timestamp_format="%H:%M:%S";
|
||||||
|
|
||||||
// true to show you when others are typing a message in 1-on-1 chats
|
// true to show you when others are typing a message in 1-on-1 chats
|
||||||
show_typing_other=true;
|
show_typing_other=true;
|
||||||
|
|
||||||
|
@ -299,7 +299,7 @@ static void update_friend_last_online(int32_t num, uint64_t timestamp)
|
|||||||
Friends.list[num].last_online.tm = *localtime((const time_t*)×tamp);
|
Friends.list[num].last_online.tm = *localtime((const time_t*)×tamp);
|
||||||
|
|
||||||
/* if the format changes make sure TIME_STR_SIZE is the correct size */
|
/* if the format changes make sure TIME_STR_SIZE is the correct size */
|
||||||
const char *t = user_settings->time == TIME_12 ? "%I:%M %p" : "%H:%M";
|
const char *t = user_settings->timestamp_format;
|
||||||
strftime(Friends.list[num].last_online.hour_min_str, TIME_STR_SIZE, t,
|
strftime(Friends.list[num].last_online.hour_min_str, TIME_STR_SIZE, t,
|
||||||
&Friends.list[num].last_online.tm);
|
&Friends.list[num].last_online.tm);
|
||||||
}
|
}
|
||||||
|
@ -202,7 +202,7 @@ void line_info_add(ToxWindow *self, const char *timestr, const char *name1, cons
|
|||||||
|
|
||||||
if (timestr) {
|
if (timestr) {
|
||||||
snprintf(new_line->timestr, sizeof(new_line->timestr), "%s", timestr);
|
snprintf(new_line->timestr, sizeof(new_line->timestr), "%s", timestr);
|
||||||
len += strlen(new_line->timestr);
|
len += strlen(new_line->timestr) + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (name1) {
|
if (name1) {
|
||||||
@ -302,7 +302,7 @@ void line_info_print(ToxWindow *self)
|
|||||||
case OUT_MSG_READ:
|
case OUT_MSG_READ:
|
||||||
case IN_MSG:
|
case IN_MSG:
|
||||||
wattron(win, COLOR_PAIR(BLUE));
|
wattron(win, COLOR_PAIR(BLUE));
|
||||||
wprintw(win, "%s", line->timestr);
|
wprintw(win, "%s ", line->timestr);
|
||||||
wattroff(win, COLOR_PAIR(BLUE));
|
wattroff(win, COLOR_PAIR(BLUE));
|
||||||
|
|
||||||
int nameclr = GREEN;
|
int nameclr = GREEN;
|
||||||
@ -342,7 +342,7 @@ void line_info_print(ToxWindow *self)
|
|||||||
case OUT_ACTION:
|
case OUT_ACTION:
|
||||||
case IN_ACTION:
|
case IN_ACTION:
|
||||||
wattron(win, COLOR_PAIR(BLUE));
|
wattron(win, COLOR_PAIR(BLUE));
|
||||||
wprintw(win, "%s", line->timestr);
|
wprintw(win, "%s ", line->timestr);
|
||||||
wattroff(win, COLOR_PAIR(BLUE));
|
wattroff(win, COLOR_PAIR(BLUE));
|
||||||
|
|
||||||
wattron(win, COLOR_PAIR(YELLOW));
|
wattron(win, COLOR_PAIR(YELLOW));
|
||||||
@ -366,7 +366,7 @@ void line_info_print(ToxWindow *self)
|
|||||||
case SYS_MSG:
|
case SYS_MSG:
|
||||||
if (line->timestr[0]) {
|
if (line->timestr[0]) {
|
||||||
wattron(win, COLOR_PAIR(BLUE));
|
wattron(win, COLOR_PAIR(BLUE));
|
||||||
wprintw(win, "%s", line->timestr);
|
wprintw(win, "%s ", line->timestr);
|
||||||
wattroff(win, COLOR_PAIR(BLUE));
|
wattroff(win, COLOR_PAIR(BLUE));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -399,7 +399,7 @@ void line_info_print(ToxWindow *self)
|
|||||||
|
|
||||||
case CONNECTION:
|
case CONNECTION:
|
||||||
wattron(win, COLOR_PAIR(BLUE));
|
wattron(win, COLOR_PAIR(BLUE));
|
||||||
wprintw(win, "%s", line->timestr);
|
wprintw(win, "%s ", line->timestr);
|
||||||
wattroff(win, COLOR_PAIR(BLUE));
|
wattroff(win, COLOR_PAIR(BLUE));
|
||||||
|
|
||||||
wattron(win, COLOR_PAIR(line->colour));
|
wattron(win, COLOR_PAIR(line->colour));
|
||||||
@ -416,7 +416,7 @@ void line_info_print(ToxWindow *self)
|
|||||||
|
|
||||||
case DISCONNECTION:
|
case DISCONNECTION:
|
||||||
wattron(win, COLOR_PAIR(BLUE));
|
wattron(win, COLOR_PAIR(BLUE));
|
||||||
wprintw(win, "%s", line->timestr);
|
wprintw(win, "%s ", line->timestr);
|
||||||
wattroff(win, COLOR_PAIR(BLUE));
|
wattroff(win, COLOR_PAIR(BLUE));
|
||||||
|
|
||||||
wattron(win, COLOR_PAIR(line->colour));
|
wattron(win, COLOR_PAIR(line->colour));
|
||||||
@ -433,7 +433,7 @@ void line_info_print(ToxWindow *self)
|
|||||||
|
|
||||||
case NAME_CHANGE:
|
case NAME_CHANGE:
|
||||||
wattron(win, COLOR_PAIR(BLUE));
|
wattron(win, COLOR_PAIR(BLUE));
|
||||||
wprintw(win, "%s", line->timestr);
|
wprintw(win, "%s ", line->timestr);
|
||||||
wattroff(win, COLOR_PAIR(BLUE));
|
wattroff(win, COLOR_PAIR(BLUE));
|
||||||
|
|
||||||
wattron(win, COLOR_PAIR(MAGENTA));
|
wattron(win, COLOR_PAIR(MAGENTA));
|
||||||
|
@ -134,7 +134,7 @@ void write_to_log(const char *msg, const char *name, struct chatlog *log, bool e
|
|||||||
else
|
else
|
||||||
snprintf(name_frmt, sizeof(name_frmt), "%s:", name);
|
snprintf(name_frmt, sizeof(name_frmt), "%s:", name);
|
||||||
|
|
||||||
const char *t = user_settings->time == TIME_12 ? "%Y/%m/%d [%I:%M:%S %p]" : "%Y/%m/%d [%H:%M:%S]";
|
const char *t = user_settings->log_timestamp_format;
|
||||||
char s[MAX_STR_SIZE];
|
char s[MAX_STR_SIZE];
|
||||||
strftime(s, MAX_STR_SIZE, t, get_time());
|
strftime(s, MAX_STR_SIZE, t, get_time());
|
||||||
fprintf(log->file, "%s %s %s\n", s, name_frmt, msg);
|
fprintf(log->file, "%s %s %s\n", s, name_frmt, msg);
|
||||||
|
@ -87,7 +87,7 @@ void get_time_str(char *buf, int bufsize)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *t = user_settings->time == TIME_12 ? "%I:%M:%S " : "%H:%M:%S ";
|
const char *t = user_settings->timestamp_format;
|
||||||
strftime(buf, bufsize, t, get_time());
|
strftime(buf, bufsize, t, get_time());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,10 +47,12 @@
|
|||||||
static struct ui_strings {
|
static struct ui_strings {
|
||||||
const char* self;
|
const char* self;
|
||||||
const char* timestamps;
|
const char* timestamps;
|
||||||
|
const char* time_format;
|
||||||
|
const char* timestamp_format;
|
||||||
|
const char* log_timestamp_format;
|
||||||
const char* alerts;
|
const char* alerts;
|
||||||
const char* native_colors;
|
const char* native_colors;
|
||||||
const char* autolog;
|
const char* autolog;
|
||||||
const char* time_format;
|
|
||||||
const char* history_size;
|
const char* history_size;
|
||||||
const char* show_typing_self;
|
const char* show_typing_self;
|
||||||
const char* show_typing_other;
|
const char* show_typing_other;
|
||||||
@ -63,10 +65,12 @@ static struct ui_strings {
|
|||||||
} ui_strings = {
|
} ui_strings = {
|
||||||
"ui",
|
"ui",
|
||||||
"timestamps",
|
"timestamps",
|
||||||
|
"time_format",
|
||||||
|
"timestamp_format",
|
||||||
|
"log_timestamp_format",
|
||||||
"alerts",
|
"alerts",
|
||||||
"native_colors",
|
"native_colors",
|
||||||
"autolog",
|
"autolog",
|
||||||
"time_format",
|
|
||||||
"history_size",
|
"history_size",
|
||||||
"show_typing_self",
|
"show_typing_self",
|
||||||
"show_typing_other",
|
"show_typing_other",
|
||||||
@ -80,7 +84,9 @@ static struct ui_strings {
|
|||||||
static void ui_defaults(struct user_settings* settings)
|
static void ui_defaults(struct user_settings* settings)
|
||||||
{
|
{
|
||||||
settings->timestamps = TIMESTAMPS_ON;
|
settings->timestamps = TIMESTAMPS_ON;
|
||||||
settings->time = TIME_24;
|
snprintf(settings->timestamp_format, sizeof(settings->timestamp_format), "%s", TIMESTAMP_DEFAULT);
|
||||||
|
snprintf(settings->log_timestamp_format, sizeof(settings->log_timestamp_format), "%s", LOG_TIMESTAMP_DEFAULT);
|
||||||
|
|
||||||
settings->autolog = AUTOLOG_OFF;
|
settings->autolog = AUTOLOG_OFF;
|
||||||
settings->alerts = ALERTS_ENABLED;
|
settings->alerts = ALERTS_ENABLED;
|
||||||
settings->colour_theme = DFLT_COLS;
|
settings->colour_theme = DFLT_COLS;
|
||||||
@ -267,6 +273,23 @@ int settings_load(struct user_settings *s, const char *patharg)
|
|||||||
/* ui */
|
/* ui */
|
||||||
if ((setting = config_lookup(cfg, ui_strings.self)) != NULL) {
|
if ((setting = config_lookup(cfg, ui_strings.self)) != NULL) {
|
||||||
config_setting_lookup_bool(setting, ui_strings.timestamps, &s->timestamps);
|
config_setting_lookup_bool(setting, ui_strings.timestamps, &s->timestamps);
|
||||||
|
|
||||||
|
int time = 24;
|
||||||
|
if ( config_setting_lookup_int(setting, ui_strings.time_format, &time) ) {
|
||||||
|
if (time == 12) {
|
||||||
|
snprintf(s->timestamp_format, sizeof(s->timestamp_format), "%s", "%I:%M:%S %p");
|
||||||
|
snprintf(s->log_timestamp_format, sizeof(s->log_timestamp_format), "%s", "%Y/%m/%d [%I:%M:%S %p]");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( config_setting_lookup_string(setting, ui_strings.timestamp_format, &str) ) {
|
||||||
|
snprintf(s->timestamp_format, sizeof(s->timestamp_format), "%s", str);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( config_setting_lookup_string(setting, ui_strings.log_timestamp_format, &str) ) {
|
||||||
|
snprintf(s->log_timestamp_format, sizeof(s->log_timestamp_format), "%s", str);
|
||||||
|
}
|
||||||
|
|
||||||
config_setting_lookup_bool(setting, ui_strings.alerts, &s->alerts);
|
config_setting_lookup_bool(setting, ui_strings.alerts, &s->alerts);
|
||||||
config_setting_lookup_bool(setting, ui_strings.autolog, &s->autolog);
|
config_setting_lookup_bool(setting, ui_strings.autolog, &s->autolog);
|
||||||
config_setting_lookup_bool(setting, ui_strings.native_colors, &s->colour_theme);
|
config_setting_lookup_bool(setting, ui_strings.native_colors, &s->colour_theme);
|
||||||
@ -274,8 +297,6 @@ int settings_load(struct user_settings *s, const char *patharg)
|
|||||||
config_setting_lookup_bool(setting, ui_strings.show_typing_self, &s->show_typing_self);
|
config_setting_lookup_bool(setting, ui_strings.show_typing_self, &s->show_typing_self);
|
||||||
config_setting_lookup_bool(setting, ui_strings.show_typing_other, &s->show_typing_other);
|
config_setting_lookup_bool(setting, ui_strings.show_typing_other, &s->show_typing_other);
|
||||||
config_setting_lookup_bool(setting, ui_strings.show_welcome_msg, &s->show_welcome_msg);
|
config_setting_lookup_bool(setting, ui_strings.show_welcome_msg, &s->show_welcome_msg);
|
||||||
config_setting_lookup_int(setting, ui_strings.time_format, &s->time);
|
|
||||||
s->time = s->time == TIME_24 || s->time == TIME_12 ? s->time : TIME_24; /* Check defaults */
|
|
||||||
|
|
||||||
if ( config_setting_lookup_string(setting, ui_strings.line_join, &str) ) {
|
if ( config_setting_lookup_string(setting, ui_strings.line_join, &str) ) {
|
||||||
snprintf(s->line_join, sizeof(s->line_join), "%s", str);
|
snprintf(s->line_join, sizeof(s->line_join), "%s", str);
|
||||||
|
@ -32,8 +32,11 @@
|
|||||||
struct user_settings {
|
struct user_settings {
|
||||||
int autolog; /* boolean */
|
int autolog; /* boolean */
|
||||||
int alerts; /* boolean */
|
int alerts; /* boolean */
|
||||||
int time; /* 12 or 24 */
|
|
||||||
int timestamps; /* boolean */
|
int timestamps; /* boolean */
|
||||||
|
char timestamp_format[TIME_STR_SIZE];
|
||||||
|
char log_timestamp_format[TIME_STR_SIZE];
|
||||||
|
|
||||||
int colour_theme; /* boolean (0 for default toxic colours) */
|
int colour_theme; /* boolean (0 for default toxic colours) */
|
||||||
int history_size; /* int between MIN_HISTORY and MAX_HISTORY */
|
int history_size; /* int between MIN_HISTORY and MAX_HISTORY */
|
||||||
int show_typing_self; /* boolean */
|
int show_typing_self; /* boolean */
|
||||||
@ -71,9 +74,6 @@ enum {
|
|||||||
AUTOLOG_OFF = 0,
|
AUTOLOG_OFF = 0,
|
||||||
AUTOLOG_ON = 1,
|
AUTOLOG_ON = 1,
|
||||||
|
|
||||||
TIME_24 = 24,
|
|
||||||
TIME_12 = 12,
|
|
||||||
|
|
||||||
TIMESTAMPS_OFF = 0,
|
TIMESTAMPS_OFF = 0,
|
||||||
TIMESTAMPS_ON = 1,
|
TIMESTAMPS_ON = 1,
|
||||||
|
|
||||||
@ -96,6 +96,8 @@ enum {
|
|||||||
#define LINE_QUIT "<--"
|
#define LINE_QUIT "<--"
|
||||||
#define LINE_ALERT "-!-"
|
#define LINE_ALERT "-!-"
|
||||||
#define LINE_NORMAL "---"
|
#define LINE_NORMAL "---"
|
||||||
|
#define TIMESTAMP_DEFAULT "%H:%M:%S"
|
||||||
|
#define LOG_TIMESTAMP_DEFAULT "%Y/%m/%d [%H:%M:%S]"
|
||||||
|
|
||||||
int settings_load(struct user_settings *s, const char *patharg);
|
int settings_load(struct user_settings *s, const char *patharg);
|
||||||
#endif /* #define SETTINGS_H */
|
#endif /* #define SETTINGS_H */
|
||||||
|
@ -47,7 +47,7 @@
|
|||||||
#define MAX_CMDNAME_SIZE 64
|
#define MAX_CMDNAME_SIZE 64
|
||||||
#define TOXIC_MAX_NAME_LENGTH 32 /* Must be <= TOX_MAX_NAME_LENGTH */
|
#define TOXIC_MAX_NAME_LENGTH 32 /* Must be <= TOX_MAX_NAME_LENGTH */
|
||||||
#define KEY_IDENT_DIGITS 3 /* number of hex digits to display for the pub-key based identifier */
|
#define KEY_IDENT_DIGITS 3 /* number of hex digits to display for the pub-key based identifier */
|
||||||
#define TIME_STR_SIZE 16
|
#define TIME_STR_SIZE 32
|
||||||
|
|
||||||
/* ASCII key codes */
|
/* ASCII key codes */
|
||||||
#define T_KEY_ESC 0x1B /* ESC key */
|
#define T_KEY_ESC 0x1B /* ESC key */
|
||||||
|
Loading…
Reference in New Issue
Block a user