Пример #1
0
void ptk_file_list_show_thumbnails( PtkFileList* list, gboolean is_big,
                                    int max_file_size )
{
    GList* l;
    VFSFileInfo* file;
    int old_max_thumbnail;

    old_max_thumbnail = list->max_thumbnail;
    list->max_thumbnail = max_file_size;
    list->big_thumbnail = is_big;
    /* FIXME: This is buggy!!! Further testing might be needed.
    */
    if( 0 == max_file_size )
    {
        if( old_max_thumbnail > 0 ) /* cancel thumbnails */
        {
            vfs_thumbnail_loader_cancel_all_requests( list->dir, list->big_thumbnail );
            g_signal_handlers_disconnect_by_func( list->dir, on_thumbnail_loaded, list );

            for( l = list->files; l; l = l->next )
            {
                file = (VFSFileInfo*)l->data;
                if( vfs_file_info_is_image( file )
                    && vfs_file_info_is_thumbnail_loaded( file, is_big ) )
                {
                    /* update the model */
                    ptk_file_list_file_changed( list->dir, file, list );
                }
            }
        }
        return;
    }

    g_signal_connect( list->dir, "thumbnail-loaded",
                                    G_CALLBACK(on_thumbnail_loaded), list );

    for( l = list->files; l; l = l->next )
    {
        file = (VFSFileInfo*)l->data;
        if( vfs_file_info_is_image( file )
            && vfs_file_info_get_size( file ) < list->max_thumbnail )
        {
            if( vfs_file_info_is_thumbnail_loaded( file, is_big ) )
                ptk_file_list_file_changed( list->dir, file, list );
            else
            {
                vfs_thumbnail_loader_request( list->dir, file, is_big );
                /* g_debug( "REQUEST: %s", file->name ); */
            }
        }
    }
}
Пример #2
0
static void _ptk_file_list_file_created( VFSDir* dir, VFSFileInfo* file,
                                        PtkFileList* list )
{
    ptk_file_list_file_created( dir, file, list );

    /* check if reloading of thumbnail is needed. */
    if( vfs_file_info_is_image( file )
        && vfs_file_info_get_size( file ) < list->max_thumbnail )
    {
        if( ! vfs_file_info_is_thumbnail_loaded( file, list->big_thumbnail ) )
            vfs_thumbnail_loader_request( list->dir, file, list->big_thumbnail );
    }
}
Пример #3
0
static void _ptk_file_list_file_created( VFSDir* dir, VFSFileInfo* file,
                                        PtkFileList* list )
{
    ptk_file_list_file_created( dir, file, list );

    /* check if reloading of thumbnail is needed. */
    if ( list->max_thumbnail != 0 && (
#ifdef HAVE_FFMPEG
         vfs_file_info_is_video( file ) ||
#endif
         ( file->size /*vfs_file_info_get_size( file )*/ < list->max_thumbnail
                                    && vfs_file_info_is_image( file ) ) ) )
    {
        if( ! vfs_file_info_is_thumbnail_loaded( file, list->big_thumbnail ) )
            vfs_thumbnail_loader_request( list->dir, file, list->big_thumbnail );
    }
}
Пример #4
0
static void _ptk_file_list_file_changed( VFSDir* dir, VFSFileInfo* file,
                                        PtkFileList* list )
{
    if ( !file || !dir || dir->cancel )
        return;

    ptk_file_list_file_changed( dir, file, list );

    /* check if reloading of thumbnail is needed.
     * See also desktop-window.c:on_file_changed() */
    if ( list->max_thumbnail != 0 && (
#ifdef HAVE_FFMPEG
         ( vfs_file_info_is_video( file ) &&
           time( NULL ) - *vfs_file_info_get_mtime( file ) > 5 ) ||
#endif
         ( file->size /*vfs_file_info_get_size( file )*/ < list->max_thumbnail
                                    && vfs_file_info_is_image( file ) ) ) )
    {
        if( ! vfs_file_info_is_thumbnail_loaded( file, list->big_thumbnail ) )
            vfs_thumbnail_loader_request( list->dir, file,
                                          list->big_thumbnail );
    }
}
Пример #5
0
void ptk_file_list_show_thumbnails( PtkFileList* list, gboolean is_big,
                                    int max_file_size )
{
    GList* l;
    VFSFileInfo* file;
    int old_max_thumbnail;

    if ( !list )
        return;
    
    old_max_thumbnail = list->max_thumbnail;
    list->max_thumbnail = max_file_size;
    list->big_thumbnail = is_big;
    /* FIXME: This is buggy!!! Further testing might be needed.
    */
    if( 0 == max_file_size )
    {
        if( old_max_thumbnail > 0 ) /* cancel thumbnails */
        {
            vfs_thumbnail_loader_cancel_all_requests( list->dir, list->big_thumbnail );
            g_signal_handlers_disconnect_by_func( list->dir, on_thumbnail_loaded, list );

            for( l = list->files; l; l = l->next )
            {
                file = (VFSFileInfo*)l->data;
                if ( ( vfs_file_info_is_image( file )
#ifdef HAVE_FFMPEG
                       || vfs_file_info_is_video( file )
#endif
                     ) && vfs_file_info_is_thumbnail_loaded( file, is_big ) )
                {
                    /* update the model */
                    ptk_file_list_file_changed( list->dir, file, list );

                }
            }

            /* Thumbnails are being disabled so ensure the large thumbnails are
             * freed - with up to 256x256 images this is a lot of memory */
            vfs_dir_unload_thumbnails(list->dir, is_big);
        }
        return;
    }
    g_signal_connect( list->dir, "thumbnail-loaded",
                                    G_CALLBACK(on_thumbnail_loaded), list );

    for( l = list->files; l; l = l->next )
    {
        file = (VFSFileInfo*)l->data;
        if ( list->max_thumbnail != 0 && (
#ifdef HAVE_FFMPEG
             vfs_file_info_is_video( file ) ||
#endif
             ( file->size /*vfs_file_info_get_size( file )*/ < list->max_thumbnail
                                        && vfs_file_info_is_image( file ) ) ) )
        {
            if( vfs_file_info_is_thumbnail_loaded( file, is_big ) )
                ptk_file_list_file_changed( list->dir, file, list );
            else
            {
                vfs_thumbnail_loader_request( list->dir, file, is_big );
                /* g_debug( "REQUEST: %s", file->name ); */
            }
        }
    }
}