mirror of
https://git.jabber.space/devs/cproof.git
synced 2026-07-31 20:56:21 +00:00
Added autocomplete for enabled logins only
This commit is contained in:
@@ -33,7 +33,8 @@
|
|||||||
static gchar *accounts_loc;
|
static gchar *accounts_loc;
|
||||||
static GKeyFile *accounts;
|
static GKeyFile *accounts;
|
||||||
|
|
||||||
static PAutocomplete login_ac;
|
static PAutocomplete all_ac;
|
||||||
|
static PAutocomplete enabled_ac;
|
||||||
|
|
||||||
static void _save_accounts(void);
|
static void _save_accounts(void);
|
||||||
|
|
||||||
@@ -41,7 +42,8 @@ void
|
|||||||
accounts_load(void)
|
accounts_load(void)
|
||||||
{
|
{
|
||||||
log_info("Loading accounts");
|
log_info("Loading accounts");
|
||||||
login_ac = p_autocomplete_new();
|
all_ac = p_autocomplete_new();
|
||||||
|
enabled_ac = p_autocomplete_new();
|
||||||
accounts_loc = files_get_accounts_file();
|
accounts_loc = files_get_accounts_file();
|
||||||
|
|
||||||
accounts = g_key_file_new();
|
accounts = g_key_file_new();
|
||||||
@@ -55,7 +57,10 @@ accounts_load(void)
|
|||||||
|
|
||||||
gsize i;
|
gsize i;
|
||||||
for (i = 0; i < njids; i++) {
|
for (i = 0; i < njids; i++) {
|
||||||
p_autocomplete_add(login_ac, strdup(jids[i]));
|
if (g_key_file_get_boolean(accounts, jids[i], "enabled", NULL)) {
|
||||||
|
p_autocomplete_add(enabled_ac, strdup(jids[i]));
|
||||||
|
}
|
||||||
|
p_autocomplete_add(all_ac, strdup(jids[i]));
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < njids; i++) {
|
for (i = 0; i < njids; i++) {
|
||||||
@@ -67,20 +72,33 @@ accounts_load(void)
|
|||||||
void
|
void
|
||||||
accounts_close(void)
|
accounts_close(void)
|
||||||
{
|
{
|
||||||
p_autocomplete_clear(login_ac);
|
p_autocomplete_clear(all_ac);
|
||||||
|
p_autocomplete_clear(enabled_ac);
|
||||||
g_key_file_free(accounts);
|
g_key_file_free(accounts);
|
||||||
}
|
}
|
||||||
|
|
||||||
char *
|
char *
|
||||||
accounts_find_login(char *prefix)
|
accounts_find_enabled(char *prefix)
|
||||||
{
|
{
|
||||||
return p_autocomplete_complete(login_ac, prefix);
|
return p_autocomplete_complete(enabled_ac, prefix);
|
||||||
|
}
|
||||||
|
|
||||||
|
char *
|
||||||
|
accounts_find_all(char *prefix)
|
||||||
|
{
|
||||||
|
return p_autocomplete_complete(all_ac, prefix);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
accounts_reset_login_search(void)
|
accounts_reset_all_search(void)
|
||||||
{
|
{
|
||||||
p_autocomplete_reset(login_ac);
|
p_autocomplete_reset(all_ac);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
accounts_reset_enabled_search(void)
|
||||||
|
{
|
||||||
|
p_autocomplete_reset(enabled_ac);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -95,7 +113,8 @@ accounts_add_login(const char *jid, const char *altdomain)
|
|||||||
}
|
}
|
||||||
|
|
||||||
_save_accounts();
|
_save_accounts();
|
||||||
p_autocomplete_add(login_ac, strdup(jid));
|
p_autocomplete_add(all_ac, strdup(jid));
|
||||||
|
p_autocomplete_add(enabled_ac, strdup(jid));
|
||||||
|
|
||||||
// already exists, update old style accounts
|
// already exists, update old style accounts
|
||||||
} else {
|
} else {
|
||||||
@@ -165,6 +184,7 @@ accounts_enable(const char * const name)
|
|||||||
if (g_key_file_has_group(accounts, name)) {
|
if (g_key_file_has_group(accounts, name)) {
|
||||||
g_key_file_set_boolean(accounts, name, "enabled", TRUE);
|
g_key_file_set_boolean(accounts, name, "enabled", TRUE);
|
||||||
_save_accounts();
|
_save_accounts();
|
||||||
|
p_autocomplete_add(enabled_ac, strdup(name));
|
||||||
return TRUE;
|
return TRUE;
|
||||||
} else {
|
} else {
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@@ -177,6 +197,7 @@ accounts_disable(const char * const name)
|
|||||||
if (g_key_file_has_group(accounts, name)) {
|
if (g_key_file_has_group(accounts, name)) {
|
||||||
g_key_file_set_boolean(accounts, name, "enabled", FALSE);
|
g_key_file_set_boolean(accounts, name, "enabled", FALSE);
|
||||||
_save_accounts();
|
_save_accounts();
|
||||||
|
p_autocomplete_remove(enabled_ac, strdup(name));
|
||||||
return TRUE;
|
return TRUE;
|
||||||
} else {
|
} else {
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@@ -212,8 +233,12 @@ accounts_rename(const char * const account_name, const char * const new_name)
|
|||||||
g_key_file_remove_group(accounts, account_name, NULL);
|
g_key_file_remove_group(accounts, account_name, NULL);
|
||||||
_save_accounts();
|
_save_accounts();
|
||||||
|
|
||||||
p_autocomplete_remove(login_ac, strdup(account_name));
|
p_autocomplete_remove(all_ac, strdup(account_name));
|
||||||
p_autocomplete_add(login_ac, strdup(new_name));
|
p_autocomplete_add(all_ac, strdup(new_name));
|
||||||
|
if (g_key_file_get_boolean(accounts, new_name, "enabled", NULL)) {
|
||||||
|
p_autocomplete_remove(enabled_ac, strdup(account_name));
|
||||||
|
p_autocomplete_add(enabled_ac, strdup(new_name));
|
||||||
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,8 +33,10 @@ typedef struct prof_account_t {
|
|||||||
void accounts_load(void);
|
void accounts_load(void);
|
||||||
void accounts_close(void);
|
void accounts_close(void);
|
||||||
|
|
||||||
char * accounts_find_login(char *prefix);
|
char * accounts_find_all(char *prefix);
|
||||||
void accounts_reset_login_search(void);
|
char * accounts_find_enabled(char *prefix);
|
||||||
|
void accounts_reset_all_search(void);
|
||||||
|
void accounts_reset_enabled_search(void);
|
||||||
void accounts_add_login(const char *jid, const char *altdomain);
|
void accounts_add_login(const char *jid, const char *altdomain);
|
||||||
gchar** accounts_get_list(void);
|
gchar** accounts_get_list(void);
|
||||||
ProfAccount* accounts_get_account(const char * const name);
|
ProfAccount* accounts_get_account(const char * const name);
|
||||||
|
|||||||
@@ -749,7 +749,8 @@ void
|
|||||||
cmd_reset_autocomplete()
|
cmd_reset_autocomplete()
|
||||||
{
|
{
|
||||||
contact_list_reset_search_attempts();
|
contact_list_reset_search_attempts();
|
||||||
accounts_reset_login_search();
|
accounts_reset_all_search();
|
||||||
|
accounts_reset_enabled_search();
|
||||||
prefs_reset_boolean_choice();
|
prefs_reset_boolean_choice();
|
||||||
p_autocomplete_reset(help_ac);
|
p_autocomplete_reset(help_ac);
|
||||||
p_autocomplete_reset(notify_ac);
|
p_autocomplete_reset(notify_ac);
|
||||||
@@ -896,7 +897,7 @@ _cmd_complete_parameters(char *input, int *size)
|
|||||||
_parameter_autocomplete(input, size, "/info",
|
_parameter_autocomplete(input, size, "/info",
|
||||||
contact_list_find_contact);
|
contact_list_find_contact);
|
||||||
_parameter_autocomplete(input, size, "/connect",
|
_parameter_autocomplete(input, size, "/connect",
|
||||||
accounts_find_login);
|
accounts_find_enabled);
|
||||||
_parameter_autocomplete_with_ac(input, size, "/sub", sub_ac);
|
_parameter_autocomplete_with_ac(input, size, "/sub", sub_ac);
|
||||||
_parameter_autocomplete_with_ac(input, size, "/help", help_ac);
|
_parameter_autocomplete_with_ac(input, size, "/help", help_ac);
|
||||||
_parameter_autocomplete_with_ac(input, size, "/who", who_ac);
|
_parameter_autocomplete_with_ac(input, size, "/who", who_ac);
|
||||||
@@ -2220,15 +2221,15 @@ static void
|
|||||||
_account_autocomplete(char *input, int *size)
|
_account_autocomplete(char *input, int *size)
|
||||||
{
|
{
|
||||||
if ((strncmp(input, "/account set ", 13) == 0) && (*size > 13)) {
|
if ((strncmp(input, "/account set ", 13) == 0) && (*size > 13)) {
|
||||||
_parameter_autocomplete(input, size, "/account set", accounts_find_login);
|
_parameter_autocomplete(input, size, "/account set", accounts_find_all);
|
||||||
} else if ((strncmp(input, "/account show ", 14) == 0) && (*size > 14)) {
|
} else if ((strncmp(input, "/account show ", 14) == 0) && (*size > 14)) {
|
||||||
_parameter_autocomplete(input, size, "/account show", accounts_find_login);
|
_parameter_autocomplete(input, size, "/account show", accounts_find_all);
|
||||||
} else if ((strncmp(input, "/account enable ", 16) == 0) && (*size > 16)) {
|
} else if ((strncmp(input, "/account enable ", 16) == 0) && (*size > 16)) {
|
||||||
_parameter_autocomplete(input, size, "/account enable", accounts_find_login);
|
_parameter_autocomplete(input, size, "/account enable", accounts_find_all);
|
||||||
} else if ((strncmp(input, "/account disable ", 17) == 0) && (*size > 17)) {
|
} else if ((strncmp(input, "/account disable ", 17) == 0) && (*size > 17)) {
|
||||||
_parameter_autocomplete(input, size, "/account disable", accounts_find_login);
|
_parameter_autocomplete(input, size, "/account disable", accounts_find_all);
|
||||||
} else if ((strncmp(input, "/account rename ", 16) == 0) && (*size > 16)) {
|
} else if ((strncmp(input, "/account rename ", 16) == 0) && (*size > 16)) {
|
||||||
_parameter_autocomplete(input, size, "/account rename", accounts_find_login);
|
_parameter_autocomplete(input, size, "/account rename", accounts_find_all);
|
||||||
} else if ((strncmp(input, "/account ", 9) == 0) && (*size > 9)) {
|
} else if ((strncmp(input, "/account ", 9) == 0) && (*size > 9)) {
|
||||||
_parameter_autocomplete_with_ac(input, size, "/account", account_ac);
|
_parameter_autocomplete_with_ac(input, size, "/account", account_ac);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -147,6 +147,11 @@ jabber_conn_status_t
|
|||||||
jabber_connect(const char * const user,
|
jabber_connect(const char * const user,
|
||||||
const char * const passwd, const char * const altdomain)
|
const char * const passwd, const char * const altdomain)
|
||||||
{
|
{
|
||||||
|
if (saved_account != NULL) {
|
||||||
|
free(saved_account);
|
||||||
|
saved_account = NULL)
|
||||||
|
}
|
||||||
|
|
||||||
if (saved_user == NULL) {
|
if (saved_user == NULL) {
|
||||||
saved_user = strdup(user);
|
saved_user = strdup(user);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user