Diff of /trunk/src/cache.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 158 by harbaum, Wed Nov 4 14:54:52 2009 UTC revision 159 by harbaum, Wed Nov 4 20:28:54 2009 UTC
# Line 100  void overview_coordinate_update(cache_co Line 100  void overview_coordinate_update(cache_co
100    gtk_widget_show_all(context->bearing_hbox);    gtk_widget_show_all(context->bearing_hbox);
101  }  }
102    
103  static void gcvote_callback(vote_t *vote, gpointer data) {  static void gcvote_set(cache_context_t *context, vote_t *vote) {
104    cache_context_t *context = (cache_context_t*)data;    if(!vote) return;
   
   /* no vote returned: request failed, just cleanup */  
   if(!vote) {  
     printf("gcvote callback for failed request\n");  
   
     gcvote_request_free(context->gcvote_request);  
     context->gcvote_request = NULL;  
     return FALSE;  
   }  
105    
106    printf("gcvote callback is being called with a %d/%d\n",    if(context->quality) {
107           vote->quality, vote->votes);      gtk_widget_destroy(context->quality);
108        context->quality = NULL;
109      }
110    
111      if(context->votes) {
112        gtk_widget_destroy(context->votes);
113        context->votes = NULL;
114      }
115    
116    /* update/draw the voting */    /* update/draw the voting */
   if(!context->quality) {  
117  #ifndef USE_MAEMO  #ifndef USE_MAEMO
118      GtkTooltips *tips = gtk_tooltips_new();    GtkTooltips *tips = gtk_tooltips_new();
119  #endif  #endif
120    
121      GtkWidget *ivbox = gtk_vbox_new(FALSE, 0);    char *votes_str = g_strdup_printf(_("Quality (%d %s):"), vote->votes,
   
     char *votes_str = g_strdup_printf(_("Quality (%d %s):"), vote->votes,  
122                                        (vote->votes == 1)?_("vote"):_("votes"));                                        (vote->votes == 1)?_("vote"):_("votes"));
123      context->votes = GTK_LABEL_SMALL(votes_str);    context->votes = GTK_LABEL_SMALL(votes_str);
124      gtk_box_pack_start(GTK_BOX(ivbox), context->votes, FALSE, FALSE, 0);    gtk_box_pack_start(GTK_BOX(context->votebox),
125      g_free(votes_str);                       context->votes, FALSE, FALSE, 0);
126      context->quality = icon_get_widget(ICON_STARS, (int)(vote->quality*2-2));    g_free(votes_str);
127      gtk_box_pack_start(GTK_BOX(ivbox), context->quality,    context->quality = icon_get_widget(ICON_STARS, (int)(vote->quality*2-2));
128                                 FALSE, FALSE, 0);    gtk_box_pack_start(GTK_BOX(context->votebox), context->quality,
129                         FALSE, FALSE, 0);
130      GtkWidget *align = gtk_alignment_new(0.5, 0.5, 0.0, 0.0);  
     gtk_container_add(GTK_CONTAINER(align), ivbox);  
     gtk_box_pack_start_defaults(GTK_BOX(context->ratebox), align);  
131  #ifndef USE_MAEMO  #ifndef USE_MAEMO
132      char *str = g_strdup_printf(_("Quality: %d"), vote->quality);    char *str = g_strdup_printf(_("Quality: %d"), vote->quality);
133      gtk_tooltips_set_tip(tips, ivbox, str, NULL);    gtk_tooltips_set_tip(tips, context->votebox, str, NULL);
134      g_free(str);    g_free(str);
135  #endif  #endif
136    
137      gtk_widget_show_all(context->votebox);
138    
139      g_free(vote);
140    }
141    
142    static void gcvote_callback(vote_t *vote, gpointer data) {
143      cache_context_t *context = (cache_context_t*)data;
144    
145      gtk_widget_show_all(context->ratebox);    /* no vote returned: request failed, just cleanup */
146      if(!vote) {
147        printf("gcvote callback for failed request\n");
148    
149      gcvote_request_free(context->gcvote_request);      gcvote_request_free(context->gcvote_request);
150      context->gcvote_request = NULL;      context->gcvote_request = NULL;
151        return;
152    }    }
153    
154      printf("gcvote callback is being called with a %d/%d\n",
155             vote->quality, vote->votes);
156    
157      gcvote_set(context, vote);
158    
159      gcvote_save(context->appdata, context->cache, &context->gcvote_request->mem);
160    
161      gcvote_request_free(context->gcvote_request);
162      context->gcvote_request = NULL;
163  }  }
164    
165  static GtkWidget *cache_overview(cache_context_t *context) {  static GtkWidget *cache_overview(cache_context_t *context) {
# Line 210  static GtkWidget *cache_overview(cache_c Line 224  static GtkWidget *cache_overview(cache_c
224    }    }
225    
226    /* ----------- vbox containing all ratings ---------- */    /* ----------- vbox containing all ratings ---------- */
227    GtkWidget *ratebox = context->ratebox = gtk_vbox_new(FALSE, 0);    GtkWidget *ratebox = gtk_vbox_new(FALSE, 0);
228    
229    /* ----------- box containing difficulty rating ---------- */    /* ----------- box containing difficulty rating ---------- */
230    if(cache->difficulty != 0) {    if(cache->difficulty != 0) {
# Line 249  static GtkWidget *cache_overview(cache_c Line 263  static GtkWidget *cache_overview(cache_c
263    }    }
264    
265    /* --------------------- GCVote ------------------------ */    /* --------------------- GCVote ------------------------ */
266    /* gcvote if present and possible */  
   
