applet: factor out config-related functions to their own source file
authorAlex Badea <vamposdecampos@gmail.com>
Sun, 20 Jun 2010 12:30:35 +0000 (15:30 +0300)
committerAlex Badea <vamposdecampos@gmail.com>
Sun, 20 Jun 2010 12:30:35 +0000 (15:30 +0300)
src/Makefile.am
src/applet.c
src/config.c [new file with mode: 0644]
src/config.h [new file with mode: 0644]

index 77006b7..25d50d0 100644 (file)
@@ -6,12 +6,12 @@ espeaktimed_LDADD = $(GLIB_LIBS) $(DBUS_LIBS) $(MCE_LIBS) $(HAL_LIBS)
 
 libcpdir = $(libdir)/hildon-control-panel
 libcp_LTLIBRARIES = libespeaktime-cp.la
-libespeaktime_cp_la_SOURCES = applet.c
+libespeaktime_cp_la_SOURCES = applet.c config.c
 libespeaktime_cp_la_CFLAGS = $(HILDON_CFLAGS) $(GCONF_CLAGS) $(OSSO_CFLAGS)
 libespeaktime_cp_la_LDFLAGS = -module -avoid-version
 libespeaktime_cp_la_LIBADD = $(HILDON_LIBS) $(GCONF_LIBS)
 
 EXTRA_PROGRAMS = applet
-applet_SOURCES = applet.c
+applet_SOURCES = applet.c config.c
 applet_CFLAGS = -DTEST $(HILDON_CFLAGS) $(GCONF_CFLAGS) $(OSSO_CFLAGS)
 applet_LDADD = $(HILDON_LIBS) $(GCONF_LIBS)
index 639f8b4..2fd3a44 100644 (file)
@@ -1,13 +1,9 @@
 #include <unistd.h>
-#include <errno.h>
 #include <gtk/gtk.h>
 #include <hildon/hildon.h>
 #include <hildon-cp-plugin/hildon-cp-plugin-interface.h>
-#include <gconf/gconf.h>
 #include <gconf/gconf-client.h>
-
-#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)
 {
diff --git a/src/config.c b/src/config.c
new file mode 100644 (file)
index 0000000..8eadd3f
--- /dev/null
@@ -0,0 +1,89 @@
+#include "config.h"
+#include <stdlib.h>
+#include <unistd.h>
+#include <errno.h>
+
+#define ESPEAKTIME_BIN "espeaktime-now.sh"
+#define GCONF_KEY "/apps/Maemo/espeaktime"
+
+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 */
+}
+
+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);
+}
+
+void cfg_free(struct espeaktime_settings *cfg)
+{
+       g_free(cfg->voice);
+       g_free(cfg->effect);
+       g_free(cfg->text);
+}
+
+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);
+}
diff --git a/src/config.h b/src/config.h
new file mode 100644 (file)
index 0000000..0018778
--- /dev/null
@@ -0,0 +1,22 @@
+#ifndef _ESPEAKTIME_CONFIG_H
+#define _ESPEAKTIME_CONFIG_H
+
+#include <gconf/gconf-client.h>
+
+struct espeaktime_settings {
+       gchar *voice;
+       gchar *effect;
+       gchar *text;
+       gint amplitude;
+       gint pitch;
+       gint speed;
+       gboolean ignore_silent;
+};
+
+extern void cfg_read(GConfClient *client, struct espeaktime_settings *cfg);
+extern void cfg_write(GConfClient *client, struct espeaktime_settings *cfg);
+extern void cfg_speak(struct espeaktime_settings *cfg, gboolean test_mode);
+extern void cfg_free(struct espeaktime_settings *cfg);
+
+#endif
+