Example #1
0
	void ProtoManager::PluginsAvailable ()
	{
		purple_debug_set_enabled (true);

		const auto& dir = Util::CreateIfNotExists ("azoth/velvetbird/purple");
		purple_util_set_user_dir (dir.absolutePath ().toUtf8 ().constData ());

		purple_core_set_ui_ops (&UiOps);
		purple_eventloop_set_ui_ops (&EvLoopOps);
		purple_idle_set_ui_ops (&IdleOps);
		purple_connections_set_ui_ops (&ConnUiOps);

		purple_set_blist (purple_blist_new ());
		purple_blist_set_ui_data (this);
		purple_blist_set_ui_ops (&BListUiOps);

		purple_conversations_set_ui_ops (&ConvUiOps);
		purple_accounts_set_ui_ops (&AccUiOps);
		purple_notify_set_ui_ops (&NotifyUiOps);

		purple_imgstore_init ();
		purple_buddy_icons_init ();

		if (!purple_core_init ("leechcraft.azoth"))
		{
			qWarning () << Q_FUNC_INFO
					<< "failed initializing libpurple";
			return;
		}

		QMap<QByteArray, Protocol_ptr> id2proto;

		auto protos = purple_plugins_get_protocols ();
		while (protos)
		{
			auto item = static_cast<PurplePlugin*> (protos->data);
			protos = protos->next;

			const auto& proto = std::make_shared<Protocol> (item, Proxy_);
			const auto& purpleId = proto->GetPurpleID ();

			if (purpleId == "prpl-jabber" || purpleId == "prpl-irc")
				continue;

			Protocols_ << proto;
			id2proto [purpleId] = proto;
		}

		auto accs = purple_accounts_get_all ();
		while (accs)
		{
			auto acc = static_cast<PurpleAccount*> (accs->data);
			accs = accs->next;

			id2proto [purple_account_get_protocol_id (acc)]->PushAccount (acc);
		}

		purple_blist_load ();
		purple_savedstatus_activate (purple_savedstatus_get_startup ());
	}
Example #2
0
STATIC_PROTO_INIT

gboolean
purple_core_init(const char *ui)
{
    PurpleCoreUiOps *ops;
    PurpleCore *core;

    g_return_val_if_fail(ui != NULL, FALSE);
    g_return_val_if_fail(purple_get_core() == NULL, FALSE);

#ifdef ENABLE_NLS
    bindtextdomain(PACKAGE, LOCALEDIR);
#endif
//VOXOX - JRT - 2009.04.11
#ifdef _WIN32
    wpurple_init();

#ifdef _DEBUG
//	_CrtSetDbgFlag( 0x20 );	//_CRTDBG_LEAK_CHECK_DF );//VOXOX - JRT - 2009.04.10 JRT-XXX
//	_CrtSetAllocHook( AllocHook );
#endif
#endif

    g_type_init();

    _core = core = g_new0(PurpleCore, 1);
    core->ui = g_strdup(ui);
    core->reserved = NULL;

    ops = purple_core_get_ui_ops();

    /* The signals subsystem is important and should be first. */
    purple_signals_init();

    purple_util_init();

    purple_signal_register(core, "uri-handler",
                           purple_marshal_BOOLEAN__POINTER_POINTER_POINTER,
                           purple_value_new(PURPLE_TYPE_BOOLEAN), 3,
                           purple_value_new(PURPLE_TYPE_STRING), /* Protocol */
                           purple_value_new(PURPLE_TYPE_STRING), /* Command */
                           purple_value_new(PURPLE_TYPE_BOXED, "GHashTable *")); /* Parameters */

    purple_signal_register(core, "quitting", purple_marshal_VOID, NULL, 0);

    /* The prefs subsystem needs to be initialized before static protocols
     * for protocol prefs to work. */
    purple_prefs_init();

    purple_debug_init();

    if (ops != NULL)
    {
        if (ops->ui_prefs_init != NULL)
            ops->ui_prefs_init();

        if (ops->debug_ui_init != NULL)
            ops->debug_ui_init();
    }

#ifdef HAVE_DBUS
    purple_dbus_init();
#endif

    purple_ciphers_init();
    purple_cmds_init();

    /* Since plugins get probed so early we should probably initialize their
     * subsystem right away too.
     */
    purple_plugins_init();

    /* Initialize all static protocols. */
    static_proto_init();

    purple_plugins_probe(G_MODULE_SUFFIX);

    /* The buddy icon code uses the imgstore, so init it early. */
    purple_imgstore_init();

    /* Accounts use status, buddy icons and connection signals, so
     * initialize these before accounts
     */
    purple_status_init();
    purple_buddy_icons_init();
    purple_connections_init();

    purple_accounts_init();
    purple_savedstatuses_init();
    purple_notify_init();
    purple_certificate_init();
    purple_conversations_init();
    purple_blist_init();
    purple_log_init();
    purple_network_init();
    purple_privacy_init();
    purple_pounces_init();
    purple_proxy_init();
    purple_dnsquery_init();
    purple_sound_init();
    purple_ssl_init();
    purple_stun_init();
    purple_xfers_init();
    purple_idle_init();
    purple_smileys_init();

    /*
     * Call this early on to try to auto-detect our IP address and
     * hopefully save some time later.
     */
    purple_network_get_my_ip(-1);

    if (ops != NULL && ops->ui_init != NULL)
        ops->ui_init();

    return TRUE;
}