* #21145: gnome: prevent SIP to IAX switching in client

This commit is contained in:
Tristan Matthews
2013-03-06 14:15:53 -05:00
parent c14f335411
commit 6c954fd1d4
3 changed files with 16 additions and 20 deletions

View File

@ -221,7 +221,7 @@ create_auto_answer_checkbox(account_t *account)
}
static GtkWidget*
create_basic_tab(account_t *account)
create_basic_tab(account_t *account, gboolean is_new)
{
g_assert(account);
gchar *password = NULL;
@ -237,17 +237,7 @@ create_basic_tab(account_t *account)
GtkWidget *frame = gnome_main_section_new(_("Account Parameters"));
gtk_widget_show(frame);
GtkWidget *grid = NULL;
if (account_is_SIP(account))
grid = gtk_grid_new();
else if (account_is_IAX(account))
grid = gtk_grid_new();
else {
g_warning("Unknown account type");
return NULL;
}
GtkWidget *grid = gtk_grid_new();
gtk_grid_set_row_spacing(GTK_GRID(grid), 10);
gtk_grid_set_column_spacing(GTK_GRID(grid), 10);
gtk_widget_show(grid);
@ -285,6 +275,10 @@ create_basic_tab(account_t *account)
gtk_combo_box_set_active(GTK_COMBO_BOX(protocol_combo), 2);
}
/* Can't change account type after creation */
if (!is_new)
gtk_widget_set_sensitive(protocol_combo, FALSE);
gtk_grid_attach(GTK_GRID(grid), protocol_combo, 1, row, 1, 1);
/* Link signal 'changed' */
@ -1328,7 +1322,7 @@ void update_account_from_dialog(GtkWidget *dialog, account_t *account)
}
GtkWidget *
show_account_window(account_t *account, SFLPhoneClient *client)
show_account_window(account_t *account, SFLPhoneClient *client, gboolean is_new)
{
// First we reset
reset();
@ -1353,7 +1347,7 @@ show_account_window(account_t *account, SFLPhoneClient *client)
// We do not need the global settings for the IP2IP account
if (!IS_IP2IP) {
/* General Settings */
GtkWidget *basic_tab = create_basic_tab(account);
GtkWidget *basic_tab = create_basic_tab(account, is_new);
gtk_notebook_append_page(GTK_NOTEBOOK(notebook), basic_tab, gtk_label_new(_("Basic")));
gtk_notebook_page_num(GTK_NOTEBOOK(notebook), basic_tab);
}

View File

@ -40,10 +40,12 @@
/**
* Display the main account widget
* @param a The account you want to display
* @param client Our client instance
* @param is_new TRUE if this account is being added
* @return The dialog with the pertinent account information
*/
GtkWidget *
show_account_window(account_t *a, SFLPhoneClient *client);
show_account_window(account_t *a, SFLPhoneClient *client, gboolean is_new);
/*
* @param dialog The dialog the account will be update from

View File

@ -117,10 +117,10 @@ static void delete_account_cb(G_GNUC_UNUSED GtkButton *button, gpointer data)
static void account_store_fill();
static void
run_account_dialog(const gchar *selected_accountID, SFLPhoneClient *client)
run_account_dialog(const gchar *selected_accountID, SFLPhoneClient *client, gboolean is_new)
{
account_t *account = account_list_get_by_id(selected_accountID);
GtkWidget *dialog = show_account_window(account, client);
GtkWidget *dialog = show_account_window(account, client, is_new);
update_account_from_dialog(dialog, account);
account_store_fill();
}
@ -132,7 +132,7 @@ static void row_activated_cb(GtkTreeView *view,
{
gchar *selected_accountID = get_selected_accountID(view);
g_return_if_fail(selected_accountID != NULL);
run_account_dialog(selected_accountID, client);
run_account_dialog(selected_accountID, client, FALSE);
g_free(selected_accountID);
}
@ -145,7 +145,7 @@ static void edit_account_cb(G_GNUC_UNUSED GtkButton *button, EditData *data)
{
gchar *selected_accountID = get_selected_accountID(GTK_TREE_VIEW(data->view));
g_return_if_fail(selected_accountID != NULL);
run_account_dialog(selected_accountID, data->client);
run_account_dialog(selected_accountID, data->client, FALSE);
g_free(selected_accountID);
}
@ -199,7 +199,7 @@ static void add_account_cb(SFLPhoneClient *client)
{
account_t *new_account = create_default_account();
account_list_add(new_account);
run_account_dialog(new_account->accountID, client);
run_account_dialog(new_account->accountID, client, TRUE);
}
/**