r3318 - in trunk/src/target/OM-2007.2/applications/openmoko-dialer2: . src/phone-kit

thomas at sita.openmoko.org thomas at sita.openmoko.org
Thu Nov 1 13:19:44 CET 2007


Author: thomas
Date: 2007-11-01 13:19:43 +0100 (Thu, 01 Nov 2007)
New Revision: 3318

Modified:
   trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog
   trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-talking.c
Log:
* src/phone-kit/moko-talking.c:
Revert use of GdkPixbufSimpleAnim as it does not support looping


Modified: trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog	2007-11-01 11:40:32 UTC (rev 3317)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog	2007-11-01 12:19:43 UTC (rev 3318)
@@ -1,3 +1,8 @@
+2007-11-01  Thomas Wood  <thomas at openedhand.com>
+
+	* src/phone-kit/moko-talking.c:
+	Revert use of GdkPixbufSimpleAnim as it does not support looping
+
 2007-10-31  Thomas Wood  <thomas at openedhand.com>
 
 	* src/phone-kit/moko-talking.c: Replace manual animation functions with

Modified: trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-talking.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-talking.c	2007-11-01 11:40:32 UTC (rev 3317)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-talking.c	2007-11-01 12:19:43 UTC (rev 3318)
@@ -48,9 +48,9 @@
   GtkWidget          *person;
   GtkWidget          *status;
 
-  GdkPixbufSimpleAnim *talking_anim;
-  GdkPixbufSimpleAnim *incoming_anim;
-  GdkPixbufSimpleAnim *outgoing_anim;
+  GdkPixbuf          *talking[N_PICS];
+  GdkPixbuf          *incoming[4];
+  GdkPixbuf          *outgoing[4];
 
   GTimer             *dtimer;
   guint               timeout;
@@ -100,6 +100,25 @@
   g_free (markup);
 }
 
+static gboolean
+incoming_timeout (MokoTalking *talking)
+{
+  MokoTalkingPrivate *priv;
+  static gint i = 0;
+
+  g_return_val_if_fail (MOKO_IS_TALKING (talking), FALSE);
+  priv = talking->priv;
+
+  gtk_image_set_from_pixbuf (GTK_IMAGE (priv->icon), 
+                             priv->incoming[i]);
+  
+  i++;
+  if (i == 4)
+    i = 0;
+  
+  return TRUE;
+}
+
 void
 moko_talking_incoming_call (MokoTalking      *talking, 
                             const gchar      *number,
@@ -115,14 +134,39 @@
 
   gtk_label_set_text (GTK_LABEL (priv->title), "Incoming Call");
   gtk_label_set_text (GTK_LABEL (priv->duration), "");
-  gtk_image_set_from_animation (GTK_IMAGE (priv->icon), priv->incoming_anim);
+  gtk_image_set_from_file (GTK_IMAGE (priv->icon), 
+                           PKGDATADIR"/incoming_3.png");
 
   gtk_label_set_text (GTK_LABEL (priv->status), number);
   gtk_image_set_from_file (GTK_IMAGE (priv->person),
                            PKGDATADIR"/unkown.png");
+  if (priv->timeout)
+    g_source_remove (priv->timeout);
+  priv->timeout = g_timeout_add (1000, 
+                                 (GSourceFunc)incoming_timeout,
+                                 (gpointer)talking);
   gtk_window_present (GTK_WINDOW (priv->window));
 }
 
+static gboolean
+outgoing_timeout (MokoTalking *talking)
+{
+  MokoTalkingPrivate *priv;
+  static gint i = 0;
+
+  g_return_val_if_fail (MOKO_IS_TALKING (talking), FALSE);
+  priv = talking->priv;
+
+  gtk_image_set_from_pixbuf (GTK_IMAGE (priv->icon), 
+                             priv->outgoing[i]);
+  
+  i++;
+  if (i == 4)
+    i = 0;
+  
+  return TRUE;
+}
+
 void
 moko_talking_outgoing_call (MokoTalking      *talking, 
                             const gchar      *number,
@@ -146,7 +190,6 @@
 
   gtk_label_set_text (GTK_LABEL (priv->title), "Outgoing Call");
   gtk_label_set_text (GTK_LABEL (priv->duration), "");
-  gtk_image_set_from_animation (GTK_IMAGE (priv->icon), priv->outgoing_anim);
 
   gtk_label_set_markup (GTK_LABEL (priv->status), markup);
   
@@ -155,6 +198,12 @@
   else
     gtk_image_set_from_file (GTK_IMAGE (priv->person),
                              PKGDATADIR"/unkown.png");
+  if (priv->timeout)
+    g_source_remove (priv->timeout);
+  priv->timeout = g_timeout_add (1000, 
+                                 (GSourceFunc)outgoing_timeout,
+                                 (gpointer)talking);
+
   g_free (markup);
   gtk_window_present (GTK_WINDOW (priv->window));
 }
@@ -165,7 +214,8 @@
   MokoTalkingPrivate *priv;
   gdouble elapsed;
   gint hour, min, sec;
-  gchar *text = NULL;
+  gchar *markup = NULL;
+  static gint i = 0;
 
   g_return_val_if_fail (MOKO_IS_TALKING (talking), FALSE);
   priv = talking->priv;
@@ -178,11 +228,18 @@
     min = (gint) ((elapsed - 3600 * hour) / 60);
     sec = (gint) (elapsed - 3600 * hour - 60 * min);
 
