Ejemplo n.º 1
0
static void pocketvox_controller_waiting(PocketvoxController *controller, gpointer data)
{
    g_return_if_fail(NULL != controller);

 	controller->priv = G_TYPE_INSTANCE_GET_PRIVATE (controller,
			TYPE_POCKETVOX_CONTROLLER, PocketvoxControllerPrivate);
	PocketvoxControllerPrivate *priv = controller->priv;

    pocketvox_notifier_say(priv->notifier, _("I'm waiting for your orders"));
}
PocketvoxApplication* pocketvox_application_new()
{
	PocketvoxApplication *application = (PocketvoxApplication *)g_object_new(TYPE_POCKETVOX_APPLICATION, NULL);

	application->priv = G_TYPE_INSTANCE_GET_PRIVATE (application,
			TYPE_POCKETVOX_APPLICATION, PocketvoxApplicationPrivate);
	PocketvoxApplicationPrivate *priv = application->priv;

	bindtextdomain (GETTEXT_PACKAGE, PROGRAMNAME_LOCALEDIR);
	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
    textdomain(GETTEXT_PACKAGE);

	gtk_init(NULL, NULL);
	gst_init(NULL, NULL);

	//access gettings parameters
	gchar *name 		= g_settings_get_string(priv->settings, "name");
	gchar *voice		= g_settings_get_string(priv->settings, "voice");

    gchar *lm			= g_settings_get_string(priv->settings, "lm");
	gchar *dic			= g_settings_get_string(priv->settings, "dict");
	gchar *acoustic		= g_settings_get_string(priv->settings, "hmm");

    gchar *keyword      = g_settings_get_string(priv->settings, "keyword");

    gchar *material     = g_settings_get_string(priv->settings, "source");
    gchar *device       = g_settings_get_string(priv->settings, "device");

    gchar *host         = g_settings_get_string(priv->settings, "host");
    gint  port          = atoi(g_settings_get_string(priv->settings, "port"));

    gboolean visual     = g_settings_get_boolean(priv->settings, "visual-notification");
    gboolean sound      = g_settings_get_boolean(priv->settings, "sound-notification");

	GVariant *modules;
	GVariantIter *iter;
	gchar *key, *value;
	gboolean isapps;

	priv->indicator 	= pocketvox_indicator_new();
	priv->notifier 		= pocketvox_notifier_new(name, voice);
	priv->recognizer 	= pocketvox_recognizer_new(acoustic, lm, dic, keyword, material, device, host, port);

    if(priv->indicator  == NULL
    || priv->notifier   == NULL
    || priv->recognizer == NULL)
    {
        g_error("A pocketvox component couldn't be created:\n%s %p\n%s %p\n%s %p",
                 "PocketvoxIndicator",priv->indicator,
                 "PocketvoxNotifier", priv->notifier,
                 "PocketvoxRecognizer", priv->recognizer);
    }

    g_object_set(G_OBJECT(priv->notifier),
                  "visual_notification", visual,
                  "sound_notification",  sound,
                  NULL);

	priv->controller = pocketvox_controller_new(priv->recognizer, priv->notifier, priv->indicator);

    if(priv->controller == NULL)
    {
        g_error("PocketvoxController couldn't be created");
    }

    //only need to connect signals
	modules = g_settings_get_value(priv->settings, "list-apps");

	//get the content of the GVariant
	g_variant_get(modules, "a(ssb)", &iter);

	//loop other all apps
	while(g_variant_iter_loop(iter, "(ssb)", &key, &value, &isapps))
	{
		pocketvox_application_add_profile_module(application, key, value, isapps);
	}

	g_variant_iter_free(iter);

	//a little startup msg
	gchar *startup = g_strdup_printf(_("Hello %s, I'm listening you, I need a few seconds to initialize myself"), name);
	pocketvox_notifier_say(priv->notifier, startup);
	g_free(startup);

	return application;
}