diff src/skins/skins_cfg.c @ 2642:c2603047a1a3

add few more config items
author Tomasz Mon <desowin@gmail.com>
date Fri, 23 May 2008 17:17:16 +0200
parents 1aa52f6d547a
children fb5375e86a03
line wrap: on
line diff
--- a/src/skins/skins_cfg.c	Fri May 23 15:38:38 2008 +0200
+++ b/src/skins/skins_cfg.c	Fri May 23 17:17:16 2008 +0200
@@ -22,6 +22,8 @@
 #include "skins_cfg.h"
 #include "ui_skin.h"
 #include "ui_vis.h"
+#include "ui_main.h"
+#include "ui_playlist.h"
 #include <glib.h>
 #include <stdlib.h>
 #include <audacious/plugin.h>
@@ -84,6 +86,10 @@
     .use_xmms_style_fileselector = FALSE,
     .show_numbers_in_pl = TRUE,
     .show_separator_in_pl = TRUE,
+    .playlist_font = NULL,
+    .mainwin_font = NULL,
+    .show_filepopup_for_tuple = TRUE,
+    .filepopup_delay = 20,             /* delay until the filepopup comes up */
 };
 
 typedef struct skins_cfg_boolent_t {
@@ -120,6 +126,7 @@
     {"eq_scaled_linked", &config.eq_scaled_linked, TRUE},
     {"show_numbers_in_pl", &config.show_numbers_in_pl, TRUE},
     {"show_separator_in_pl", &config.show_separator_in_pl, TRUE},
+    {"show_filepopup_for_tuple", &config.show_filepopup_for_tuple, TRUE},
 };
 
 static gint ncfgbent = G_N_ELEMENTS(skins_boolents);
@@ -156,12 +163,33 @@
     {"colorize_g", &config.colorize_g, TRUE},
     {"colorize_b", &config.colorize_b, TRUE},
     {"snap_distance", &config.snap_distance, TRUE},
+    {"filepopup_delay", &config.filepopup_delay, TRUE},
 };
 
 static gint ncfgient = G_N_ELEMENTS(skins_numents);
 
+typedef struct skins_cfg_strent_t {
+    char const *se_vname;
+    char **se_vloc;
+    gboolean se_wrt;
+} skins_cfg_strent;
+
+static skins_cfg_strent skins_strents[] = {
+    {"playlist_font", &config.playlist_font, TRUE},
+    {"mainwin_font", &config.mainwin_font, TRUE},
+    {"skin", &config.skin, FALSE},
+};
+
+static gint ncfgsent = G_N_ELEMENTS(skins_strents);
+
 void skins_cfg_free() {
-    if (config.skin) { g_free(config.skin); config.skin = NULL; }
+    gint i;
+    for (i = 0; i < ncfgsent; ++i) {
+        if (*(skins_strents[i].se_vloc) != NULL) {
+            g_free( *(skins_strents[i].se_vloc) );
+            *(skins_strents[i].se_vloc) = NULL;
+        }
+    }
 }
 
 void skins_cfg_load() {
@@ -182,8 +210,17 @@
                            skins_numents[i].ie_vloc);
     }
 
-    if (!aud_cfg_db_get_string(cfgfile, "skins", "skin", &(config.skin)))
-        config.skin = g_strdup(BMP_DEFAULT_SKIN_PATH);
+    for (i = 0; i < ncfgsent; ++i) {
+        aud_cfg_db_get_string(cfgfile, "skins",
+                              skins_strents[i].se_vname,
+                              skins_strents[i].se_vloc);
+    }
+
+    if (!config.mainwin_font)
+        config.mainwin_font = g_strdup(MAINWIN_DEFAULT_FONT);
+
+    if (!config.playlist_font)
+        config.playlist_font = g_strdup(PLAYLISTWIN_DEFAULT_FONT);
 
     if (!aud_cfg_db_get_float(cfgfile, "skins", "scale_factor", &(config.scale_factor)))
         config.scale_factor = 2.0;
@@ -204,6 +241,13 @@
 
     int i;
 
+    for (i = 0; i < ncfgsent; ++i) {
+        if (skins_strents[i].se_wrt)
+            aud_cfg_db_set_string(cfgfile, "skins",
+                                  skins_strents[i].se_vname,
+                                  *skins_strents[i].se_vloc);
+    }
+
     for (i = 0; i < ncfgbent; ++i)
         if (skins_boolents[i].be_wrt)
             aud_cfg_db_set_bool(cfgfile, "skins",