Added some config options.

This commit is contained in:
Håvard Pettersson 2014-10-12 12:24:49 +02:00
parent a437931e41
commit e6e4fd568e
5 changed files with 62 additions and 11 deletions

View File

@ -31,6 +31,7 @@
#include "twc-group-invite.h"
#include "twc-bootstrap.h"
#include "twc-sqlite.h"
#include "twc-config.h"
#include "twc-utils.h"
#include "twc-commands.h"
@ -267,8 +268,7 @@ twc_cmd_friend(void *data, struct t_gui_buffer *buffer,
}
if (!message)
// TODO: default message as option
message = "Hi! Please add me on Tox!";
message = weechat_config_string(twc_config_friend_request_message);
if (strlen(hex_id) != TOX_FRIEND_ADDRESS_SIZE * 2)
{
@ -455,10 +455,10 @@ twc_cmd_friend(void *data, struct t_gui_buffer *buffer,
struct t_twc_list_item *item;
twc_list_foreach(friend_requests, index, item)
{
// TODO: load short form address length from config
char hex_address[12 + 1];
size_t short_id_length = weechat_config_integer(twc_config_short_id_size);
char hex_address[short_id_length + 1];
twc_bin2hex(item->friend_request->tox_id,
6,
short_id_length / 2,
hex_address);
weechat_printf(profile->buffer,

View File

@ -31,9 +31,13 @@
#include "twc-config.h"
struct t_config_file *twc_config_file = NULL;
struct t_config_section *twc_config_section_look = NULL;
struct t_config_section *twc_config_section_profile = NULL;
struct t_config_section *twc_config_section_profile_default = NULL;
struct t_config_option *twc_config_friend_request_message;
struct t_config_option *twc_config_short_id_size;
char *twc_profile_option_names[TWC_PROFILE_NUM_OPTIONS] =
{
"save_file",
@ -175,6 +179,23 @@ twc_config_profile_write_callback(void *data,
return WEECHAT_CONFIG_WRITE_OK;
}
/**
* Callback for checking an option value being set.
*/
int
twc_config_check_value_callback(void *data,
struct t_config_option *option,
const char *value)
{
int int_value = atoi(value);
// must be multiple of two
if (option == twc_config_short_id_size && int_value % 2)
return 0;
return 1;
}
/**
* Callback for checking an option value being set for a profile.
*/
@ -307,6 +328,32 @@ twc_config_init()
twc_config_init_option(twc_config_section_profile_default,
i, twc_profile_option_names[i], true);
}
twc_config_section_look =
weechat_config_new_section(twc_config_file, "look",
0, 0,
NULL, NULL,
NULL, NULL,
NULL, NULL,
NULL, NULL,
NULL, NULL);
twc_config_friend_request_message = weechat_config_new_option(
twc_config_file, twc_config_section_look,
"friend_request_message", "string",
"message sent with friend requests if no other message is specified",
NULL, 0, 0,
"Hi! Please add me on Tox!", NULL, 0,
twc_config_check_value_callback, NULL,
NULL, NULL, NULL, NULL);
twc_config_short_id_size = weechat_config_new_option(
twc_config_file, twc_config_section_look,
"short_id_size", "integer",
"length of Tox IDs shown in short format; must be a multiple of two",
NULL, 2, TOX_CLIENT_ID_SIZE * 2,
"8", NULL, 0,
twc_config_check_value_callback, NULL,
NULL, NULL, NULL, NULL);
}
/**

View File

@ -20,6 +20,11 @@
#ifndef TOX_WEECHAT_CONFIG_H
#define TOX_WEECHAT_CONFIG_H
struct t_twc_profile;
extern struct t_config_option *twc_config_friend_request_message;
extern struct t_config_option *twc_config_short_id_size;
void
twc_config_init();

View File

@ -34,9 +34,6 @@
sqlite3 *twc_sqlite_db = NULL;
struct t_twc_list *twc_sqlite_statements = NULL;
// TODO: move to config
#define TWC_SQLITE_PATH "%h/tox/data.db"
#define TWC_SQLITE_DEBUG_RC(rc, expected_rc) \
if (rc != expected_rc) \
weechat_printf(NULL, \
@ -74,7 +71,7 @@ char *
twc_sqlite_db_path()
{
const char *weechat_dir = weechat_info_get("weechat_dir", NULL);
return weechat_string_replace(TWC_SQLITE_PATH, "%h", weechat_dir);
return weechat_string_replace("%h/tox/data.db", "%h", weechat_dir);
}
/**

View File

@ -23,6 +23,9 @@
#include <weechat/weechat-plugin.h>
#include <tox/tox.h>
#include "twc.h"
#include "twc-config.h"
#include "twc-utils.h"
/**
@ -140,8 +143,7 @@ twc_get_friend_id_short(Tox *tox, int32_t friend_number)
uint8_t client_id[TOX_CLIENT_ID_SIZE];
tox_get_client_id(tox, friend_number, client_id);
// TODO: config
size_t short_id_length = 8;
size_t short_id_length = weechat_config_integer(twc_config_short_id_size);
char *hex_address = malloc(short_id_length + 1);
twc_bin2hex(client_id,