Add preliminary support for Opera Mobile
[browser-switch] / config-ui / browser-switchboard-cp.c
index 54d590f..1b16242 100644 (file)
@@ -2,7 +2,8 @@
  * browser-switchboard-cp.c -- a hildon-control-panel applet for
  * selecting the default browser for Browser Switchboard
  * 
  * browser-switchboard-cp.c -- a hildon-control-panel applet for
  * selecting the default browser for Browser Switchboard
  * 
- * Copyright (C) 2009 Steven Luo
+ * Copyright (C) 2009-2010 Steven Luo
+ * Copyright (C) 2009-2010 Faheem Pervez
  * 
  * Derived from services-cp.c from maemo-control-services
  * Copyright (c) 2008 Janne Kataja <janne.kataja@iki.fi>
  * 
  * Derived from services-cp.c from maemo-control-services
  * Copyright (c) 2008 Janne Kataja <janne.kataja@iki.fi>
@@ -66,11 +67,14 @@ struct browser_entry browsers[] = {
        { "microb", "MicroB" }, /* First entry is the default! */
        { "tear", "Tear" },
        { "fennec", "Mobile Firefox (Fennec)" },
        { "microb", "MicroB" }, /* First entry is the default! */
        { "tear", "Tear" },
        { "fennec", "Mobile Firefox (Fennec)" },
+       { "opera", "Opera Mobile" },
        { "midori", "Midori" },
        { "other", "Other" },
        { NULL, NULL },
 };
 
        { "midori", "Midori" },
        { "other", "Other" },
        { NULL, NULL },
 };
 
+char *logger_name = NULL;
+
 struct config_widgets {
 #if defined(HILDON) && defined(FREMANTLE)
        GtkWidget *continuous_mode_selector;
 struct config_widgets {
 #if defined(HILDON) && defined(FREMANTLE)
        GtkWidget *continuous_mode_selector;
@@ -168,20 +172,25 @@ static void load_config(void) {
                                        set_continuous_mode(atoi(line.value));
                                        continuous_mode_seen = 1;
                                }
                                        set_continuous_mode(atoi(line.value));
                                        continuous_mode_seen = 1;
                                }
+                               free(line.value);
                        } else if (!strcmp(line.key, "default_browser")) {
                                if (!default_browser_seen) {
                                        set_default_browser(line.value);
                                        default_browser_seen = 1;
                                }
                        } else if (!strcmp(line.key, "default_browser")) {
                                if (!default_browser_seen) {
                                        set_default_browser(line.value);
                                        default_browser_seen = 1;
                                }
+                               free(line.value);
                        } else if (!strcmp(line.key, "other_browser_cmd")) {
                                if (!other_browser_cmd_seen) {
                                        set_other_browser_cmd(line.value);
                                        other_browser_cmd_seen = 1;
                                }
                        } else if (!strcmp(line.key, "other_browser_cmd")) {
                                if (!other_browser_cmd_seen) {
                                        set_other_browser_cmd(line.value);
                                        other_browser_cmd_seen = 1;
                                }
+                               free(line.value);
+                       } else if (!strcmp(line.key, "logging")) {
+                               if (!logger_name)
+                                       logger_name = line.value;
                        }
                }
                free(line.key);
                        }
                }
                free(line.key);
-               free(line.value);
        }
        parse_config_file_end();
 
        }
        parse_config_file_end();
 
@@ -260,6 +269,15 @@ static void save_config(void) {
                                                        get_other_browser_cmd());
                                                other_browser_cmd_seen = 1;
                                        }
                                                        get_other_browser_cmd());
                                                other_browser_cmd_seen = 1;
                                        }
+                               } else if (!strcmp(line.key,
+                                                       "logging")) {
+                                       if (logger_name) {
+                                               fprintf(tmpfp, "%s = \"%s\"\n",
+                                                       line.key,
+                                                       logger_name);
+                                               free(logger_name);
+                                               logger_name = NULL;
+                                       }
                                }
                        } else {
                                /* Just copy the old line over */
                                }
                        } else {
                                /* Just copy the old line over */
@@ -281,6 +299,9 @@ static void save_config(void) {
        if (!other_browser_cmd_seen && strlen(get_other_browser_cmd()) > 0)
                fprintf(tmpfp, "%s = \"%s\"\n",
                        "other_browser_cmd", get_other_browser_cmd());
        if (!other_browser_cmd_seen && strlen(get_other_browser_cmd()) > 0)
                fprintf(tmpfp, "%s = \"%s\"\n",
                        "other_browser_cmd", get_other_browser_cmd());
+       if (logger_name)
+               fprintf(tmpfp, "%s = \"%s\"\n",
+                       "logging", logger_name);
 
        /* Replace the old config file with the new one */
        fclose(tmpfp);
 
        /* Replace the old config file with the new one */
        fclose(tmpfp);
@@ -301,7 +322,7 @@ static void do_reconfig(void) {
        save_config();
 
        /* Try to send SIGHUP to any running browser-switchboard process
        save_config();
 
        /* Try to send SIGHUP to any running browser-switchboard process
-          This causes it to reread config files if in continuous_mode, and
+          This causes it to reread config files if in continuous_mode, or
           die so that the config will be reloaded on next start otherwise */
        system("kill -HUP `pidof browser-switchboard` > /dev/null 2>&1");
 }
           die so that the config will be reloaded on next start otherwise */
        system("kill -HUP `pidof browser-switchboard` > /dev/null 2>&1");
 }