GtkTreeModelFlags ptk_file_list_get_flags ( GtkTreeModel *tree_model ) { g_return_val_if_fail ( PTK_IS_FILE_LIST( tree_model ), ( GtkTreeModelFlags ) 0 ); return ( GTK_TREE_MODEL_LIST_ONLY | GTK_TREE_MODEL_ITERS_PERSIST ); }
void ptk_file_list_get_value ( GtkTreeModel *tree_model, GtkTreeIter *iter, gint column, GValue *value ) { GList* l; PtkFileList* list = PTK_FILE_LIST(tree_model); VFSFileInfo* info; GdkPixbuf* icon; g_return_if_fail (PTK_IS_FILE_LIST (tree_model)); g_return_if_fail (iter != NULL); g_return_if_fail (column < G_N_ELEMENTS(column_types) ); g_value_init (value, column_types[column] ); l = (GList*) iter->user_data; g_return_if_fail ( l != NULL ); info = (VFSFileInfo*)iter->user_data2; switch(column) { case COL_FILE_BIG_ICON: icon = NULL; /* special file can use special icons saved as thumbnails*/ if ( info->flags == VFS_FILE_INFO_NONE && ( list->max_thumbnail > info->size /*vfs_file_info_get_size( info )*/ #ifdef HAVE_FFMPEG || ( list->max_thumbnail != 0 && vfs_file_info_is_video( info ) ) #endif ) ) icon = vfs_file_info_get_big_thumbnail( info ); if( ! icon ) icon = vfs_file_info_get_big_icon( info ); if( icon ) { g_value_set_object( value, icon ); g_object_unref( icon ); } break; case COL_FILE_SMALL_ICON: icon = NULL; /* special file can use special icons saved as thumbnails*/ if ( list->max_thumbnail > info->size /*vfs_file_info_get_size( info )*/ #ifdef HAVE_FFMPEG || ( list->max_thumbnail != 0 && vfs_file_info_is_video( info ) ) #endif ) icon = vfs_file_info_get_small_thumbnail( info ); if( !icon ) icon = vfs_file_info_get_small_icon( info ); if( icon ) { g_value_set_object( value, icon ); g_object_unref( icon ); } break; case COL_FILE_NAME: g_value_set_string( value, vfs_file_info_get_disp_name(info) ); break; case COL_FILE_SIZE: if ( S_ISDIR( info->mode ) || ( S_ISLNK( info->mode ) && 0 == strcmp( vfs_mime_type_get_type( info->mime_type ), XDG_MIME_TYPE_DIRECTORY ) ) ) g_value_set_string( value, NULL ); else g_value_set_string( value, vfs_file_info_get_disp_size(info) ); break; case COL_FILE_DESC: g_value_set_string( value, vfs_file_info_get_mime_type_desc( info ) ); break; case COL_FILE_PERM: g_value_set_string( value, vfs_file_info_get_disp_perm(info) ); break; case COL_FILE_OWNER: g_value_set_string( value, vfs_file_info_get_disp_owner(info) ); break; case COL_FILE_MTIME: g_value_set_string( value, vfs_file_info_get_disp_mtime(info) ); break; case COL_FILE_INFO: g_value_set_pointer( value, vfs_file_info_ref( info ) ); break; } }