r1614 - trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/src

zhiyong_sun at sita.openmoko.org zhiyong_sun at sita.openmoko.org
Mon Apr 2 09:33:12 CEST 2007


Author: zhiyong_sun
Date: 2007-04-02 09:33:07 +0200 (Mon, 02 Apr 2007)
New Revision: 1614

Modified:
   trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/src/moko-gsm-conn.c
   trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/src/moko-gsm-conn.h
   trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/src/openmoko-panel-gsm.c
Log:
put gsm gprs signal status image into GtkHbox, which use to realize dynamic image show.

Modified: trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/src/moko-gsm-conn.c
===================================================================
--- trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/src/moko-gsm-conn.c	2007-04-02 07:11:54 UTC (rev 1613)
+++ trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/src/moko-gsm-conn.c	2007-04-02 07:33:07 UTC (rev 1614)
@@ -19,6 +19,7 @@
 static GPollFD GPfd;
 static gint gsm_q = -99;
 static gint gprs_q = -99;
+static int test = 0;
 
 static gboolean
 gsm_watcher_prepare (GSource * source, gint * timeout)
@@ -125,38 +126,50 @@
   }
 }
 
-GsmSignalQuality
+SignalStatus
 moko_panel_gsm_signal_quality()
 {
   switch (gsm_q)
   {
     case 4 :
-      return GSM_SIGNAL_LEVEL_1 ;
+      return LEVEL_1 ;
     case 3 :
-      return GSM_SIGNAL_LEVEL_2 ;
+      return LEVEL_2 ;
     case 2 :
-      return GSM_SIGNAL_LEVEL_3 ;
+      return LEVEL_3 ;
     case 1 :
-      return GSM_SIGNAL_LEVEL_4 ;
+      return LEVEL_4 ;
     case 0 :
-      return GSM_SIGNAL_LEVEL_5 ;
+      return LEVEL_5 ;
     default :
-      return GSM_SIGNAL_ERROR;
+      return UN_CONN;
   }
 }
 /*for a rainning day*/
-GprsSignalQuality
+SignalStatus
 moko_panel_gprs_signal_quality()
 {
-
-if(0)
-{  switch (gprs_q)
+//some code for only for test, since there have not any methord to check out gprs signal.
+  
+  test ++;
+  if (test > 11 || test < 0)
+    test = 0;
+  switch (test)
   {
-		  
+    case 10 :
+      return LEVEL_1 ;
+    case 9 :
+      return LEVEL_2 ;
+    case 8 :
+      return LEVEL_3 ;
+    case 7 :
+      return LEVEL_4 ;
+    case 6 :
+      return LEVEL_5 ;
+    default :
+      return UN_CONN;
   }
 }
-  return GPRS_CLOSE;
-}
 
 void
 gsm_watcher_install (void)

Modified: trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/src/moko-gsm-conn.h
===================================================================
--- trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/src/moko-gsm-conn.h	2007-04-02 07:11:54 UTC (rev 1613)
+++ trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/src/moko-gsm-conn.h	2007-04-02 07:33:07 UTC (rev 1614)
@@ -7,31 +7,27 @@
 /*signal value: "0": best connection "5": connect error*/
 G_BEGIN_DECLS
 
-typedef enum{
-  GSM_SIGNAL_LEVEL_1 = 0,
-  GSM_SIGNAL_LEVEL_2,
-  GSM_SIGNAL_LEVEL_3,
-  GSM_SIGNAL_LEVEL_4,
-  GSM_SIGNAL_LEVEL_5,
-  GSM_SIGNAL_ERROR,
-  TOTAL_GSM_SIGNALS
-}GsmSignalQuality;
+enum{
+  GSM,
+  GPRS,
+  SIN_NO
+};
 
 typedef enum{
-  GPRS_SIGNAL_LEVEL_1 = 0,
-  GPRS_SIGNAL_LEVEL_2,
-  GPRS_SIGNAL_LEVEL_3,
-  GPRS_SIGNAL_LEVEL_4,
-  GPRS_SIGNAL_LEVEL_5,
-  TOTAL_GPRS_SIGNALS,
-  GPRS_CLOSE
-}GprsSignalQuality;
+  LEVEL_1 = 0,
+  LEVEL_2,
+  LEVEL_3,
+  LEVEL_4,
+  LEVEL_5,
+  UN_CONN,
+  TOTAL_STATUS
+}SignalStatus;
 
 void gsm_watcher_install (void);
 
-GsmSignalQuality moko_panel_gsm_signal_quality(void);
+SignalStatus moko_panel_gsm_signal_quality(void);
 
-GprsSignalQuality moko_panel_gprs_signal_quality(void);
+SignalStatus moko_panel_gprs_signal_quality(void);
 
 G_END_DECLS
 

Modified: trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/src/openmoko-panel-gsm.c
===================================================================
--- trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/src/openmoko-panel-gsm.c	2007-04-02 07:11:54 UTC (rev 1613)
+++ trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/src/openmoko-panel-gsm.c	2007-04-02 07:33:07 UTC (rev 1614)
@@ -17,32 +17,39 @@
 #include <libmokoui/moko-panel-applet.h>
 
 #include <gtk/gtkimage.h>
+#include <gtk/gtkbox.h>
 #include <time.h>
 
 #include "moko-gsm-conn.h"
 
