[Goodies-commits] r6228 - xfce4-radio-plugin/trunk/panel-plugin

Stefan Ott cockroach at xfce.org
Sun Nov 30 05:19:40 CET 2008


Author: cockroach
Date: 2008-11-30 04:19:39 +0000 (Sun, 30 Nov 2008)
New Revision: 6228

Modified:
   xfce4-radio-plugin/trunk/panel-plugin/radio.c
   xfce4-radio-plugin/trunk/panel-plugin/radio.h
Log:
Added fixes for preset input encodings, auto-learning of max signal strength


Modified: xfce4-radio-plugin/trunk/panel-plugin/radio.c
===================================================================
--- xfce4-radio-plugin/trunk/panel-plugin/radio.c	2008-11-30 03:37:04 UTC (rev 6227)
+++ xfce4-radio-plugin/trunk/panel-plugin/radio.c	2008-11-30 04:19:39 UTC (rev 6228)
@@ -56,12 +56,21 @@
 	} else {
 		gtk_widget_show (data->signal_bar);
 		double signal = radio_get_signal (data->fd);
+
+		if (signal > data->max_signal_strength)
+			data->max_signal_strength = signal;
+
 		gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR
-					(data->signal_bar), signal / 2);
+			(data->signal_bar), signal / data->max_signal_strength);
 
 		GdkColor color;
-		gdk_color_parse (signal > 1 ? COLOR_SIGNAL_HIGH :
-						COLOR_SIGNAL_LOW, &color);
+		if (signal == 1)
+			gdk_color_parse (COLOR_SIGNAL_LOW, &color);
+		else if (signal == data->max_signal_strength)
+			gdk_color_parse (COLOR_SIGNAL_HIGH, &color);
+		else
+			gdk_color_parse (COLOR_SIGNAL_MED, &color);
+
 		gtk_widget_modify_bg (data->signal_bar, GTK_STATE_PRELIGHT,
 								&color);
 		if (data->signal_timeout_id == 0) {
@@ -306,15 +315,14 @@
 	gtk_widget_show (label);
 	gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0);
 
-	GtkWidget* station = gtk_entry_new_with_max_length (
-						MAX_PRESET_NAME_LENGTH);
+	GtkWidget* station = gtk_entry_new();
 	gtk_entry_set_text (GTK_ENTRY (station), preset->name);
 	gtk_widget_show (station);
 	gtk_box_pack_start (GTK_BOX (box), station, FALSE, FALSE, 0);
 
 	if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK) {
-		strncpy (preset->name, gtk_entry_get_text (GTK_ENTRY (station)),
-						MAX_PRESET_NAME_LENGTH);
+		g_free (preset->name);
+		preset->name = g_strdup (gtk_entry_get_text (GTK_ENTRY (station)));
 		pop_preset (preset, data);
 		append_to_presets (preset, data);
 	}
@@ -339,16 +347,14 @@
 
 	char buf[8];
 	sprintf (buf, "%5.1f FM", ((float) data->freq) / 100);
-	GtkWidget* station = gtk_entry_new_with_max_length (
-						MAX_PRESET_NAME_LENGTH);
+	GtkWidget* station = gtk_entry_new();
 	gtk_entry_set_text (GTK_ENTRY (station), buf);
 	gtk_widget_show (station);
 	gtk_box_pack_start (GTK_BOX (box), station, FALSE, FALSE, 0);
 
 	if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) {
-		const char* name = gtk_entry_get_text (GTK_ENTRY (station));
 		radio_preset* preset = malloc (sizeof (radio_preset));
-		strncpy (preset->name, name, MAX_PRESET_NAME_LENGTH);
+		preset->name = g_strdup(gtk_entry_get_text (GTK_ENTRY (station)));
 		preset->freq = data->freq;
 		preset->next = NULL;
 		if (!append_to_presets (preset, data)) {
@@ -669,6 +675,8 @@
 
 	gtk_container_add (GTK_CONTAINER (gui->ebox), gui->box);
 
+	gui->max_signal_strength = 2;
+
 	return gui;
 }
 
@@ -1030,8 +1038,8 @@
 				radio_preset *preset =
 						malloc (sizeof (radio_preset));
 				preset->next = NULL;
-				strncpy(preset->name, value,
-							MAX_PRESET_NAME_LENGTH);
+//				g_free (preset->name);
+				preset->name = g_strdup(value);
 				preset->freq = atoi (*entry);
 				append_to_presets (preset, data);
 			}

Modified: xfce4-radio-plugin/trunk/panel-plugin/radio.h
===================================================================
--- xfce4-radio-plugin/trunk/panel-plugin/radio.h	2008-11-30 03:37:04 UTC (rev 6227)
+++ xfce4-radio-plugin/trunk/panel-plugin/radio.h	2008-11-30 04:19:39 UTC (rev 6228)
@@ -19,6 +19,7 @@
  */
 
 #include <gtk/gtk.h>
+#include <glib.h>
 #include <fcntl.h>
 
 #include <sys/ioctl.h>
@@ -34,16 +35,15 @@
 #define MAX_LABEL_LENGTH	7
 #define MAX_DEVICE_NAME_LENGTH	32
 #define MAX_COMMAND_LENGTH	512
-#define MAX_PRESET_NAME_LENGTH	15
 
-#define COLOR_SIGNAL_LOW	"#ffff00"
+#define COLOR_SIGNAL_LOW	"#ff0000"
+#define COLOR_SIGNAL_MED	"#ffff00"
 #define COLOR_SIGNAL_HIGH	"#00ff00"
 
 #define BORDER 8
 
 #define RADIO_CONFIG_FILE	"xfce4/panel/radio.rc"
 
-
 typedef enum {
 	CHANGE_FREQ,
 	CHANGE_PRESET
@@ -51,7 +51,7 @@
 
 struct radio_preset_st {
 	int			freq;
-	char			name [MAX_PRESET_NAME_LENGTH];
+	gchar			*name;
 	struct radio_preset_st*	next;
 };
 
@@ -78,6 +78,10 @@
 	radio_preset*		presets;
 	mouse_scroll_reaction	scroll;
 
+	// this seems to be card specific and we can't seem to get the maximum
+	// possible value for a given card from v4l
+	double			max_signal_strength;
+
 	XfcePanelPlugin		*plugin;
 } radio_gui;
 




More information about the Goodies-commits mailing list