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