[Bf-blender-cvs] [da7092f] asset-experiments: Restore size/date sorting.

Bastien Montagne noreply at git.blender.org
Tue Feb 24 16:24:01 CET 2015


Commit: da7092ff7d4aa538be69c27537824898a8e2ae8c
Author: Bastien Montagne
Date:   Tue Feb 24 14:14:27 2015 +0100
Branches: asset-experiments
https://developer.blender.org/rBda7092ff7d4aa538be69c27537824898a8e2ae8c

Restore size/date sorting.

Also, get rid of modes/owner crap, this is quite advanced UNIX fs info, not much to
do in our filebrowser imho, and takes time, UI space and Mem space!

===================================================================

M	source/blender/editors/space_file/file_draw.c
M	source/blender/editors/space_file/filelist.c
M	source/blender/editors/space_file/filesel.c
M	source/blender/makesdna/DNA_space_types.h

===================================================================

diff --git a/source/blender/editors/space_file/file_draw.c b/source/blender/editors/space_file/file_draw.c
index 81093ae..9b9a7b6 100644
--- a/source/blender/editors/space_file/file_draw.c
+++ b/source/blender/editors/space_file/file_draw.c
@@ -571,13 +571,14 @@ void file_draw_list(const bContext *C, ARegion *ar)
 		if (params->display == FILE_SHORTDISPLAY) {
 			sx += (int)layout->column_widths[COLUMN_NAME] + column_space;
 			if (!(file->typeflag & FILE_TYPE_DIR)) {
-				file_draw_string(sx, sy, file->entry->size, layout->column_widths[COLUMN_SIZE], layout->tile_h, align);
+				file_draw_string(sx, sy, file->entry->size_str, layout->column_widths[COLUMN_SIZE], layout->tile_h, align);
 				sx += (int)layout->column_widths[COLUMN_SIZE] + column_space;
 			}
 		}
 		else if (params->display == FILE_LONGDISPLAY) {
 			sx += (int)layout->column_widths[COLUMN_NAME] + column_space;
 
+#if 0
 #ifndef WIN32
 			/* rwx rwx rwx */
 			file_draw_string(sx, sy, file->entry->mode1, layout->column_widths[COLUMN_MODE1], layout->tile_h, align);
@@ -592,15 +593,15 @@ void file_draw_list(const bContext *C, ARegion *ar)
 			file_draw_string(sx, sy, file->entry->owner, layout->column_widths[COLUMN_OWNER], layout->tile_h, align);
 			sx += layout->column_widths[COLUMN_OWNER] + column_space;
 #endif
-
-			file_draw_string(sx, sy, file->entry->date, layout->column_widths[COLUMN_DATE], layout->tile_h, align);
+#endif
+			file_draw_string(sx, sy, file->entry->date_str, layout->column_widths[COLUMN_DATE], layout->tile_h, align);
 			sx += (int)layout->column_widths[COLUMN_DATE] + column_space;
 
-			file_draw_string(sx, sy, file->entry->time, layout->column_widths[COLUMN_TIME], layout->tile_h, align);
+			file_draw_string(sx, sy, file->entry->time_str, layout->column_widths[COLUMN_TIME], layout->tile_h, align);
 			sx += (int)layout->column_widths[COLUMN_TIME] + column_space;
 
 			if (!(file->typeflag & FILE_TYPE_DIR)) {
-				file_draw_string(sx, sy, file->entry->size, layout->column_widths[COLUMN_SIZE], layout->tile_h, align);
+				file_draw_string(sx, sy, file->entry->size_str, layout->column_widths[COLUMN_SIZE], layout->tile_h, align);
 				sx += (int)layout->column_widths[COLUMN_SIZE] + column_space;
 			}
 		}
diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c
index f7fadca..cd0565a 100644
--- a/source/blender/editors/space_file/filelist.c
+++ b/source/blender/editors/space_file/filelist.c
@@ -377,10 +377,8 @@ static int compare_date(const void *a1, const void *a2)
 		return ret;
 	}
 	
-#if 0  /* TODO: add back that stuff to FileDirEntryRevision */
-	if (entry1->entry->s.st_mtime < entry2->entry->s.st_mtime) return 1;
-	if (entry1->entry->s.st_mtime > entry2->entry->s.st_mtime) return -1;
-#endif
+	if (entry1->entry->time < entry2->entry->time) return 1;
+	if (entry1->entry->time > entry2->entry->time) return -1;
 
 	name1 = fileentry_uiname(entry1, dir1);
 	name2 = fileentry_uiname(entry2, dir2);
@@ -400,10 +398,8 @@ static int compare_size(const void *a1, const void *a2)
 		return ret;
 	}
 	
-#if 0  /* TODO: add back that stuff to FileDirEntryRevision */
-	if (entry1->entry->s.st_size < entry2->entry->s.st_size) return 1;
-	if (entry1->entry->s.st_size > entry2->entry->s.st_size) return -1;
-#endif
+	if (entry1->entry->size < entry2->entry->size) return 1;
+	if (entry1->entry->size > entry2->entry->size) return -1;
 
 	name1 = fileentry_uiname(entry1, dir1);
 	name2 = fileentry_uiname(entry2, dir2);
