Changeset 3318


Ignore:
Timestamp:
11/01/07 13:19:43 (6 years ago)
Author:
thomas
Message:
  • src/phone-kit/moko-talking.c:

Revert use of GdkPixbufSimpleAnim? as it does not support looping

Location:
trunk/src/target/OM-2007.2/applications/openmoko-dialer2
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog

    r3315 r3318  
     12007-11-01  Thomas Wood  <thomas@openedhand.com> 
     2 
     3        * src/phone-kit/moko-talking.c: 
     4        Revert use of GdkPixbufSimpleAnim as it does not support looping 
     5 
    162007-10-31  Thomas Wood  <thomas@openedhand.com> 
    27 
  • trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-talking.c

    r3315 r3318  
    4949  GtkWidget          *status; 
    5050 
    51   GdkPixbufSimpleAnim *talking_anim; 
    52   GdkPixbufSimpleAnim *incoming_anim; 
    53   GdkPixbufSimpleAnim *outgoing_anim; 
     51  GdkPixbuf          *talking[N_PICS]; 
     52  GdkPixbuf          *incoming[4]; 
     53  GdkPixbuf          *outgoing[4]; 
    5454 
    5555  GTimer             *dtimer; 
     
    101101} 
    102102 
     103static gboolean 
     104incoming_timeout (MokoTalking *talking) 
     105{ 
     106  MokoTalkingPrivate *priv; 
     107  static gint i = 0; 
     108 
     109  g_return_val_if_fail (MOKO_IS_TALKING (talking), FALSE); 
     110  priv = talking->priv; 
     111 
     112  gtk_image_set_from_pixbuf (GTK_IMAGE (priv->icon),  
     113                             priv->incoming[i]); 
     114   
     115  i++; 
     116  if (i == 4) 
     117    i = 0; 
     118   
     119  return TRUE; 
     120} 
     121 
    103122void 
    104123moko_talking_incoming_call (MokoTalking      *talking,  
     
    116135  gtk_label_set_text (GTK_LABEL (priv->title), "Incoming Call"); 
    117136  gtk_label_set_text (GTK_LABEL (priv->duration), ""); 
    118   gtk_image_set_from_animation (GTK_IMAGE (priv->icon), priv->incoming_anim); 
     137  gtk_image_set_from_file (GTK_IMAGE (priv->icon),  
     138                           PKGDATADIR"/incoming_3.png"); 
    119139 
    120140  gtk_label_set_text (GTK_LABEL (priv->status), number); 
    121141  gtk_image_set_from_file (GTK_IMAGE (priv->person), 
    122142                           PKGDATADIR"/unkown.png"); 
     143  if (priv->timeout) 
     144    g_source_remove (priv->timeout); 
     145  priv->timeout = g_timeout_add (1000,  
     146                                 (GSourceFunc)incoming_timeout, 
     147                                 (gpointer)talking); 
    123148  gtk_window_present (GTK_WINDOW (priv->window)); 
     149} 
     150 
     151static gboolean 
     152outgoing_timeout (MokoTalking *talking) 
     153{ 
     154  MokoTalkingPrivate *priv; 
     155  static gint i = 0; 
     156 
     157  g_return_val_if_fail (MOKO_IS_TALKING (talking), FALSE); 
     158  priv = talking->priv; 
     159 
     160  gtk_image_set_from_pixbuf (GTK_IMAGE (priv->icon),  
     161                             priv->outgoing[i]); 
     162   
     163  i++; 
     164  if (i == 4) 
     165    i = 0; 
     166   
     167  return TRUE; 
    124168} 
    125169 
     
    147191  gtk_label_set_text (GTK_LABEL (priv->title), "Outgoing Call"); 
    148192  gtk_label_set_text (GTK_LABEL (priv->duration), ""); 
    149   gtk_image_set_from_animation (GTK_IMAGE (priv->icon), priv->outgoing_anim); 
    150193 
    151194  gtk_label_set_markup (GTK_LABEL (priv->status), markup); 
     
    156199    gtk_image_set_from_file (GTK_IMAGE (priv->person), 
    157200                             PKGDATADIR"/unkown.png"); 
     201  if (priv->timeout) 
     202    g_source_remove (priv->timeout); 
     203  priv->timeout = g_timeout_add (1000,  
     204                                 (GSourceFunc)outgoing_timeout, 
     205                                 (gpointer)talking); 
     206 
    158207  g_free (markup); 
    159208  gtk_window_present (GTK_WINDOW (priv->window)); 
     
    166215  gdouble elapsed; 
    167216  gint hour, min, sec; 
    168   gchar *text = NULL; 
     217  gchar *markup = NULL; 
     218  static gint i = 0; 
    169219 
    170220  g_return_val_if_fail (MOKO_IS_TALKING (talking), FALSE); 
     
    179229    sec = (gint) (elapsed - 3600 * hour - 60 * min); 
    180230 
    181     text = g_strdup_printf ("%02d:%02d:%02d", hour, min, sec); 
    182     gtk_label_set_text (GTK_LABEL (priv->duration), text); 
    183     g_free(text); 
     231    markup = g_strdup_printf ("%02d:%02d:%02d", hour, min, sec); 
     232    gtk_label_set_markup (GTK_LABEL (priv->duration), markup); 
    184233  } 
    185234 
     235  gtk_image_set_from_pixbuf (GTK_IMAGE (priv->icon),  
     236                             priv->talking[i]); 
     237   
     238  i++; 
     239  if (i == 5) 
     240    i = 0; 
     241   
     242  g_free(markup); 
    186243  return TRUE; 
    187244} 
     
    210267  gtk_label_set_text (GTK_LABEL (priv->title), "Talking"); 
    211268  gtk_label_set_text (GTK_LABEL (priv->duration), "00:00:00"); 
    212   gtk_image_set_from_animation (GTK_IMAGE (priv->icon), priv->talking_anim); 
     269  gtk_image_set_from_file (GTK_IMAGE (priv->icon),  
     270                           PKGDATADIR"/talking_3.png"); 
    213271 
    214272  /* start call duration timer */ 
     
    428486 
    429487  /* Load the pixbufs */ 
    430   priv->talking_anim = gdk_pixbuf_simple_anim_new (96, 96, 1); 
    431   gdk_pixbuf_simple_anim_add_frame (priv->talking_anim, 
    432     gdk_pixbuf_new_from_file (PKGDATADIR"/talking_0.png", NULL)); 
    433   gdk_pixbuf_simple_anim_add_frame (priv->talking_anim, 
    434     gdk_pixbuf_new_from_file (PKGDATADIR"/talking_1.png", NULL)); 
    435   gdk_pixbuf_simple_anim_add_frame (priv->talking_anim, 
    436     gdk_pixbuf_new_from_file (PKGDATADIR"/talking_2.png", NULL)); 
    437   gdk_pixbuf_simple_anim_add_frame (priv->talking_anim, 
    438     gdk_pixbuf_new_from_file (PKGDATADIR"/talking_3.png", NULL)); 
    439  
    440   priv->incoming_anim = gdk_pixbuf_simple_anim_new (96, 96, 1); 
    441   gdk_pixbuf_simple_anim_add_frame (priv->incoming_anim, 
    442     gdk_pixbuf_new_from_file (PKGDATADIR"/incoming_0.png", NULL)); 
    443   gdk_pixbuf_simple_anim_add_frame (priv->incoming_anim, 
    444     gdk_pixbuf_new_from_file (PKGDATADIR"/incoming_1.png", NULL)); 
    445   gdk_pixbuf_simple_anim_add_frame (priv->incoming_anim, 
    446     gdk_pixbuf_new_from_file (PKGDATADIR"/incoming_2.png", NULL)); 
    447   gdk_pixbuf_simple_anim_add_frame (priv->incoming_anim, 
    448     gdk_pixbuf_new_from_file (PKGDATADIR"/incoming_3.png", NULL)); 
    449  
    450   priv->outgoing_anim = gdk_pixbuf_simple_anim_new (96, 96, 1); 
    451   gdk_pixbuf_simple_anim_add_frame (priv->outgoing_anim, 
    452     gdk_pixbuf_new_from_file (PKGDATADIR"/outgoing_0.png", NULL)); 
    453   gdk_pixbuf_simple_anim_add_frame (priv->outgoing_anim, 
    454     gdk_pixbuf_new_from_file (PKGDATADIR"/outgoing_1.png", NULL)); 
    455   gdk_pixbuf_simple_anim_add_frame (priv->outgoing_anim, 
    456     gdk_pixbuf_new_from_file (PKGDATADIR"/outgoing_2.png", NULL)); 
    457   gdk_pixbuf_simple_anim_add_frame (priv->outgoing_anim, 
    458     gdk_pixbuf_new_from_file (PKGDATADIR"/outgoing_3.png", NULL)); 
     488  for (i = 0; i < N_PICS; i++) 
     489  { 
     490    if (i == 0) 
     491      priv->talking[i] = gdk_pixbuf_new_from_file (PKGDATADIR"/talking.png", 
     492                                                   NULL); 
     493    else 
     494    { 
     495      gchar *name = g_strdup_printf ("%s/talking_%d.png", PKGDATADIR, i-1); 
     496      priv->talking[i] = gdk_pixbuf_new_from_file (name, NULL); 
     497      g_free (name); 
     498    } 
     499    if (G_IS_OBJECT (priv->talking[i])) 
     500      g_object_ref (priv->talking[i]); 
     501  } 
     502  for (i = 0; i < N_PICS-1; i++) 
     503  { 
     504    gchar *name = g_strdup_printf ("%s/outgoing_%d.png", PKGDATADIR, i); 
     505    priv->outgoing[i] = gdk_pixbuf_new_from_file (name, NULL); 
     506    g_free (name); 
     507    if (G_IS_OBJECT (priv->outgoing[i])) 
     508      g_object_ref (priv->outgoing[i]); 
     509  } 
     510  for (i = 0; i < N_PICS-1; i++) 
     511  { 
     512    gchar *name = g_strdup_printf ("%s/incoming_%d.png", PKGDATADIR, i); 
     513    priv->incoming[i] = gdk_pixbuf_new_from_file (name, NULL); 
     514    g_free (name); 
     515    if (G_IS_OBJECT (priv->incoming[i])) 
     516      g_object_ref (priv->incoming[i]); 
     517 
     518  } 
    459519 
    460520  priv->window = gtk_window_new (GTK_WINDOW_TOPLEVEL); 
Note: See TracChangeset for help on using the changeset viewer.