Commit 37292c9b authored by Tristan Matthews's avatar Tristan Matthews

* #9490: store accountID, not account pointer in tree store.

Only the accountlist should be storing account_t pointers.
parent e5b384df
......@@ -75,6 +75,8 @@ static gint get_state_struct(gconstpointer a, gconstpointer b)
void account_list_init()
{
if (accountQueue)
account_list_free();
accountQueue = g_queue_new();
}
......@@ -199,6 +201,7 @@ void account_list_free()
{
g_queue_foreach(accountQueue, account_list_free_elm, NULL);
g_queue_free(accountQueue);
accountQueue = NULL;
}
void
......@@ -225,7 +228,7 @@ account_list_get_registered_accounts(void)
guint res = 0;
for (guint i = 0; i < account_list_get_size(); i++)
if (account_list_get_nth(i) -> state == (ACCOUNT_STATE_REGISTERED))
if (account_list_get_nth(i)->state == (ACCOUNT_STATE_REGISTERED))
res++;
return res;
......@@ -321,7 +324,7 @@ account_t *create_default_account()
{
account_t *account = g_new0(account_t, 1);
account->properties = dbus_get_account_details(NULL);
account->accountID = g_strdup("new"); //FIXME : replace with NULL for new accounts
account->accountID = g_strdup("new"); // FIXME: maybe replace with NULL?
account->credential_information = NULL;
sflphone_fill_codec_list_per_account(account);
return account;
......@@ -341,16 +344,18 @@ void initialize_credential_information(account_t *account)
void account_replace(account_t *account, const gchar *key, const gchar *value)
{
g_assert(account && account->properties);
g_hash_table_replace(account->properties, g_strdup(key), g_strdup(value));
}
void account_insert(account_t *account, const gchar *key, const gchar *value)
{
g_assert(account && account->properties);
g_hash_table_insert(account->properties, g_strdup(key), g_strdup(value));
}
gpointer account_lookup(const account_t *account, gconstpointer key)
{
g_assert(account->properties);
g_assert(account && account->properties);
return g_hash_table_lookup(account->properties, key);
}
......@@ -57,6 +57,7 @@
#include "actions.h"
#include "dbus/dbus.h"
#include "logger.h"
#include "config/accountlistconfigdialog.h"
#include "contacts/calltab.h"
#include "contacts/searchbar.h"
#include "contacts/addrbookfactory.h"
......@@ -202,12 +203,8 @@ sflphone_hung_up(callable_obj_t * c)
statusbar_update_clock("");
}
/** Internal to actions: Fill account list */
void sflphone_fill_account_list(void)
{
int count = current_account_get_message_number();
account_list_free();
account_list_init();
gchar **array = dbus_account_list();
......@@ -224,7 +221,7 @@ void sflphone_fill_account_list(void)
}
for (unsigned i = 0; i < account_list_get_size(); i++) {
account_t * a = account_list_get_nth(i);
account_t *a = account_list_get_nth(i);
if (a == NULL) {
ERROR("SFLphone: Error: Could not find account %d in list", i);
......@@ -278,9 +275,10 @@ void sflphone_fill_account_list(void)
}
// Set the current account message number
current_account_set_message_number(count);
current_account_set_message_number(current_account_get_message_number());
sflphone_fill_codec_list();
account_store_fill();
}
gboolean sflphone_init(GError **error)
......@@ -297,7 +295,6 @@ gboolean sflphone_init(GError **error)
contacts_tab = calltab_init(TRUE, CONTACTS);
history_tab = calltab_init(TRUE, HISTORY);
account_list_init();
codec_capabilities_load();
conferencelist_init(current_calls_tab);
......
......@@ -217,7 +217,7 @@ void codec_list_update_to_daemon(const account_t *acc)
int c = 0;
int i;
for (i = 0; i < length; i++) {
for (i = 0; i < length; ++i) {
codec_t* currentCodec = codec_list_get_nth(i, acc->codecs);
if (currentCodec) {
......@@ -240,14 +240,14 @@ void codec_list_update_to_daemon(const account_t *acc)
// Allocate NULL array at the end for Dbus
codecList = (void*) g_realloc(codecList, (c + 1) * sizeof(void*));
*(codecList+c) = NULL;
*(codecList + c) = NULL;
// call dbus function with array of strings
dbus_set_active_audio_codec_list(codecList, acc->accountID);
// Delete memory
for (i = 0; i < c; i++)
g_free((gchar*) *(codecList+i));
g_free((gchar*) *(codecList + i) );
g_free(codecList);
}
......
......@@ -206,7 +206,7 @@ static GtkWidget* create_basic_tab(const account_t *account)
password = g_hash_table_lookup(element, ACCOUNT_PASSWORD);
}
} else
password = g_hash_table_lookup(account->properties, ACCOUNT_PASSWORD);
password = account_lookup(account, ACCOUNT_PASSWORD);
GtkWidget *frame = gnome_main_section_new(_("Account Parameters"));
gtk_widget_show(frame);
......@@ -214,7 +214,7 @@ static GtkWidget* create_basic_tab(const account_t *account)
GtkWidget *table = NULL;
if (account_is_SIP(account))
table = gtk_table_new(9, 2, FALSE/* homogeneous */);
table = gtk_table_new(9, 2, FALSE /* homogeneous */);
else if (account_is_IAX(account))
table = gtk_table_new(8, 2, FALSE);
else {
......@@ -234,7 +234,7 @@ static GtkWidget* create_basic_tab(const account_t *account)
gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
entry_alias = gtk_entry_new();
gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry_alias);
gchar *alias = g_hash_table_lookup(account->properties, ACCOUNT_ALIAS);
gchar *alias = account_lookup(account, ACCOUNT_ALIAS);
gtk_entry_set_text(GTK_ENTRY(entry_alias), alias);
gtk_table_attach(GTK_TABLE(table), entry_alias, 1, 2, row, row + 1,
GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
......@@ -276,8 +276,7 @@ static GtkWidget* create_basic_tab(const account_t *account)
gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
entry_hostname = gtk_entry_new();
gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry_hostname);
const gchar *hostname = g_hash_table_lookup(account->properties,
ACCOUNT_HOSTNAME);
const gchar *hostname = account_lookup(account, ACCOUNT_HOSTNAME);
gtk_entry_set_text(GTK_ENTRY(entry_hostname), hostname);
gtk_table_attach(GTK_TABLE(table), entry_hostname, 1, 2, row, row + 1,
GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
......@@ -293,7 +292,7 @@ static GtkWidget* create_basic_tab(const account_t *account)
GTK_ENTRY_ICON_PRIMARY,
gdk_pixbuf_new_from_file(PERSON_IMG, NULL));
gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry_username);
gchar *username = g_hash_table_lookup(account->properties, ACCOUNT_USERNAME);
gchar *username = account_lookup(account, ACCOUNT_USERNAME);
gtk_entry_set_text(GTK_ENTRY(entry_username), username);
gtk_table_attach(GTK_TABLE(table), entry_username, 1, 2, row, row + 1,
GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
......@@ -337,7 +336,7 @@ static GtkWidget* create_basic_tab(const account_t *account)
gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
entry_route_set = gtk_entry_new();
gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry_route_set);
gchar *route_set = g_hash_table_lookup(account->properties, ACCOUNT_ROUTE);
gchar *route_set = account_lookup(account, ACCOUNT_ROUTE);
gtk_entry_set_text(GTK_ENTRY(entry_route_set), route_set);
gtk_table_attach(GTK_TABLE(table), entry_route_set, 1, 2, row, row+1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
......@@ -347,7 +346,7 @@ static GtkWidget* create_basic_tab(const account_t *account)
gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
entry_mailbox = gtk_entry_new();
gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry_mailbox);
gchar *mailbox = g_hash_table_lookup(account->properties, ACCOUNT_MAILBOX);
gchar *mailbox = account_lookup(account, ACCOUNT_MAILBOX);
mailbox = mailbox ? mailbox : "";
gtk_entry_set_text(GTK_ENTRY(entry_mailbox), mailbox);
gtk_table_attach(GTK_TABLE(table), entry_mailbox, 1, 2, row, row+1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
......@@ -358,7 +357,7 @@ static GtkWidget* create_basic_tab(const account_t *account)
gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
entry_user_agent = gtk_entry_new();
gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry_user_agent);
gchar *user_agent = g_hash_table_lookup(account->properties, ACCOUNT_USERAGENT);
gchar *user_agent = account_lookup(account, ACCOUNT_USERAGENT);
gtk_entry_set_text(GTK_ENTRY(entry_user_agent), user_agent);
gtk_table_attach(GTK_TABLE(table), entry_user_agent, 1, 2, row, row+1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
......@@ -726,17 +725,16 @@ create_security_widget(const account_t *account)
// Load from SIP/IAX/Unknown ?
if (account && account->properties) {
curKeyExchange = g_hash_table_lookup(account->properties,
ACCOUNT_KEY_EXCHANGE);
curKeyExchange = account_lookup(account, ACCOUNT_KEY_EXCHANGE);
if (curKeyExchange == NULL)
curKeyExchange = "none";
curSRTPEnabled = g_hash_table_lookup(account->properties, ACCOUNT_SRTP_ENABLED);
curSRTPEnabled = account_lookup(account, ACCOUNT_SRTP_ENABLED);
if (curSRTPEnabled == NULL)
curSRTPEnabled = "false";
curTLSEnabled = g_hash_table_lookup(account->properties, TLS_ENABLE);
curTLSEnabled = account_lookup(account, TLS_ENABLE);
if (curTLSEnabled == NULL)
curTLSEnabled = "false";
......@@ -854,8 +852,8 @@ create_network(const account_t *account)
gchar *local_port = NULL;
if (account) {
local_interface = g_hash_table_lookup(account->properties, LOCAL_INTERFACE);
local_port = g_hash_table_lookup(account->properties, LOCAL_PORT);
local_interface = account_lookup(account, LOCAL_INTERFACE);
local_port = account_lookup(account, LOCAL_PORT);
}
GtkWidget *table, *frame;
......@@ -922,20 +920,20 @@ GtkWidget* create_published_address(const account_t *account)
// Get the user configuration
if (account) {
use_tls = g_hash_table_lookup(account->properties, TLS_ENABLE);
published_sameas_local = g_hash_table_lookup(account->properties, PUBLISHED_SAMEAS_LOCAL);
use_tls = account_lookup(account, TLS_ENABLE);
published_sameas_local = account_lookup(account, PUBLISHED_SAMEAS_LOCAL);
if (utf8_case_equal(published_sameas_local, "true")) {
published_address = dbus_get_address_from_interface_name(g_hash_table_lookup(account->properties, LOCAL_INTERFACE));
published_port = g_hash_table_lookup(account->properties, LOCAL_PORT);
published_address = dbus_get_address_from_interface_name(account_lookup(account, LOCAL_INTERFACE));
published_port = account_lookup(account, LOCAL_PORT);
} else {
published_address = g_hash_table_lookup(account->properties, PUBLISHED_ADDRESS);
published_port = g_hash_table_lookup(account->properties, PUBLISHED_PORT);
published_address = account_lookup(account, PUBLISHED_ADDRESS);
published_port = account_lookup(account, PUBLISHED_PORT);
}
stun_enable = g_hash_table_lookup(account->properties, ACCOUNT_SIP_STUN_ENABLED);
stun_server = g_hash_table_lookup(account->properties, ACCOUNT_SIP_STUN_SERVER);
published_sameas_local = g_hash_table_lookup(account->properties, PUBLISHED_SAMEAS_LOCAL);
stun_enable = account_lookup(account, ACCOUNT_SIP_STUN_ENABLED);
stun_server = account_lookup(account, ACCOUNT_SIP_STUN_SERVER);
published_sameas_local = account_lookup(account, PUBLISHED_SAMEAS_LOCAL);
}
gnome_main_section_new_with_table(_("Published address"), &frame, &table, 2, 3);
......@@ -1061,7 +1059,7 @@ create_audiocodecs_configuration(const account_t *account)
gtk_widget_show(dtmf);
overrtp = gtk_radio_button_new_with_label(NULL, _("RTP"));
const gchar * const dtmf_type = g_hash_table_lookup(account->properties, ACCOUNT_DTMF_TYPE);
const gchar * const dtmf_type = account_lookup(account, ACCOUNT_DTMF_TYPE);
const gboolean dtmf_are_rtp = utf8_case_equal(dtmf_type, OVERRTP);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(overrtp), dtmf_are_rtp);
gtk_table_attach(GTK_TABLE(table), overrtp, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
......@@ -1079,7 +1077,7 @@ create_audiocodecs_configuration(const account_t *account)
file_chooser = gtk_file_chooser_button_new(_("Choose a ringtone"), GTK_FILE_CHOOSER_ACTION_OPEN);
gpointer ptr = g_hash_table_lookup(account->properties, CONFIG_RINGTONE_ENABLED);
gpointer ptr = account_lookup(account, CONFIG_RINGTONE_ENABLED);
enable_tone = gtk_check_button_new_with_mnemonic(_("_Enable ringtones"));
const gboolean ringtone_enabled = g_strcmp0(ptr, "true") == 0;
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(enable_tone), ringtone_enabled);
......@@ -1088,7 +1086,7 @@ create_audiocodecs_configuration(const account_t *account)
// file chooser button
gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(file_chooser) , g_get_home_dir());
ptr = g_hash_table_lookup(account->properties, CONFIG_RINGTONE_PATH);
ptr = account_lookup(account, CONFIG_RINGTONE_PATH);
gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(file_chooser) , ptr);
gtk_widget_set_sensitive(file_chooser, ringtone_enabled);
......@@ -1315,7 +1313,7 @@ void show_account_window(account_t *account)
update_account_from_basic_tab(account);
/** @todo Verify if it's the best condition to check */
if (utf8_case_equal(account->accountID, "new"))
if (g_strcmp0(account->accountID, "new"))
dbus_add_account(account);
else
dbus_set_account_details(account);
......
......@@ -43,4 +43,8 @@
*/
void show_account_window(account_t *a);
/**
* Resets local cache of account pointers */
void reset_account_store();
#endif
......@@ -52,7 +52,7 @@ static GtkWidget *move_up_button;
static GtkWidget *status_bar;
static GtkListStore *account_store;
static GtkDialog *account_list_dialog;
static account_t *selected_account;
static gchar *selected_accountID;
// Account properties
enum {
......@@ -60,15 +60,16 @@ enum {
COLUMN_ACCOUNT_TYPE,
COLUMN_ACCOUNT_STATUS,
COLUMN_ACCOUNT_ACTIVE,
COLUMN_ACCOUNT_DATA,
COLUMN_ACCOUNT_ID,
COLUMN_ACCOUNT_COUNT
};
static void delete_account_cb(void)
{
RETURN_IF_NULL(selected_account, "No selected account in delete action");
dbus_remove_account(selected_account->accountID);
selected_account = NULL;
RETURN_IF_NULL(selected_accountID, "No selected account in delete action");
dbus_remove_account(selected_accountID);
g_free(selected_accountID);
selected_accountID = NULL;
}
static void row_activated_cb(GtkTreeView *view UNUSED,
......@@ -76,16 +77,16 @@ static void row_activated_cb(GtkTreeView *view UNUSED,
GtkTreeViewColumn *col UNUSED,
gpointer user_data UNUSED)
{
RETURN_IF_NULL(selected_account, "No selected account in edit action");
DEBUG("%s: accountID=%s\n", __PRETTY_FUNCTION__, selected_account->accountID);
show_account_window(selected_account);
RETURN_IF_NULL(selected_accountID, "No selected account in edit action");
DEBUG("%s: Selected accountID=%s\n", __PRETTY_FUNCTION__, selected_accountID);
show_account_window(account_list_get_by_id(selected_accountID));
}
static void edit_account_cb(GtkButton *button UNUSED, gpointer data UNUSED)
{
RETURN_IF_NULL(selected_account, "No selected account in edit action");
DEBUG("%s: accountID=%s\n", __PRETTY_FUNCTION__, selected_account->accountID);
show_account_window(selected_account);
RETURN_IF_NULL(selected_accountID, "No selected account in edit action");
DEBUG("%s: Selected accountID=%s\n", __PRETTY_FUNCTION__, selected_accountID);
show_account_window(account_list_get_by_id(selected_accountID));
}
static void add_account_cb(void)
......@@ -94,38 +95,46 @@ static void add_account_cb(void)
show_account_window(new_account);
}
static void account_store_fill(GtkTreeIter *iter, account_t *a)
static void account_store_add(GtkTreeIter *iter, account_t *account)
{
const gchar *enabled = g_hash_table_lookup(a->properties, ACCOUNT_ENABLED);
const gchar *type = g_hash_table_lookup(a->properties, ACCOUNT_TYPE);
DEBUG("Config: Filling accounts: Account is enabled :%s", enabled);
const gchar *enabled = account_lookup(account, ACCOUNT_ENABLED);
const gchar *type = account_lookup(account, ACCOUNT_TYPE);
DEBUG("Config: Adding account: Account is enabled :%s", enabled);
gtk_list_store_set(account_store, iter, COLUMN_ACCOUNT_ALIAS,
g_hash_table_lookup(a->properties, ACCOUNT_ALIAS),
account_lookup(account, ACCOUNT_ALIAS),
COLUMN_ACCOUNT_TYPE, type,
COLUMN_ACCOUNT_STATUS, account_state_name(a->state),
COLUMN_ACCOUNT_STATUS, account_state_name(account->state),
COLUMN_ACCOUNT_ACTIVE, utf8_case_equal(enabled, "true"),
COLUMN_ACCOUNT_DATA, a, -1);
COLUMN_ACCOUNT_ID, account->accountID, -1);
}
static void
invalidate_selected_accountID()
{
if (selected_accountID) {
g_free(selected_accountID);
selected_accountID = NULL;
}
}
/**
* Fills the treelist with accounts
*/
void account_list_config_dialog_fill()
void account_store_fill()
{
invalidate_selected_accountID();
RETURN_IF_NULL(account_list_dialog, "No account dialog");
gtk_list_store_clear(account_store);
// IP2IP account must be first
account_t *ip2ip = account_list_get_by_id("IP2IP");
account_t *ip2ip = account_list_get_by_id(IP2IP_PROFILE);
RETURN_IF_NULL(ip2ip, "Could not find IP2IP account");
GtkTreeIter iter;
gtk_list_store_append(account_store, &iter);
account_store_fill(&iter, ip2ip);
account_store_add(&iter, ip2ip);
for (size_t i = 0; i < account_list_get_size(); ++i) {
account_t *a = account_list_get_nth(i);
......@@ -134,7 +143,7 @@ void account_list_config_dialog_fill()
// we don't want to process the IP2IP twice
if (a != ip2ip) {
gtk_list_store_append(account_store, &iter);
account_store_fill(&iter, a);
account_store_add(&iter, a);
}
}
}
......@@ -147,7 +156,7 @@ select_account_cb(GtkTreeSelection *selection, GtkTreeModel *model)
{
GtkTreeIter iter;
if (!gtk_tree_selection_get_selected(selection, &model, &iter)) {
selected_account = NULL;
invalidate_selected_accountID();
gtk_widget_set_sensitive(move_up_button, FALSE);
gtk_widget_set_sensitive(move_down_button, FALSE);
gtk_widget_set_sensitive(edit_button, FALSE);
......@@ -158,13 +167,14 @@ select_account_cb(GtkTreeSelection *selection, GtkTreeModel *model)
// The Gvalue will be initialized in the following function
GValue val;
memset(&val, 0, sizeof(val));
gtk_tree_model_get_value(model, &iter, COLUMN_ACCOUNT_DATA, &val);
gtk_tree_model_get_value(model, &iter, COLUMN_ACCOUNT_ID, &val);
selected_account = (account_t*) g_value_get_pointer(&val);
selected_accountID = g_strdup(g_value_get_string(&val));
g_value_unset(&val);
DEBUG("Selected account has accountID %s", selected_accountID);
account_t *selected_account = account_list_get_by_id(selected_accountID);
RETURN_IF_NULL(selected_account, "Selected account is NULL");
DEBUG("Selected account has accountID %s", selected_account->accountID);
gtk_widget_set_sensitive(edit_button, TRUE);
......@@ -208,7 +218,7 @@ enable_account_cb(GtkCellRendererToggle *rend UNUSED, gchar* path,
gpointer data)
{
// The IP2IP profile can't be disabled
if (utf8_case_equal(path, "0"))
if (g_strcmp0(path, "0") == 0)
return;
// Get pointer on object
......@@ -217,9 +227,11 @@ enable_account_cb(GtkCellRendererToggle *rend UNUSED, gchar* path,
GtkTreeIter iter;
gtk_tree_model_get_iter(model, &iter, tree_path);
gboolean enable;
account_t* acc;
gchar * id;
gtk_tree_model_get(model, &iter, COLUMN_ACCOUNT_ACTIVE, &enable,
COLUMN_ACCOUNT_DATA, &acc, -1);
COLUMN_ACCOUNT_ID, &id, -1);
account_t *account = account_list_get_by_id(id);
g_assert(account);
enable = !enable;
DEBUG("Account is %d enabled", enable);
......@@ -228,13 +240,11 @@ enable_account_cb(GtkCellRendererToggle *rend UNUSED, gchar* path,
enable, -1);
// Modify account state
gchar * registration_state = enable ? g_strdup("true") : g_strdup("false");
const gchar * registration_state = enable ? "true" : "false";
DEBUG("Replacing registration state with %s", registration_state);
g_hash_table_replace(acc->properties, g_strdup(ACCOUNT_ENABLED),
registration_state);
dbus_send_register(acc->accountID, enable);
account_replace(account, ACCOUNT_ENABLED, registration_state);
dbus_send_register(account->accountID, enable);
}
/**
......@@ -259,7 +269,7 @@ account_move(gboolean move_up, gpointer data)
// The first real account in the list can't move up because of the IP2IP account
// It can still move down though
if (utf8_case_equal(path, "1") && move_up)
if (g_strcmp0(path, "1") == 0 && move_up)
return;
GtkTreePath *tree_path = gtk_tree_path_new_from_string(path);
......@@ -343,13 +353,12 @@ highlight_ip_profile(GtkTreeViewColumn *col UNUSED, GtkCellRenderer *rend,
{
GValue val;
memset(&val, 0, sizeof(val));
gtk_tree_model_get_value(tree_model, iter, COLUMN_ACCOUNT_DATA, &val);
account_t *current = (account_t*) g_value_get_pointer(&val);
gtk_tree_model_get_value(tree_model, iter, COLUMN_ACCOUNT_ID, &val);
account_t *current = account_list_get_by_id(g_value_get_string(&val));
g_value_unset(&val);
if (current != NULL) {
// Make the first line appear differently
// Make the IP2IP account appear differently
if (current) {
if (account_is_IP2IP(current)) {
g_object_set(G_OBJECT(rend), "weight", PANGO_WEIGHT_THIN, "style",
PANGO_STYLE_ITALIC, "stretch",
......@@ -381,8 +390,8 @@ highlight_registration(GtkTreeViewColumn *col UNUSED, GtkCellRenderer *rend,
{
GValue val;
memset(&val, 0, sizeof(val));
gtk_tree_model_get_value(tree_model, iter, COLUMN_ACCOUNT_DATA, &val);
account_t *current = (account_t*) g_value_get_pointer(&val);
gtk_tree_model_get_value(tree_model, iter, COLUMN_ACCOUNT_ID, &val);
account_t *current = account_list_get_by_id(g_value_get_string(&val));
g_value_unset(&val);
if (current)
......@@ -395,7 +404,6 @@ highlight_registration(GtkTreeViewColumn *col UNUSED, GtkCellRenderer *rend,
static GtkWidget*
create_account_list()
{
selected_account = NULL;
GtkWidget *table = gtk_table_new(1, 2, FALSE /* homogeneous */);
gtk_table_set_col_spacings(GTK_TABLE(table), 10);
gtk_container_set_border_width(GTK_CONTAINER(table), 10);
......@@ -413,10 +421,10 @@ create_account_list()
G_TYPE_STRING, // Protocol
G_TYPE_STRING, // Status
G_TYPE_BOOLEAN, // Enabled / Disabled
G_TYPE_POINTER // Pointer to the Object
G_TYPE_STRING // AccountID
);
account_list_config_dialog_fill();
account_store_fill();
GtkTreeView * tree_view = GTK_TREE_VIEW(gtk_tree_view_new_with_model(GTK_TREE_MODEL(account_store)));
GtkTreeSelection *tree_selection = gtk_tree_view_get_selection(tree_view);
......
......@@ -32,9 +32,7 @@
#ifndef __SFL_ACCOUNTLISTDIALOG_H__
#define __SFL_ACCOUNTLISTDIALOG_H__
#include <sflphone_const.h>
void show_account_list_config_dialog(void);
void account_list_config_dialog_fill(void);
void account_store_fill(void);
#endif
......@@ -38,7 +38,6 @@
#include "configurationmanager-glue.h"
#include "instance-glue.h"
#include "preferencesdialog.h"
#include "accountlistconfigdialog.h"
#include "mainwindow.h"
#include "marshaller.h"
#include "sliders.h"
......@@ -427,7 +426,6 @@ accounts_changed_cb(DBusGProxy *proxy UNUSED, void *foo UNUSED)
{
sflphone_fill_account_list();
sflphone_fill_ip2ip_profile();
account_list_config_dialog_fill();
status_bar_display_account();
statusicon_set_tooltip();
}
......@@ -1096,7 +1094,8 @@ dbus_add_account(account_t *a)
g_assert(a->properties);
DEBUG("Adding %s account", a->accountID);
GError *error = NULL;
g_free(a->accountID);
if (a->accountID)
g_free(a->accountID);
a->accountID = NULL;
org_sflphone_SFLphone_ConfigurationManager_add_account(config_proxy, a->properties, &a->accountID,
&error);
......
......@@ -28,8 +28,8 @@
* as that of the covered work.
*/
#ifndef __LOGGER_H
#define __LOGGER_H
#ifndef LOGGER_H_
#define LOGGER_H_
void internal_log (const int level, const char* format, ...);
void set_log_level (const int level);
......@@ -44,7 +44,8 @@ void set_log_level (const int level);
#define INFO(...) internal_log(LOG_INFO, __VA_ARGS__)
#define DEBUG(...) internal_log(LOG_DEBUG, __VA_ARGS__)
/* Prints an error message and returns if the pointer A is NULL */
#define RETURN_IF_NULL(A, M, ...) \
if ((A) == NULL) { ERROR(M, ##__VA_ARGS__); return; }
if (!(A)) { ERROR(M, ##__VA_ARGS__); return; }
#endif
#endif // LOGGER_H_
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment