X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fapplet.c;h=2fd3a441d61d528b5b8897cb67848c0c476406dc;hb=9f203c4dbeb3095816d839fd317c3c680bf17fd5;hp=639f8b41d56607ee18402aabd288193461791502;hpb=d45100910a7ea681114e6d05b2bfd66210239913;p=espeaktime diff --git a/src/applet.c b/src/applet.c index 639f8b4..2fd3a44 100644 --- a/src/applet.c +++ b/src/applet.c @@ -1,13 +1,9 @@ #include -#include #include #include #include -#include #include - -#define ESPEAKTIME_BIN "espeaktime-now.sh" -#define GCONF_KEY "/apps/Maemo/espeaktime" +#include "config.h" /* TODO: read these from disk */ @@ -74,98 +70,6 @@ static const struct effect { }; static const int num_effects = sizeof(effects) / sizeof(effects[0]); -struct espeaktime_settings { - gchar *voice; - gchar *effect; - gchar *text; - gint amplitude; - gint pitch; - gint speed; - gboolean ignore_silent; -}; - -static void cfg_read(GConfClient *client, struct espeaktime_settings *cfg) -{ - cfg->voice = gconf_client_get_string(client, GCONF_KEY "/voice", NULL); - cfg->effect = gconf_client_get_string(client, GCONF_KEY "/effect", NULL); - cfg->text = gconf_client_get_string(client, GCONF_KEY "/text", NULL); - cfg->amplitude = gconf_client_get_int(client, GCONF_KEY "/amplitude", NULL); - cfg->pitch = gconf_client_get_int(client, GCONF_KEY "/pitch", NULL); - cfg->speed = gconf_client_get_int(client, GCONF_KEY "/speed", NULL); - cfg->ignore_silent = gconf_client_get_bool(client, GCONF_KEY "/ignore_silent", NULL); - if (!cfg->voice) - cfg->voice = g_strdup("en-us"); - if (!cfg->effect) - cfg->effect = g_strdup(""); - if (!cfg->text) - cfg->text = g_strdup("%H:%M"); - if (!cfg->amplitude) - cfg->amplitude = 100; - if (!cfg->pitch) - cfg->pitch = 50; - if (!cfg->speed) - cfg->speed = 170; - /* TODO: default ignore_silent to TRUE */ -} - -static void cfg_write(GConfClient *client, struct espeaktime_settings *cfg) -{ - gconf_client_add_dir(client, GCONF_KEY, GCONF_CLIENT_PRELOAD_NONE, NULL); - gconf_client_set_string(client, GCONF_KEY "/voice", cfg->voice, NULL); - gconf_client_set_string(client, GCONF_KEY "/effect", cfg->effect, NULL); - gconf_client_set_string(client, GCONF_KEY "/text", cfg->text, NULL); - gconf_client_set_int(client, GCONF_KEY "/amplitude", cfg->amplitude, NULL); - gconf_client_set_int(client, GCONF_KEY "/pitch", cfg->pitch, NULL); - gconf_client_set_int(client, GCONF_KEY "/speed", cfg->speed, NULL); - gconf_client_set_bool(client, GCONF_KEY "/ignore_silent", cfg->ignore_silent, NULL); -} - -static void cfg_free(struct espeaktime_settings *cfg) -{ - g_free(cfg->voice); - g_free(cfg->effect); - g_free(cfg->text); -} - -static void cfg_speak(struct espeaktime_settings *cfg, gboolean test_mode) -{ - gchar astr[16], pstr[16], sstr[16]; - gchar vstr[64]; - gchar text[4096]; - time_t t; - struct tm *tm; - int res; - pid_t pid; - - time(&t); - tm = localtime(&t); - - g_snprintf(astr, sizeof(astr), "%d", cfg->amplitude); - g_snprintf(pstr, sizeof(pstr), "%d", cfg->pitch); - g_snprintf(sstr, sizeof(sstr), "%d", cfg->speed); - g_snprintf(vstr, sizeof(vstr), "%s%s%s", cfg->voice, - (*cfg->effect) ? "+" : "", cfg->effect); - strftime(text, sizeof(text), cfg->text, tm); - - setenv("EST_TESTMODE", test_mode ? "1" : "0", 1); - setenv("EST_IGN_SILENT", cfg->ignore_silent ? "1" : "0", 1); - - pid = fork(); - if (pid < 0) { - perror("fork"); - return; - } - if (pid) - return; - g_print("execlp: -a '%s' -p '%s' -s '%s' -v '%s' '%s'\n", - astr, pstr, sstr, vstr, text); - res = execlp(ESPEAKTIME_BIN, ESPEAKTIME_BIN, - "-a", astr, "-p", pstr, "-s", sstr, "-v", vstr, - text, NULL); - g_print("execlp: %d (%s)\n", res, g_strerror(errno)); - exit(res); -} - static void add_scale(GtkVBox *vbox, GtkSizeGroup *size_group, const char *caption, GtkAdjustment *adjustment) {