267    context->gcvote_request =    context->gcvote_request =
268      gcvote_request(appdata, gcvote_callback, cache->url, context);      gcvote_request(appdata, gcvote_callback, cache->url, context);
269    
270  #if 0    context->votebox = gtk_vbox_new(FALSE, 0);
271    vote_t *vote = gcvote_get(appdata, cache->url);    GtkWidget *align = gtk_alignment_new(0.5, 0.5, 0.0, 0.0);
272    if(vote) {    gtk_container_add(GTK_CONTAINER(align), context->votebox);
273      ivbox = gtk_vbox_new(FALSE, 0);    gtk_box_pack_start_defaults(GTK_BOX(ratebox), align);
   
     char *votes_str = g_strdup_printf(_("Quality (%d %s):"), vote->votes,  
                                       (vote->votes == 1)?_("vote"):_("votes"));  
     gtk_box_pack_start(GTK_BOX(ivbox), GTK_LABEL_SMALL(votes_str),  
                        FALSE, FALSE, 0);  
     g_free(votes_str);  
     gtk_box_pack_start(GTK_BOX(ivbox),  
          icon_get_widget(ICON_STARS, (int)(vote->quality*2-2)), FALSE, FALSE, 0);  
   
     GtkWidget *align = gtk_alignment_new(0.5, 0.5, 0.0, 0.0);  
     gtk_container_add(GTK_CONTAINER(align), ivbox);  
     gtk_box_pack_start_defaults(GTK_BOX(ratebox), align);  
 #ifndef USE_MAEMO  
     sprintf(str, _("Quality: %d"), vote->quality);  
     gtk_tooltips_set_tip(tips, ivbox, str, NULL);  
 #endif  
   
     gcvote_free(vote);  
   }  
 #endif  
274    
275    gtk_table_attach_defaults(GTK_TABLE(table), ratebox, 2,3,0,2);    gtk_table_attach_defaults(GTK_TABLE(table), ratebox, 2,3,0,2);
276    
# Line 724  static void on_notebook_destroy(GtkWidge Line 717  static void on_notebook_destroy(GtkWidge
717    
718    printf("destroying notebook\n");    printf("destroying notebook\n");
719    
720      /* cancel a pending gcvote request */
721      if(context->gcvote_request) {
722        gcvote_request_free(context->gcvote_request);
723        context->gcvote_request = NULL;
724      }
725    
726    notes_destroy_event(NULL, context);    notes_destroy_event(NULL, context);
727    goto_destroy_event(NULL, context);    goto_destroy_event(NULL, context);
728    

Legend:
Removed from v.158  
changed lines
  Added in v.159