mirror of
https://github.com/profanity-im/profanity.git
synced 2025-01-03 14:57:42 -05:00
Merge branch 'master' into type_out
This commit is contained in:
commit
43a7f58850
@ -72,6 +72,8 @@ notify=true
|
||||
.br
|
||||
chlog=true
|
||||
.br
|
||||
history=true
|
||||
.br
|
||||
typing=true
|
||||
.br
|
||||
remind=15
|
||||
|
@ -44,8 +44,8 @@ static gboolean _log_roll_needed(struct dated_chat_log *dated_log);
|
||||
static struct dated_chat_log *_create_log(char *other, const char * const login);
|
||||
static void _free_chat_log(struct dated_chat_log *dated_log);
|
||||
static gboolean _key_equals(void *key1, void *key2);
|
||||
static char * _get_log_filename(char *other, const char * const login,
|
||||
GDateTime *dt);
|
||||
static char * _get_log_filename(const char * const other, const char * const login,
|
||||
GDateTime *dt, gboolean create);
|
||||
|
||||
void
|
||||
chat_log_init(void)
|
||||
@ -94,7 +94,7 @@ chat_log_chat(const gchar * const login, gchar *other,
|
||||
}
|
||||
|
||||
GSList *
|
||||
chat_log_get_previous(const gchar * const login, gchar *recipient,
|
||||
chat_log_get_previous(const gchar * const login, const gchar * const recipient,
|
||||
GSList *history)
|
||||
{
|
||||
GTimeZone *tz = g_time_zone_new_local();
|
||||
@ -110,7 +110,7 @@ chat_log_get_previous(const gchar * const login, gchar *recipient,
|
||||
|
||||
// get data from all logs from the day the session was started to today
|
||||
while (g_date_time_get_day_of_year(log_date) <= g_date_time_get_day_of_year(now)) {
|
||||
char *filename = _get_log_filename(recipient, login, log_date);
|
||||
char *filename = _get_log_filename(recipient, login, log_date, FALSE);
|
||||
|
||||
FILE *logp = fopen(filename, "r");
|
||||
char *line = NULL;
|
||||
@ -162,7 +162,7 @@ static struct dated_chat_log *
|
||||
_create_log(char *other, const char * const login)
|
||||
{
|
||||
GDateTime *now = g_date_time_new_now_local();
|
||||
char *filename = _get_log_filename(other, login, now);
|
||||
char *filename = _get_log_filename(other, login, now, TRUE);
|
||||
|
||||
struct dated_chat_log *new_log = malloc(sizeof(struct dated_chat_log));
|
||||
new_log->filename = strdup(filename);
|
||||
@ -213,20 +213,27 @@ gboolean _key_equals(void *key1, void *key2)
|
||||
}
|
||||
|
||||
static char *
|
||||
_get_log_filename(char *other, const char * const login, GDateTime *dt)
|
||||
_get_log_filename(const char * const other, const char * const login,
|
||||
GDateTime *dt, gboolean create)
|
||||
{
|
||||
GString *log_file = g_string_new(getenv("HOME"));
|
||||
g_string_append(log_file, "/.profanity/log");
|
||||
create_dir(log_file->str);
|
||||
if (create) {
|
||||
create_dir(log_file->str);
|
||||
}
|
||||
|
||||
gchar *login_dir = str_replace(login, "@", "_at_");
|
||||
g_string_append_printf(log_file, "/%s", login_dir);
|
||||
create_dir(log_file->str);
|
||||
if (create) {
|
||||
create_dir(log_file->str);
|
||||
}
|
||||
free(login_dir);
|
||||
|
||||
gchar *other_file = str_replace(other, "@", "_at_");
|
||||
g_string_append_printf(log_file, "/%s", other_file);
|
||||
create_dir(log_file->str);
|
||||
if (create) {
|
||||
create_dir(log_file->str);
|
||||
}
|
||||
free(other_file);
|
||||
|
||||
gchar *date = g_date_time_format(dt, "/%Y_%m_%d.log");
|
||||
|
@ -34,7 +34,7 @@ void chat_log_init(void);
|
||||
void chat_log_chat(const gchar * const login, gchar *other,
|
||||
const gchar * const msg, chat_log_direction_t direction);
|
||||
void chat_log_close(void);
|
||||
GSList * chat_log_get_previous(const gchar * const login, gchar *recipient,
|
||||
GSList *history);
|
||||
GSList * chat_log_get_previous(const gchar * const login,
|
||||
const gchar * const recipient, GSList *history);
|
||||
|
||||
#endif
|
||||
|
@ -74,6 +74,7 @@ static gboolean _cmd_set_typing(const char * const inp, struct cmd_help_t help);
|
||||
static gboolean _cmd_set_flash(const char * const inp, struct cmd_help_t help);
|
||||
static gboolean _cmd_set_showsplash(const char * const inp, struct cmd_help_t help);
|
||||
static gboolean _cmd_set_chlog(const char * const inp, struct cmd_help_t help);
|
||||
static gboolean _cmd_set_history(const char * const inp, struct cmd_help_t help);
|
||||
static gboolean _cmd_set_remind(const char * const inp, struct cmd_help_t help);
|
||||
static gboolean _cmd_away(const char * const inp, struct cmd_help_t help);
|
||||
static gboolean _cmd_online(const char * const inp, struct cmd_help_t help);
|
||||
@ -275,6 +276,18 @@ static struct cmd_t setting_commands[] =
|
||||
"to myfriend@chatserv.com, the following chat log will be created:",
|
||||
"",
|
||||
" ~/.profanity/log/someuser_at_chatserv.com/myfriend_at_chatserv.com",
|
||||
NULL } } },
|
||||
|
||||
{ "/history",
|
||||
_cmd_set_history,
|
||||
{ "/history on|off", "Enable/disable chat history.",
|
||||
{ "/history on|off",
|
||||
"-------------",
|
||||
"Switch chat history on or off, requires chlog to be enabled.",
|
||||
"When history is enabled, previous messages are shown in chat windows.",
|
||||
"The last day of messages are shown, or if you have had profanity open",
|
||||
"for more than a day, messages will be shown from the day which",
|
||||
"you started profanity.",
|
||||
NULL } } }
|
||||
};
|
||||
|
||||
@ -768,6 +781,13 @@ _cmd_set_chlog(const char * const inp, struct cmd_help_t help)
|
||||
"Chat logging", prefs_set_chlog);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
_cmd_set_history(const char * const inp, struct cmd_help_t help)
|
||||
{
|
||||
return _cmd_set_boolean_preference(inp, help, "/history",
|
||||
"Chat history", prefs_set_history);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
_cmd_set_remind(const char * const inp, struct cmd_help_t help)
|
||||
{
|
||||
|
@ -269,6 +269,19 @@ prefs_set_chlog(gboolean value)
|
||||
_save_prefs();
|
||||
}
|
||||
|
||||
gboolean
|
||||
prefs_get_history(void)
|
||||
{
|
||||
return g_key_file_get_boolean(prefs, "ui", "history", NULL);
|
||||
}
|
||||
|
||||
void
|
||||
prefs_set_history(gboolean value)
|
||||
{
|
||||
g_key_file_set_boolean(prefs, "ui", "history", value);
|
||||
_save_prefs();
|
||||
}
|
||||
|
||||
gint
|
||||
prefs_get_remind(void)
|
||||
{
|
||||
|
@ -50,6 +50,8 @@ gboolean prefs_get_flash(void);
|
||||
void prefs_set_flash(gboolean value);
|
||||
gboolean prefs_get_chlog(void);
|
||||
void prefs_set_chlog(gboolean value);
|
||||
gboolean prefs_get_history(void);
|
||||
void prefs_set_history(gboolean value);
|
||||
gboolean prefs_get_showsplash(void);
|
||||
void prefs_set_showsplash(gboolean value);
|
||||
gint prefs_get_remind(void);
|
||||
|
@ -283,7 +283,7 @@ win_show_incomming_msg(const char * const from, const char * const message)
|
||||
flash();
|
||||
|
||||
_wins[win_index].unread++;
|
||||
if (prefs_get_chlog()) {
|
||||
if (prefs_get_chlog() && prefs_get_history()) {
|
||||
if (!_wins[win_index].history_shown) {
|
||||
GSList *history = NULL;
|
||||
history = chat_log_get_previous(jabber_get_jid(), short_from, history);
|
||||
@ -389,7 +389,7 @@ win_show_outgoing_msg(const char * const from, const char * const to,
|
||||
win_index = _new_prof_win(to);
|
||||
win = _wins[win_index].win;
|
||||
|
||||
if (prefs_get_chlog()) {
|
||||
if (prefs_get_chlog() && prefs_get_history()) {
|
||||
if (!_wins[win_index].history_shown) {
|
||||
GSList *history = NULL;
|
||||
history = chat_log_get_previous(jabber_get_jid(), to, history);
|
||||
@ -531,6 +531,11 @@ cons_prefs(void)
|
||||
else
|
||||
cons_show("Chat logging : OFF");
|
||||
|
||||
if (prefs_get_history())
|
||||
cons_show("Chat history : ON");
|
||||
else
|
||||
cons_show("Chat history : OFF");
|
||||
|
||||
gint remind_period = prefs_get_remind();
|
||||
if (remind_period == 0) {
|
||||
cons_show("Message reminder period : OFF");
|
||||
|
Loading…
Reference in New Issue
Block a user