/* Don't close the dialog if a range error occured */
if(response_id == GTK_RESPONSE_OK) {
- if (!modest_text_utils_validate_domain_name (hostname)) {
+ if (hostname && (hostname[0] != '\0') &&
+ (!modest_text_utils_validate_domain_name (hostname))) {
g_signal_stop_emission_by_name (dialog, "response");
hildon_banner_show_information (NULL, NULL, _("mcen_ib_invalid_servername"));
gtk_widget_grab_focus (priv->entry_outgoingserver);
ModestConnectionSpecificSmtpEditWindow *window,
ModestAccountMgr *account_manager)
{
- ModestConnectionSpecificSmtpEditWindowPrivate *priv =
- CONNECTION_SPECIFIC_SMTP_EDIT_WINDOW_GET_PRIVATE (window);
+ ModestConnectionSpecificSmtpEditWindowPrivate *priv = NULL;
+ ModestServerAccountData *result = NULL;
+ const gchar *outgoing_server = NULL;
+
+ priv = CONNECTION_SPECIFIC_SMTP_EDIT_WINDOW_GET_PRIVATE (window);
+ outgoing_server = gtk_entry_get_text (GTK_ENTRY (priv->entry_outgoingserver));
+
+ /* If the outgoing server is NULL, we are removing the connection specific
+ * settings */
+ if ((outgoing_server == NULL) || (outgoing_server[0] == '\0')) {
+ return NULL;
+ }
/* Use g_slice_new0(), because that's what modest_account_mgr_free_server_account_data()
* expects us to use. */
- ModestServerAccountData *result = g_slice_new0 (ModestServerAccountData);
+ result = g_slice_new0 (ModestServerAccountData);
result->hostname = g_strdup (gtk_entry_get_text (GTK_ENTRY (priv->entry_outgoingserver)));
result->username = g_strdup (gtk_entry_get_text (GTK_ENTRY (priv->entry_user_username)));
MODEST_CONNECTION_SPECIFIC_SMTP_EDIT_WINDOW (window),
priv->account_manager);
- const gchar* server_name = data ? data->hostname : NULL;
- gtk_list_store_set (GTK_LIST_STORE (priv->model), &iter,
- MODEL_COL_SERVER_ACCOUNT_DATA, data,
- MODEL_COL_SERVER_NAME, server_name,
- -1);
+ if (data) {
+ gtk_list_store_set (GTK_LIST_STORE (priv->model), &iter,
+ MODEL_COL_SERVER_ACCOUNT_DATA, data,
+ MODEL_COL_SERVER_NAME, data->hostname,
+ -1);
+ } else {
+ gtk_list_store_set (GTK_LIST_STORE (priv->model), &iter,
+ MODEL_COL_SERVER_ACCOUNT_DATA, NULL,
+ MODEL_COL_SERVER_NAME, NULL,
+ MODEL_COL_SERVER_ACCOUNT_NAME, NULL,
+ -1);
+ }
}
else
{
g_free (connection_name);
g_free (id);
g_free (server_account_name);
+ update_model_server_names (self);
}
static void
/* Walk through the list, reading each row */
while (valid) {
- gchar *id = NULL;
+ gchar *id = NULL;
gchar *connection_name = NULL;
gchar *server_account_name = NULL;
ModestServerAccountData *data = NULL;
modest_account_mgr_set_server_account_port (priv->account_manager, server_account_name, data->port);
}
+ } else if (connection_name) {
+ modest_account_mgr_remove_connection_specific_smtp (priv->account_manager,
+ connection_name);
+ gtk_list_store_set (GTK_LIST_STORE (priv->model), &iter,
+ MODEL_COL_SERVER_ACCOUNT_NAME, NULL, -1);
}
g_free (connection_name);
while (valid) {
gchar *server_account_name = NULL;
+ ModestServerAccountData *data = NULL;
gtk_tree_model_get (priv->model, &iter,
MODEL_COL_SERVER_ACCOUNT_NAME, &server_account_name,
+ MODEL_COL_SERVER_ACCOUNT_DATA, &data,
-1);
-
if (server_account_name) {
+
/* Get the server hostname and show it in the treemodel: */
gchar *hostname = modest_account_mgr_get_server_account_hostname (priv->account_manager,
server_account_name);
MODEL_COL_SERVER_NAME, hostname,
-1);
g_free (hostname);
+ } else if (data && data->hostname && (data->hostname[0] != '\0')) {
+ gtk_list_store_set (GTK_LIST_STORE (priv->model), &iter,
+ MODEL_COL_SERVER_NAME, data->hostname,
+ -1);
} else {
gtk_list_store_set (GTK_LIST_STORE (priv->model), &iter,
MODEL_COL_SERVER_NAME, _("mcen_ia_optionalsmtp_notdefined"),
/* The server account is in the item after the connection name: */
GSList *list_connection = g_slist_find_custom (list, connection_name, (GCompareFunc)strcmp);
if (list_connection) {
+ GSList *account_node = g_slist_next (list_connection);
/* remove both items: */
- GSList *temp = g_slist_delete_link(list_connection, list_connection);
- temp = g_slist_delete_link(temp, g_slist_next(temp));
+ list = g_slist_delete_link(list, list_connection);
+ list = g_slist_delete_link(list, account_node);
}
/* Reset the changed list: */