view src/dbus-useful.c @ 11217:f854402837ba

[gaim-migrate @ 13349] The history plugin really should require logging be on. Otherwise, you can end up seeing a really old conversation instead of the "last" conversation. I've made this change. Now, the history plugin can't be silently failing to do its job if logging is disabled. I've coded it to display a warning dialog under the following conditions: 1) The user enables the history plugin and neither IM nor chat logging is enabled. 2) The user starts Gaim with the history plugin and no logging enabled. 3) The user disables logging while the history plugin is enabled. I thought about automatically disabling the history plugin after displaying the dialog, but I imagine (hope?) people will enable the history plugin, see the dialog, and enable logging. If this is what happens, they would be confused if the history plugin automatically disabled itself when it displayed the dialog. This should address RFE 1241878, "History plugin should have a more helpful description". committer: Tailor Script <tailor@pidgin.im>
author Richard Laager <rlaager@wiktel.com>
date Tue, 09 Aug 2005 05:20:07 +0000
parents 744c0708d11f
children 64fadbf3810f
line wrap: on
line source

#include <string.h>
#include <glib.h>

#include "conversation.h"
#include "util.h"



GaimAccount *
gaim_accounts_find_ext(const char *name, const char *protocol_id, 
		       gboolean (*account_test)(const GaimAccount *account))
{
    GaimAccount *result = NULL;
    GList *l;
    char *who;
    
    if (name)
	who = g_strdup(gaim_normalize(NULL, name));
    else 
	who = NULL;
    
    for (l = gaim_accounts_get_all(); l != NULL; l = l->next) {
	GaimAccount *account = (GaimAccount *)l->data;
	
	if (who && strcmp(gaim_normalize(NULL, gaim_account_get_username(account)), who))
	    continue;

	if (protocol_id && strcmp(account->protocol_id, protocol_id))
	    continue;

	if (account_test && !account_test(account)) 
	    continue;

	result = account;
	break;
    }

    g_free(who);

    return result;
}

GaimAccount *gaim_accounts_find_any(const char *name, const char *protocol) 
{
    return gaim_accounts_find_ext(name, protocol, NULL);
}

GaimAccount *gaim_accounts_find_connected(const char *name, const char *protocol) 
{
    return gaim_accounts_find_ext(name, protocol, gaim_account_is_connected);
}


/* DBusMessage *gaim_account_set_status_DBUS(DBusMessage *message_DBUS, DBusError *error_DBUS)  */
/* { */
/*     DBusMessage *reply; */
/*     DBusMessageIter iter; */

/*     dbus_int32_t account, active;     */
/*     char *status_id; */
    
/*     dbus_message_iter_init(message, &iter); */
/* const char *name; */
/* const char *protocol; */

/* dbus_message_get_args(message_DBUS, error_DBUS,  DBUS_TYPE_STRING, &name, DBUS_TYPE_STRING, &protocol, DBUS_TYPE_INVALID); */
/* CHECK_ERROR(error_DBUS); */
/* NULLIFY(name); */
/* NULLIFY(protocol); */
/* GAIM_DBUS_POINTER_TO_ID(RESULT, gaim_accounts_find_any(name, protocol), error_DBUS); */
/* reply_DBUS =  dbus_message_new_method_return (message_DBUS); */
/* dbus_message_append_args(reply_DBUS,  DBUS_TYPE_INT32, &RESULT,  DBUS_TYPE_INVALID); */
/* return reply_DBUS; */

/* } */