mirror of
https://github.com/Tha14/toxic.git
synced 2024-11-16 04:03:02 +01:00
add setting to control history size
This commit is contained in:
parent
083ca2f3b7
commit
f0962bd060
@ -7,6 +7,9 @@ autolog:0;
|
|||||||
# 1 to disbale terminal alerts on messages, 0 to enable
|
# 1 to disbale terminal alerts on messages, 0 to enable
|
||||||
disable_alerts:0;
|
disable_alerts:0;
|
||||||
|
|
||||||
|
# maximum lines for chat window history
|
||||||
|
history_size:700;
|
||||||
|
|
||||||
# 1 to use native terminal colours, 0 to use toxic default colour theme
|
# 1 to use native terminal colours, 0 to use toxic default colour theme
|
||||||
colour_theme:0;
|
colour_theme:0;
|
||||||
|
|
||||||
|
@ -31,6 +31,9 @@
|
|||||||
#include "toxic_windows.h"
|
#include "toxic_windows.h"
|
||||||
#include "line_info.h"
|
#include "line_info.h"
|
||||||
#include "groupchat.h"
|
#include "groupchat.h"
|
||||||
|
#include "settings.h"
|
||||||
|
|
||||||
|
extern struct user_settings *user_settings;
|
||||||
|
|
||||||
void line_info_init(struct history *hst)
|
void line_info_init(struct history *hst)
|
||||||
{
|
{
|
||||||
@ -164,7 +167,7 @@ void line_info_add(ToxWindow *self, uint8_t *tmstmp, uint8_t *name1, uint8_t *na
|
|||||||
hst->line_end->next = new_line;
|
hst->line_end->next = new_line;
|
||||||
hst->line_end = new_line;
|
hst->line_end = new_line;
|
||||||
|
|
||||||
if (++hst->line_items > MAX_HISTORY) {
|
if (++hst->line_items > user_settings->history_size) {
|
||||||
--hst->line_items;
|
--hst->line_items;
|
||||||
line_info_root_fwd(hst);
|
line_info_root_fwd(hst);
|
||||||
}
|
}
|
||||||
@ -216,7 +219,7 @@ void line_info_print(ToxWindow *self)
|
|||||||
getmaxyx(self->window, y2, x2);
|
getmaxyx(self->window, y2, x2);
|
||||||
|
|
||||||
if (self->is_prompt)
|
if (self->is_prompt)
|
||||||
y2 = MAX_HISTORY; /* temporary fix to make prompt scroll */
|
y2 = user_settings->history_size; /* temporary fix to make prompt scroll */
|
||||||
|
|
||||||
if (x2 <= SIDEBAR_WIDTH)
|
if (x2 <= SIDEBAR_WIDTH)
|
||||||
return;
|
return;
|
||||||
|
@ -20,7 +20,8 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define MAX_HISTORY 700
|
#define MAX_HISTORY 10000
|
||||||
|
#define MIN_HISTORY 20
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
SYS_MSG,
|
SYS_MSG,
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
#include "configdir.h"
|
#include "configdir.h"
|
||||||
#include "audio_call.h"
|
#include "audio_call.h"
|
||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
|
#include "line_info.h"
|
||||||
|
|
||||||
static void uset_autolog(struct user_settings *s, int val);
|
static void uset_autolog(struct user_settings *s, int val);
|
||||||
static void uset_time(struct user_settings *s, int val);
|
static void uset_time(struct user_settings *s, int val);
|
||||||
@ -34,6 +35,7 @@ static void uset_alerts(struct user_settings *s, int val);
|
|||||||
static void uset_colours(struct user_settings *s, int val);
|
static void uset_colours(struct user_settings *s, int val);
|
||||||
static void uset_ain_dev(struct user_settings *s, int val);
|
static void uset_ain_dev(struct user_settings *s, int val);
|
||||||
static void uset_aout_dev(struct user_settings *s, int val);
|
static void uset_aout_dev(struct user_settings *s, int val);
|
||||||
|
static void uset_hst_size(struct user_settings *s, int val);
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
const char *name;
|
const char *name;
|
||||||
@ -45,6 +47,7 @@ struct {
|
|||||||
{ "colour_theme", uset_colours },
|
{ "colour_theme", uset_colours },
|
||||||
{ "audio_in_dev", uset_ain_dev },
|
{ "audio_in_dev", uset_ain_dev },
|
||||||
{ "audio_out_dev", uset_aout_dev },
|
{ "audio_out_dev", uset_aout_dev },
|
||||||
|
{ "history_size", uset_hst_size },
|
||||||
};
|
};
|
||||||
|
|
||||||
static void uset_autolog(struct user_settings *s, int val)
|
static void uset_autolog(struct user_settings *s, int val)
|
||||||
@ -87,6 +90,12 @@ static void uset_aout_dev(struct user_settings *s, int val)
|
|||||||
s->audio_out_dev = (long int) val;
|
s->audio_out_dev = (long int) val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void uset_hst_size(struct user_settings *s, int val)
|
||||||
|
{
|
||||||
|
/* if val is out of range use default history size */
|
||||||
|
s->history_size = (val > MAX_HISTORY || val < MIN_HISTORY) ? DFLT_HST_SIZE : val;
|
||||||
|
}
|
||||||
|
|
||||||
int settings_load(struct user_settings *s, char *path)
|
int settings_load(struct user_settings *s, char *path)
|
||||||
{
|
{
|
||||||
char *user_config_dir = get_user_config_dir();
|
char *user_config_dir = get_user_config_dir();
|
||||||
@ -102,6 +111,8 @@ int settings_load(struct user_settings *s, char *path)
|
|||||||
|
|
||||||
free(user_config_dir);
|
free(user_config_dir);
|
||||||
|
|
||||||
|
uset_hst_size(s, DFLT_HST_SIZE); /* must be forced in case no setting specified */
|
||||||
|
|
||||||
if (fp == NULL && !path) {
|
if (fp == NULL && !path) {
|
||||||
if ((fp = fopen(dflt_path, "w")) == NULL)
|
if ((fp = fopen(dflt_path, "w")) == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define NUM_SETTINGS 6
|
#define NUM_SETTINGS 7
|
||||||
|
|
||||||
/* holds user setting values */
|
/* holds user setting values */
|
||||||
struct user_settings {
|
struct user_settings {
|
||||||
@ -30,6 +30,7 @@ struct user_settings {
|
|||||||
int colour_theme; /* boolean (0 for default toxic colours) */
|
int colour_theme; /* boolean (0 for default toxic colours) */
|
||||||
long int audio_in_dev;
|
long int audio_in_dev;
|
||||||
long int audio_out_dev;
|
long int audio_out_dev;
|
||||||
|
int history_size; /* int between MIN_HISTORY and MAX_HISTORY */
|
||||||
};
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
@ -44,6 +45,8 @@ enum {
|
|||||||
|
|
||||||
NATIVE_COLS = 1,
|
NATIVE_COLS = 1,
|
||||||
DFLT_COLS = 0,
|
DFLT_COLS = 0,
|
||||||
|
|
||||||
|
DFLT_HST_SIZE = 700,
|
||||||
};
|
};
|
||||||
|
|
||||||
int settings_load(struct user_settings *s, char *path);
|
int settings_load(struct user_settings *s, char *path);
|
||||||
|
Loading…
Reference in New Issue
Block a user