Changeset 10512
Legend:
- Unmodified
- Added
- Removed
-
trunk/gtk/details.c
r10458 r10512 24 24 #include "actions.h" 25 25 #include "details.h" 26 #include "favicon.h" /* gtr_get_favicon() */ 26 27 #include "file-list.h" 27 28 #include "hig.h" … … 1886 1887 TRACKER_COL_TORRENT_NAME, 1887 1888 TRACKER_COL_TRACKER_NAME, 1889 TRACKER_COL_FAVICON, 1888 1890 TRACKER_N_COLS 1889 1891 }; … … 1928 1930 1929 1931 static void 1932 favicon_ready_cb( gpointer pixbuf, gpointer vreference ) 1933 { 1934 GtkTreeIter iter; 1935 GtkTreeRowReference * reference = vreference; 1936 1937 if( pixbuf != NULL ) 1938 { 1939 GtkTreePath * path = gtk_tree_row_reference_get_path( reference ); 1940 GtkTreeModel * model = gtk_tree_row_reference_get_model( reference ); 1941 1942 if( gtk_tree_model_get_iter( model, &iter, path ) ) 1943 gtk_list_store_set( GTK_LIST_STORE( model ), &iter, 1944 TRACKER_COL_FAVICON, pixbuf, 1945 -1 ); 1946 1947 gtk_tree_path_free( path ); 1948 1949 g_object_unref( pixbuf ); 1950 } 1951 1952 gtk_tree_row_reference_free( reference ); 1953 } 1954 1955 static void 1930 1956 refreshTracker( struct DetailsImpl * di, tr_torrent ** torrents, int n ) 1931 1957 { … … 1958 1984 G_TYPE_BOOLEAN, 1959 1985 G_TYPE_STRING, 1960 G_TYPE_STRING ); 1986 G_TYPE_STRING, 1987 GDK_TYPE_PIXBUF ); 1961 1988 1962 1989 filter = gtk_tree_model_filter_new( GTK_TREE_MODEL( store ), NULL ); … … 1980 2007 if( n && !gtk_tree_model_get_iter_first( model, &iter ) ) 1981 2008 { 2009 tr_session * session = tr_core_session( di->core ); 2010 1982 2011 for( i=0; i<n; ++i ) 1983 2012 { … … 1988 2017 1989 2018 for( j=0; j<statCount[i]; ++j ) 2019 { 2020 GtkTreePath * path; 2021 GtkTreeRowReference * reference; 2022 const tr_tracker_stat * st = &stats[i][j]; 2023 1990 2024 gtk_list_store_insert_with_values( store, &iter, -1, 1991 2025 TRACKER_COL_TORRENT_ID, torrentId, 1992 2026 TRACKER_COL_TRACKER_INDEX, j, 1993 2027 TRACKER_COL_TORRENT_NAME, inf->name, 1994 TRACKER_COL_TRACKER_NAME, st ats[i][j].host,2028 TRACKER_COL_TRACKER_NAME, st->host, 1995 2029 -1 ); 2030 2031 path = gtk_tree_model_get_path( model, &iter ); 2032 reference = gtk_tree_row_reference_new( model, path ); 2033 gtr_get_favicon_from_url( session, st->announce, favicon_ready_cb, reference ); 2034 gtk_tree_path_free( path ); 2035 } 1996 2036 } 1997 2037 } … … 2171 2211 { 2172 2212 gboolean b; 2173 GtkWidget *vbox, *sw, *w, *v, *hbox;2174 2213 GtkCellRenderer *r; 2175 2214 GtkTreeViewColumn *c; 2215 GtkWidget *vbox, *sw, *w, *v, *hbox; 2216 const int pad = ( GUI_PAD + GUI_PAD_BIG ) / 2; 2176 2217 2177 2218 vbox = gtk_vbox_new( FALSE, GUI_PAD ); … … 2184 2225 G_CALLBACK( on_tree_view_button_released ), NULL ); 2185 2226 gtk_tree_view_set_rules_hint( GTK_TREE_VIEW( v ), TRUE ); 2227 2228 c = gtk_tree_view_column_new( ); 2229 gtk_tree_view_column_set_title( c, _( "Trackers" ) ); 2230 gtk_tree_view_append_column( GTK_TREE_VIEW( v ), c ); 2231 2232 r = gtk_cell_renderer_pixbuf_new( ); 2233 g_object_set( r, "width", 20 + (GUI_PAD_SMALL*2), "xpad", GUI_PAD_SMALL, "ypad", pad, "yalign", 0.0f, NULL ); 2234 gtk_tree_view_column_pack_start( c, r, FALSE ); 2235 gtk_tree_view_column_add_attribute( c, r, "pixbuf", TRACKER_COL_FAVICON ); 2236 2186 2237 r = gtk_cell_renderer_text_new( ); 2187 g_object_set( r, "ellipsize", PANGO_ELLIPSIZE_END, NULL ); 2188 c = gtk_tree_view_column_new_with_attributes( _( "Trackers" ), r, "markup", TRACKER_COL_TEXT, NULL ); 2189 gtk_tree_view_append_column( GTK_TREE_VIEW( v ), c ); 2190 g_object_set( G_OBJECT( r ), "ypad", (GUI_PAD+GUI_PAD_BIG)/2, 2191 "xpad", (GUI_PAD+GUI_PAD_BIG)/2, 2192 NULL ); 2238 g_object_set( G_OBJECT( r ), "ellipsize", PANGO_ELLIPSIZE_END, "xpad", GUI_PAD_SMALL, "ypad", pad, NULL ); 2239 gtk_tree_view_column_pack_start( c, r, TRUE ); 2240 gtk_tree_view_column_add_attribute( c, r, "markup", TRACKER_COL_TEXT ); 2193 2241 2194 2242 sw = gtk_scrolled_window_new( NULL, NULL ); -
trunk/gtk/favicon.c
r10392 r10512 170 170 } 171 171 } 172 173 void 174 gtr_get_favicon_from_url( tr_session * session, 175 const char * url, 176 GFunc pixbuf_ready_func, 177 gpointer pixbuf_ready_func_data ) 178 { 179 char * host = gtr_get_host_from_url( url ); 180 gtr_get_favicon( session, host, pixbuf_ready_func, pixbuf_ready_func_data ); 181 g_free( host ); 182 } -
trunk/gtk/favicon.h
r10388 r10512 17 17 #include <libtransmission/transmission.h> 18 18 19 void gtr_get_favicon( tr_session * session, 20 const char * host, 21 GFunc pixbuf_ready_func, 22 gpointer pixbuf_ready_func_data ); 19 void gtr_get_favicon( tr_session * session, 20 const char * host, 21 GFunc pixbuf_ready_func, 22 gpointer pixbuf_ready_func_data ); 23 24 void gtr_get_favicon_from_url( tr_session * session, 25 const char * url, 26 GFunc pixbuf_ready_func, 27 gpointer pixbuf_ready_func_data ); 28 23 29 24 30 #endif -
trunk/gtk/filter.c
r10425 r10512 70 70 { 71 71 return strcmp( *(const char**)a, *(const char**)b ); 72 }73 74 /* pattern-matching text; ie, legaltorrents.com */75 static char*76 get_host_from_url( const char * url )77 {78 char * h = NULL;79 char * name;80 const char * first_dot;81 const char * last_dot;82 83 tr_urlParse( url, -1, NULL, &h, NULL, NULL );84 first_dot = strchr( h, '.' );85 last_dot = strrchr( h, '.' );86 87 if( ( first_dot ) && ( last_dot ) && ( first_dot != last_dot ) )88 name = g_strdup( first_dot + 1 );89 else90 name = g_strdup( h );91 92 tr_free( h );93 return name;94 72 } 95 73 … … 186 164 { 187 165 int k; 188 char * key = g et_host_from_url( inf->trackers[i].announce );166 char * key = gtr_get_host_from_url( inf->trackers[i].announce ); 189 167 int * count = g_hash_table_lookup( hosts_hash, key ); 190 168 if( count == NULL ) … … 581 559 gtk_tree_model_get( model, &iter, CAT_FILTER_COL_HOST, &host, -1 ); 582 560 for( i=0; i<inf->trackerCount; ++i ) { 583 char * tmp = g et_host_from_url( inf->trackers[i].announce );561 char * tmp = gtr_get_host_from_url( inf->trackers[i].announce ); 584 562 const gboolean hit = !strcmp( tmp, host ); 585 563 g_free( tmp ); -
trunk/gtk/util.c
r10505 r10512 332 332 } 333 333 334 /* pattern-matching text; ie, legaltorrents.com */ 335 char* 336 gtr_get_host_from_url( const char * url ) 337 { 338 char * h = NULL; 339 char * name; 340 const char * first_dot; 341 const char * last_dot; 342 343 tr_urlParse( url, -1, NULL, &h, NULL, NULL ); 344 first_dot = strchr( h, '.' ); 345 last_dot = strrchr( h, '.' ); 346 347 if( ( first_dot ) && ( last_dot ) && ( first_dot != last_dot ) ) 348 name = g_strdup( first_dot + 1 ); 349 else 350 name = g_strdup( h ); 351 352 tr_free( h ); 353 return name; 354 } 334 355 335 356 gboolean -
trunk/gtk/util.h
r10507 r10512 62 62 **** 63 63 ***/ 64 65 /* http://www.legaltorrents.com/some/announce/url --> legaltorrents.com */ 66 char* gtr_get_host_from_url( const char * url ); 64 67 65 68 gboolean gtr_is_supported_url( const char * str );
Note: See TracChangeset
for help on using the changeset viewer.