-    text = g_strdup_printf ("%02d:%02d:%02d", hour, min, sec);
-    gtk_label_set_text (GTK_LABEL (priv->duration), text);
-    g_free(text);
+    markup = g_strdup_printf ("%02d:%02d:%02d", hour, min, sec);
+    gtk_label_set_markup (GTK_LABEL (priv->duration), markup);
   }
 
+  gtk_image_set_from_pixbuf (GTK_IMAGE (priv->icon), 
+                             priv->talking[i]);
+  
+  i++;
+  if (i == 5)
+    i = 0;
+  
+  g_free(markup);
   return TRUE;
 }
   
@@ -209,7 +266,8 @@
 
   gtk_label_set_text (GTK_LABEL (priv->title), "Talking");
   gtk_label_set_text (GTK_LABEL (priv->duration), "00:00:00");
-  gtk_image_set_from_animation (GTK_IMAGE (priv->icon), priv->talking_anim);
+  gtk_image_set_from_file (GTK_IMAGE (priv->icon), 
+                           PKGDATADIR"/talking_3.png");
 
   /* start call duration timer */
   if (priv->dtimer)
@@ -427,36 +485,38 @@
   gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
 
   /* Load the pixbufs */
-  priv->talking_anim = gdk_pixbuf_simple_anim_new (96, 96, 1);
-  gdk_pixbuf_simple_anim_add_frame (priv->talking_anim,
-    gdk_pixbuf_new_from_file (PKGDATADIR"/talking_0.png", NULL));
-  gdk_pixbuf_simple_anim_add_frame (priv->talking_anim,
-    gdk_pixbuf_new_from_file (PKGDATADIR"/talking_1.png", NULL));
-  gdk_pixbuf_simple_anim_add_frame (priv->talking_anim,
-    gdk_pixbuf_new_from_file (PKGDATADIR"/talking_2.png", NULL));
-  gdk_pixbuf_simple_anim_add_frame (priv->talking_anim,
-    gdk_pixbuf_new_from_file (PKGDATADIR"/talking_3.png", NULL));
+  for (i = 0; i < N_PICS; i++)
+  {
+    if (i == 0)
+      priv->talking[i] = gdk_pixbuf_new_from_file (PKGDATADIR"/talking.png",
+                                                   NULL);
+    else
+    {
+      gchar *name = g_strdup_printf ("%s/talking_%d.png", PKGDATADIR, i-1);
+      priv->talking[i] = gdk_pixbuf_new_from_file (name, NULL);
+      g_free (name);
+    }
+    if (G_IS_OBJECT (priv->talking[i]))
+      g_object_ref (priv->talking[i]);
+  }
+  for (i = 0; i < N_PICS-1; i++)
+  {
+    gchar *name = g_strdup_printf ("%s/outgoing_%d.png", PKGDATADIR, i);
+    priv->outgoing[i] = gdk_pixbuf_new_from_file (name, NULL);
+    g_free (name);
+    if (G_IS_OBJECT (priv->outgoing[i]))
+      g_object_ref (priv->outgoing[i]);
+  }
+  for (i = 0; i < N_PICS-1; i++)
+  {
+    gchar *name = g_strdup_printf ("%s/incoming_%d.png", PKGDATADIR, i);
+    priv->incoming[i] = gdk_pixbuf_new_from_file (name, NULL);
+    g_free (name);
+    if (G_IS_OBJECT (priv->incoming[i]))
+      g_object_ref (priv->incoming[i]);
 
-  priv->incoming_anim = gdk_pixbuf_simple_anim_new (96, 96, 1);
-  gdk_pixbuf_simple_anim_add_frame (priv->incoming_anim,
-    gdk_pixbuf_new_from_file (PKGDATADIR"/incoming_0.png", NULL));
-  gdk_pixbuf_simple_anim_add_frame (priv->incoming_anim,
-    gdk_pixbuf_new_from_file (PKGDATADIR"/incoming_1.png", NULL));
-  gdk_pixbuf_simple_anim_add_frame (priv->incoming_anim,
-    gdk_pixbuf_new_from_file (PKGDATADIR"/incoming_2.png", NULL));
-  gdk_pixbuf_simple_anim_add_frame (priv->incoming_anim,
-    gdk_pixbuf_new_from_file (PKGDATADIR"/incoming_3.png", NULL));
+  }
 
-  priv->outgoing_anim = gdk_pixbuf_simple_anim_new (96, 96, 1);
-  gdk_pixbuf_simple_anim_add_frame (priv->outgoing_anim,
-    gdk_pixbuf_new_from_file (PKGDATADIR"/outgoing_0.png", NULL));
-  gdk_pixbuf_simple_anim_add_frame (priv->outgoing_anim,
-    gdk_pixbuf_new_from_file (PKGDATADIR"/outgoing_1.png", NULL));
-  gdk_pixbuf_simple_anim_add_frame (priv->outgoing_anim,
-    gdk_pixbuf_new_from_file (PKGDATADIR"/outgoing_2.png", NULL));
-  gdk_pixbuf_simple_anim_add_frame (priv->outgoing_anim,
-    gdk_pixbuf_new_from_file (PKGDATADIR"/outgoing_3.png", NULL));
-
   priv->window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
   gtk_widget_show_all (main_vbox);
   gtk_container_add (GTK_CONTAINER (priv->window), main_vbox);





More information about the commitlog mailing list