Changeset 7996 for trunk/gtk/file-list.c


Ignore:
Timestamp:
Mar 2, 2009, 11:31:01 PM (13 years ago)
Author:
charles
Message:

(gtk trunk) #628: Show thumbnails next to torrents

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gtk/file-list.c

    r7464 r7996  
    3535#include "file-list.h"
    3636#include "hig.h"
     37#include "icons.h"
    3738
    3839enum
     
    5051enum
    5152{
    52     FC_STOCK,
     53    FC_ICON,
    5354    FC_LABEL,
    5455    FC_PROG,
     
    104105
    105106static void
    106 parsepath( const tr_torrent * tor,
    107            GtkTreeStore *     store,
    108            GtkTreeIter *      ret,
    109            const char *       path,
    110            tr_file_index_t    index,
    111            uint64_t           size )
     107parsepath( GtkWidget         * w,
     108           const tr_torrent  * tor,
     109           GtkTreeStore      * store,
     110           GtkTreeIter       * ret,
     111           const char        * path,
     112           tr_file_index_t     index,
     113           uint64_t            size )
    112114{
    113115    GtkTreeModel * model;
    114     GtkTreeIter *  parent, start, iter;
    115     char *         file, * lower, * mykey;
    116     const char *   stock;
     116    GtkTreeIter  * parent, start, iter;
     117    char         * file, * lower, * mykey;
    117118    int            priority = 0;
    118119    gboolean       enabled = TRUE;
    119120    gboolean       is_file;
    120 
     121    GdkPixbuf    * icon;
     122    const char   * mime_type;
     123   
    121124    model  = GTK_TREE_MODEL( store );
    122125    parent = NULL;
     
    125128    {
    126129        char * dir = g_path_get_dirname( path );
    127         parsepath( tor, store, &start, dir, index, size );
     130        parsepath( w, tor, store, &start, dir, index, size );
    128131        parent = &start;
    129132        g_free( dir );
     
    146149    if( ( is_file = !ret ) )
    147150    {
    148         stock = GTK_STOCK_FILE;
    149151        priority = tr_torrentGetFilePriority( tor, index );
    150152        enabled  = tr_torrentGetFileDL( tor, index );
     153        mime_type = get_mime_type_from_filename( file );
    151154    }
    152155    else
    153156    {
    154         stock = GTK_STOCK_DIRECTORY;
    155157        size  = 0;
    156     }
     158        mime_type = DIRECTORY_MIME_TYPE;
     159    }
     160
     161    icon = get_mime_type_icon( mime_type, GTK_ICON_SIZE_MENU, w );
    157162
    158163#if 0
    159164    gtk_tree_store_set( store, &iter, FC_INDEX, index,
    160                         FC_LABEL, file,
    161                         FC_KEY, mykey,
    162                         FC_STOCK, stock,
    163                         FC_PRIORITY, priority,
    164                         FC_ENABLED, enabled,
    165                         FC_IS_FILE, is_file,
    166                         FC_SIZE, size,
    167                         FC_HAVE, 0,
    168                         -1 );
     165                                      FC_LABEL, file,
     166                                      FC_KEY, mykey,
     167                                      FC_ICON, icon,
     168                                      FC_PRIORITY, priority,
     169                                      FC_ENABLED, enabled,
     170                                      FC_IS_FILE, is_file,
     171                                      FC_SIZE, size,
     172                                      FC_HAVE, 0,
     173                                      -1 );
    169174#else
    170175    gtk_tree_store_set( store, &iter, FC_INDEX, index, -1 );
    171176    gtk_tree_store_set( store, &iter, FC_LABEL, file, -1 );
    172177    gtk_tree_store_set( store, &iter, FC_KEY, mykey, -1 );
    173     gtk_tree_store_set( store, &iter, FC_STOCK, stock, -1 );
     178    gtk_tree_store_set( store, &iter, FC_ICON, icon, -1 );
    174179    gtk_tree_store_set( store, &iter, FC_PRIORITY, priority, -1 );
    175180    gtk_tree_store_set( store, &iter, FC_ENABLED, enabled, -1 );
     
    178183    gtk_tree_store_set( store, &iter, FC_HAVE, 0, -1 );
    179184#endif
     185
     186    if( icon != NULL )
     187        g_object_unref( icon );
    180188
    181189done:
     
    448456    /* instantiate the model */
    449457    store = gtk_tree_store_new ( N_FILE_COLS,
    450                                  G_TYPE_STRING,    /* stock */
     458                                 GDK_TYPE_PIXBUF,  /* icon */
    451459                                 G_TYPE_STRING,    /* label */
    452460                                 G_TYPE_INT,       /* prog [0..100] */
     
    479487                g_path_is_absolute( path ) ? g_path_skip_root( path ) :
    480488                path;
    481             parsepath( tor, store, NULL, base, i, inf->files[i].length );
     489            parsepath( w, tor, store, NULL, base, i, inf->files[i].length );
    482490        }
    483491
     
    795803    rend = gtk_cell_renderer_pixbuf_new( );
    796804    gtk_tree_view_column_pack_start( col, rend, FALSE );
    797     gtk_tree_view_column_add_attribute( col, rend, "stock-id", FC_STOCK );
     805    gtk_tree_view_column_add_attribute( col, rend, "pixbuf", FC_ICON );
    798806    /* add text renderer */
    799807    rend = gtk_cell_renderer_text_new( );
Note: See TracChangeset for help on using the changeset viewer.