1
0
mirror of https://github.com/Tha14/toxic.git synced 2024-06-26 20:57:48 +02:00
toxic/src/settings.h
iphydf 701c0e1e94
cleanup: Reduce the amount of "extern" in .c files.
There is no check at all that the types of externs actually match the
type of the definition. This just accidentally was not a problem, but now
the compiler helps a bit in keeping it that way.
2021-12-11 22:35:51 +00:00

140 lines
3.7 KiB
C

/* settings.h
*
*
* Copyright (C) 2014 Toxic All Rights Reserved.
*
* This file is part of Toxic.
*
* Toxic is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Toxic is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Toxic. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef SETTINGS_H
#define SETTINGS_H
#include <limits.h>
#include <tox/tox.h>
/* Represents line_* hints max strlen */
#define LINE_HINT_MAX 3
#define PASSWORD_EVAL_MAX 512
/* Holds user setting values defined in the toxic config file. */
struct user_settings {
int autolog; /* boolean */
int alerts; /* boolean */
/* boolean (is set to NT_BEEP or 0 after loading) */
int bell_on_message;
int bell_on_filetrans;
int bell_on_filetrans_accept;
int bell_on_invite;
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 history_size; /* int between MIN_HISTORY and MAX_HISTORY */
int notification_timeout;
int show_typing_self; /* boolean */
int show_typing_other; /* boolean */
int show_welcome_msg; /* boolean */
int show_connection_msg; /* boolean */
int nodeslist_update_freq; /* int (<= 0 to disable updates) */
int autosave_freq; /* int (<= 0 to disable autosave) */
char line_join[LINE_HINT_MAX + 1];
char line_quit[LINE_HINT_MAX + 1];
char line_alert[LINE_HINT_MAX + 1];
char line_normal[LINE_HINT_MAX + 1];
char download_path[PATH_MAX];
char chatlogs_path[PATH_MAX];
char avatar_path[PATH_MAX];
char autorun_path[PATH_MAX];
char password_eval[PASSWORD_EVAL_MAX];
char color_bar_bg[COLOR_STR_SIZE];
char color_bar_fg[COLOR_STR_SIZE];
char color_bar_accent[COLOR_STR_SIZE];
char color_bar_notify[COLOR_STR_SIZE];
int key_next_tab;
int key_prev_tab;
int key_scroll_line_up;
int key_scroll_line_down;
int key_half_page_up;
int key_half_page_down;
int key_page_bottom;
int key_toggle_peerlist;
int key_toggle_pastemode;
int mplex_away; /* boolean (1 for reaction to terminal attach/detach) */
char mplex_away_note [TOX_MAX_STATUS_MESSAGE_LENGTH];
#ifdef AUDIO
int audio_in_dev;
int audio_out_dev;
double VAD_threshold;
int conference_audio_channels;
int chat_audio_channels;
int push_to_talk; /* boolean */
#endif
};
extern struct user_settings *user_settings;
enum settings_values {
AUTOLOG_OFF = 0,
AUTOLOG_ON = 1,
TIMESTAMPS_OFF = 0,
TIMESTAMPS_ON = 1,
ALERTS_DISABLED = 0,
ALERTS_ENABLED = 1,
DFLT_COLS = 0,
NATIVE_COLS = 1,
SHOW_TYPING_OFF = 0,
SHOW_TYPING_ON = 1,
SHOW_WELCOME_MSG_OFF = 0,
SHOW_WELCOME_MSG_ON = 1,
SHOW_CONNECTION_MSG_OFF = 0,
SHOW_CONNECTION_MSG_ON = 1,
DFLT_HST_SIZE = 700,
MPLEX_OFF = 0,
MPLEX_ON = 1,
};
#define LINE_JOIN "-->"
#define LINE_QUIT "<--"
#define LINE_ALERT "-!-"
#define LINE_NORMAL "-"
#define TIMESTAMP_DEFAULT "%H:%M"
#define LOG_TIMESTAMP_DEFAULT "%Y/%m/%d [%H:%M:%S]"
#define MPLEX_AWAY_NOTE "Away from keyboard, be back soon!"
int settings_load(struct user_settings *s, const char *patharg);
#endif /* SETTINGS_H */