diff src/scrobbler/configure.c @ 3109:5a11abf0075c

scrobbler: add support for custom audioscrobbler servers. (closes #23)
author William Pitcock <nenolod@atheme.org>
date Fri, 01 May 2009 12:28:48 -0500
parents 3134a0987162
children 062f42c3737e
line wrap: on
line diff
--- a/src/scrobbler/configure.c	Thu Apr 30 18:23:44 2009 -0400
+++ b/src/scrobbler/configure.c	Fri May 01 12:28:48 2009 -0500
@@ -19,7 +19,9 @@
 #include "configure.h"
 #include "plugin.h"
 
-GtkWidget *entry1, *entry2, *ge_entry1, *ge_entry2, *cfgdlg;
+#define LASTFM_HS_URL "http://post.audioscrobbler.com"
+
+GtkWidget *entry1, *entry2, *entry3, *ge_entry1, *ge_entry2, *cfgdlg;
 static GdkColor disabled_color;
 guint apply_timeout = 0; /* ID of timeout to save new config */
 gboolean running = TRUE; /* if plugin threads are running */
@@ -49,6 +51,7 @@
     mcs_handle_t *cfgfile;
 
     const char *uid = gtk_entry_get_text(GTK_ENTRY(entry1));
+    const char *url = gtk_entry_get_text(GTK_ENTRY(entry3));
     const char *ge_uid = gtk_entry_get_text(GTK_ENTRY(ge_entry1));
 
     if ((cfgfile = aud_cfg_db_open())) {
@@ -68,6 +71,11 @@
             aud_cfg_db_set_string(cfgfile, "audioscrobbler", "username", "");
             aud_cfg_db_set_string(cfgfile, "audioscrobbler", "password", "");
         }
+        
+        if (url != NULL && url[0] != '\0' && strlen(url))
+        	aud_cfg_db_set_string(cfgfile, "audioscrobbler", "sc_url", (char *)url);
+       	else if (!url || url[0] == '\0')
+       		aud_cfg_db_set_string(cfgfile, "audioscrobbler", "sc_url", LASTFM_HS_URL);
 
         if (ge_uid != NULL && ge_uid[0] != '\0' && strlen(ge_uid) &&
             ge_pwd != NULL && ge_pwd[0] != '\0' && strlen(ge_pwd))
@@ -154,6 +162,7 @@
   GtkWidget *label3;
   GtkWidget *label1;
   GtkWidget *label2;
+  GtkWidget *label4;
   GtkWidget *himage1;
   GtkWidget *align1;
   GtkWidget *notebook1;
@@ -197,6 +206,14 @@
   gtk_label_set_justify (GTK_LABEL (label3), GTK_JUSTIFY_RIGHT);
   gtk_misc_set_alignment (GTK_MISC (label3), 1, 0.5);
 
+  label4 = gtk_label_new (_("Scrobbler URL:"));
+  gtk_widget_show (label4);
+  gtk_table_attach (GTK_TABLE (table1), label4, 0, 1, 4, 5,
+  					(GtkAttachOptions) (GTK_FILL),
+  					(GtkAttachOptions) (0), 0, 0);
+  gtk_label_set_justify (GTK_LABEL (label4), GTK_JUSTIFY_RIGHT);
+  gtk_misc_set_alignment (GTK_MISC (label4), 1, 0.5);
+
   entry1 = gtk_entry_new ();
   gtk_widget_show (entry1);
   gtk_table_attach_defaults (GTK_TABLE (table1), entry1, 1, 2, 2, 3);
@@ -216,6 +233,10 @@
                    NULL);
   gtk_widget_show (entry2);
   gtk_table_attach_defaults (GTK_TABLE (table1), entry2, 1, 2, 3, 4);
+  
+  entry3 = gtk_entry_new ();
+  gtk_widget_show (entry3);
+  gtk_table_attach_defaults (GTK_TABLE (table1), entry3, 1, 2, 4, 5);
 
   label1 = gtk_label_new (_("<b>Last.FM</b>"));
   gtk_label_set_use_markup (GTK_LABEL (label1), TRUE);
@@ -282,6 +303,7 @@
 
         if ((db = aud_cfg_db_open())) {
                 gchar *username = NULL;
+                gchar *sc_url = NULL;
 		// last fm
                 aud_cfg_db_get_string(db, "audioscrobbler", "username",
                         &username);
@@ -290,6 +312,14 @@
                         g_free(username);
 			username = NULL;
                 }
+                
+				aud_cfg_db_get_string(db, "audioscrobbler", "sc_url", &sc_url);
+				if (sc_url) {
+                		gtk_entry_set_text(GTK_ENTRY(entry3), sc_url);
+                		g_free(sc_url);
+		             	sc_url = NULL;
+				}
+				
 		// gerpok
                 aud_cfg_db_get_string(db, "audioscrobbler", "ge_username",
                         &username);
@@ -303,6 +333,7 @@
         }
 
   g_signal_connect(entry1, "changed", G_CALLBACK(entry_changed), NULL);
+  g_signal_connect(entry3, "changed", G_CALLBACK(entry_changed), NULL);
   g_signal_connect(ge_entry1, "changed", G_CALLBACK(entry_changed), NULL);
 
   return vbox2;