+typedef struct{
+  GtkWidget *image;
+  SignalStatus status;
+}MokoSignal;
+
 typedef struct {
-  GsmSignalQuality gsm_quality;
-  GprsSignalQuality gprs_quality;
-  GtkImage *image;
+  MokoSignal gsm;
+  MokoSignal gprs;
+  GtkWidget *hbox;
   guint timeout_id;
 } GsmApplet;
 
-static gchar *gsm_q_name[TOTAL_GSM_SIGNALS]={
+static gchar *gsm_q_name[TOTAL_STATUS]={
   "SignalStrength_01.png",
   "SignalStrength_02.png",
   "SignalStrength_03.png",
   "SignalStrength_04.png",
   "SignalStrength_05.png",
-  "SignalStrength_00.png",
+  "SignalStrength_00.png"
 };
 
-static gchar *gprs_q_name[TOTAL_GPRS_SIGNALS]={
+static gchar *gprs_q_name[TOTAL_STATUS]={
   "SignalStrength25g_01.png",
   "SignalStrength25g_02.png",
   "SignalStrength25g_03.png",
   "SignalStrength25g_04.png",
   "SignalStrength25g_05.png",
+  NULL
 };
 
 static void
@@ -56,21 +63,36 @@
 static gboolean
 timeout_cb (GsmApplet *applet)
 {
-  GsmSignalQuality new_gsm_q = moko_panel_gsm_signal_quality ();
-  //GprsSignalQuality new_gprs_q = moko_panel_gprs_signal_quality (); 
+  char path[512];
+  static SignalStatus status = 0;
   
-  if (applet->gsm_quality == new_gsm_q)
-	/*Keep going, image need not change*/
-    return TRUE;
+  status = moko_panel_gsm_signal_quality ();
+  if (status != applet->gsm.status )
+  {
+    applet->gsm.status = status;
+    snprintf (path, 512, "%s/%s", PKGDATADIR, gsm_q_name[applet->gsm.status]);
+    if (GTK_IS_IMAGE(applet->gsm.image))
+      gtk_image_set_from_file (applet->gsm.image, path);
+    else 
+      g_error ("gsm image set failed");
+  }
+
+  status = moko_panel_gprs_signal_quality (); 
+  g_debug ("status = %d", status);
+  if (status == UN_CONN && GTK_WIDGET (applet->gprs.image))
+  {
+    gtk_widget_hide (GTK_WIDGET(applet->gprs.image));
+  }
   else
-    applet->gsm_quality = new_gsm_q;
-
-  /*load new signal status image, FIXME:load these images in memery when initial the applet*/
-  char path[512];
-  snprintf (path, 512, "%s/%s", PKGDATADIR, gsm_q_name[applet->gsm_quality]);
-  gtk_image_set_from_file (applet->image, path);
-
-  /* Keep going */
+  {
+    applet->gprs.status = status;
+    snprintf (path, 512, "%s/%s", PKGDATADIR, gprs_q_name[applet->gprs.status]);
+    if (GTK_IS_IMAGE(applet->gprs.image))
+      gtk_image_set_from_file (applet->gprs.image, path);
+    gtk_widget_show (GTK_WIDGET (applet->gprs.image));
+  }
+  
+  /* keep going*/
   return TRUE;
 }
 
@@ -78,22 +100,25 @@
 mb_panel_applet_create(const char* id, GtkOrientation orientation)
 {
     MokoPanelApplet* mokoapplet = moko_panel_applet_new();
-    char path[512];
 
     GsmApplet *applet;
     applet = g_slice_new (GsmApplet);
+   
+    g_object_weak_ref( G_OBJECT(mokoapplet), (GWeakNotify) gsm_applet_free, applet );
+    applet->timeout_id = g_timeout_add(2000, (GSourceFunc) timeout_cb, applet);
 
-    applet->gsm_quality = GSM_SIGNAL_ERROR;
-    applet->gprs_quality = GPRS_CLOSE;
+    applet->gsm.image = GTK_IMAGE(gtk_image_new ());//make an empty GtkImage object
+    applet->gsm.status = UN_CONN;
+    applet->gprs.image = GTK_IMAGE(gtk_image_new ());//make an empty GtkImage object
+    applet->gprs.status = UN_CONN;
 
-    snprintf (path, 512, "%s/%s", PKGDATADIR, gsm_q_name[applet->gsm_quality]);
-	applet->image = GTK_IMAGE(gtk_image_new_from_file (path));
-    gtk_widget_set_name( applet->image, "OpenMoko gsm applet" );
-    g_object_weak_ref( G_OBJECT(applet->image), (GWeakNotify) gsm_applet_free, applet );
+    applet->hbox = gtk_hbox_new(FALSE, 0);
+    gtk_widget_show (applet->hbox);
 
-    applet->timeout_id = g_timeout_add(10000, (GSourceFunc) timeout_cb, applet);
+    gtk_box_pack_start (GTK_BOX(applet->hbox), GTK_WIDGET(applet->gprs.image), FALSE, FALSE, 2);
+    gtk_box_pack_end (GTK_BOX(applet->hbox), GTK_WIDGET(applet->gsm.image), FALSE, FALSE, 2);
 
-    moko_panel_applet_set_widget( GTK_CONTAINER(mokoapplet), applet->image );
+    moko_panel_applet_set_widget( GTK_CONTAINER(mokoapplet), applet->hbox );
     gtk_widget_show_all( GTK_WIDGET(mokoapplet) );
 
     gsm_watcher_install ();





More information about the commitlog mailing list