@@ -1585,14 +1581,16 @@ static int filelist_readjob_list_dir(
 			if (S_ISDIR(entries[i].s.st_mode)) {
 				entry->typeflag |= FILE_TYPE_DIR;
 			}
+			rev->size = (uint64_t)entries[i].s.st_size;
+			rev->time = (int64_t)entries[i].s.st_mtime;
 			/* TODO rather use real values from direntry.s!!! */
-			memcpy(rev->size, entries[i].size, sizeof(rev->size));
-			memcpy(rev->mode1, entries[i].mode1, sizeof(rev->mode1));
-			memcpy(rev->mode2, entries[i].mode2, sizeof(rev->mode2));
-			memcpy(rev->mode3, entries[i].mode3, sizeof(rev->mode3));
-			memcpy(rev->owner, entries[i].owner, sizeof(rev->owner));
-			memcpy(rev->time, entries[i].time, sizeof(rev->time));
-			memcpy(rev->date, entries[i].date, sizeof(rev->date));
+			memcpy(rev->size_str, entries[i].size, sizeof(rev->size_str));
+//			memcpy(rev->mode1, entries[i].mode1, sizeof(rev->mode1));
+//			memcpy(rev->mode2, entries[i].mode2, sizeof(rev->mode2));
+//			memcpy(rev->mode3, entries[i].mode3, sizeof(rev->mode3));
+//			memcpy(rev->owner, entries[i].owner, sizeof(rev->owner));
+			memcpy(rev->time_str, entries[i].time, sizeof(rev->time_str));
+			memcpy(rev->date_str, entries[i].date, sizeof(rev->date_str));
 
 			/* Set file type. */
 			/* If we are considering .blend files as libs, promote them to directory status! */
diff --git a/source/blender/editors/space_file/filesel.c b/source/blender/editors/space_file/filesel.c
index c74da64..bbbc440 100644
--- a/source/blender/editors/space_file/filesel.c
+++ b/source/blender/editors/space_file/filesel.c
@@ -495,12 +495,13 @@ static void column_widths(struct FileList *files, struct FileLayout *layout)
 			float len;
 			len = file_string_width(file->entry->relpath);
 			if (len > layout->column_widths[COLUMN_NAME]) layout->column_widths[COLUMN_NAME] = len;
-			len = file_string_width(file->entry->date);
+			len = file_string_width(file->entry->date_str);
 			if (len > layout->column_widths[COLUMN_DATE]) layout->column_widths[COLUMN_DATE] = len;
-			len = file_string_width(file->entry->time);
+			len = file_string_width(file->entry->time_str);
 			if (len > layout->column_widths[COLUMN_TIME]) layout->column_widths[COLUMN_TIME] = len;
-			len = file_string_width(file->entry->size);
+			len = file_string_width(file->entry->size_str);
 			if (len > layout->column_widths[COLUMN_SIZE]) layout->column_widths[COLUMN_SIZE] = len;
+#if 0
 			len = file_string_width(file->entry->mode1);
 			if (len > layout->column_widths[COLUMN_MODE1]) layout->column_widths[COLUMN_MODE1] = len;
 			len = file_string_width(file->entry->mode2);
@@ -509,6 +510,7 @@ static void column_widths(struct FileList *files, struct FileLayout *layout)
 			if (len > layout->column_widths[COLUMN_MODE3]) layout->column_widths[COLUMN_MODE3] = len;
 			len = file_string_width(file->entry->owner);
 			if (len > layout->column_widths[COLUMN_OWNER]) layout->column_widths[COLUMN_OWNER] = len;
+#endif
 		}
 	}
 }
diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h
index fbb4bc5..74e55b8 100644
--- a/source/blender/makesdna/DNA_space_types.h
+++ b/source/blender/makesdna/DNA_space_types.h
@@ -758,16 +758,18 @@ typedef struct FileDirEntryRevision {
 	char *relpath;
 	char *abspath;  /* XXX Get rid of this! */
 
+	uint64_t size;
+	int64_t time;
 	/* Those are direct copy from direntry. We may rework that later, but really not top priority. */
 	/* TODO: switch back to real values, no sense to keep this as string when it often not used at all! */
-	char    size[16];
-	char    mode1[4];
-	char    mode2[4];
-	char    mode3[4];
-	char    owner[16];
-	char    time[8];
-	char    date[16];
-	char    pad[4];
+	char    size_str[16];
+//	char    mode1[4];
+//	char    mode2[4];
+//	char    mode3[4];
+//	char    owner[16];
+	char    time_str[8];
+	char    date_str[16];
+//	char    pad[4];
 
 	void *poin;
 	struct ImBuf *image;




More information about the Bf-blender-cvs mailing list