Commit: b239c249acd8d8c45709f522748d37b36b75f578
Author: Bastien Montagne
Date:   Wed Apr 15 17:43:05 2015 +0200
Branches: asset-experiments
https://developer.blender.org/rBb239c249acd8d8c45709f522748d37b36b75f578

FileBrowser: only generate size/date/time strings when needed!

Also, cleanup remaining cruft from modes/owner stuff.

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

M       source/blender/blenlib/BLI_fileops.h
M       source/blender/blenlib/intern/BLI_filelist.c
M       source/blender/editors/include/ED_fileselect.h
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/blenlib/BLI_fileops.h 
b/source/blender/blenlib/BLI_fileops.h
index fb9d445..0a043ea 100644
--- a/source/blender/blenlib/BLI_fileops.h
+++ b/source/blender/blenlib/BLI_fileops.h
@@ -97,10 +97,10 @@ void BLI_filelist_duplicate(struct direntry 
**dest_filelist, struct direntry *sr
 void BLI_filelist_entry_free(struct direntry *entry);
 void BLI_filelist_free(struct direntry *filelist, unsigned int nrentries);
 
-void BLI_filelist_entry_size_to_string(struct stat *st, char r_size[]);
+void BLI_filelist_entry_size_to_string(struct stat *st, const uint64_t sz, 
char r_size[]);
 void BLI_filelist_entry_mode_to_string(struct stat *st, char r_mode1[], char 
r_mode2[], char r_mode3[]);
 void BLI_filelist_entry_owner_to_string(struct stat *st, char r_owner[]);
-void BLI_filelist_entry_datetime_to_string(struct stat *st, char r_time[], 
char r_date[]);
+void BLI_filelist_entry_datetime_to_string(struct stat *st, const int64_t ts, 
char r_time[], char r_date[]);
 
 /* Files */
 
diff --git a/source/blender/blenlib/intern/BLI_filelist.c 
b/source/blender/blenlib/intern/BLI_filelist.c
index a450fee..d5f1e96 100644
--- a/source/blender/blenlib/intern/BLI_filelist.c
+++ b/source/blender/blenlib/intern/BLI_filelist.c
@@ -239,7 +239,7 @@ unsigned int BLI_filelist_dir_contents(const char *dirname, 
 struct direntry **f
  * Convert given entry's size into human-readable strings.
  *
  */
-void BLI_filelist_entry_size_to_string(struct stat *st, char 
r_size[FILELIST_DIRENTRY_SIZE_LEN])
+void BLI_filelist_entry_size_to_string(struct stat *st, const uint64_t sz, 
char r_size[FILELIST_DIRENTRY_SIZE_LEN])
 {
        double size;
        const char *fmt;
@@ -249,7 +249,7 @@ void BLI_filelist_entry_size_to_string(struct stat *st, 
char r_size[FILELIST_DIR
         * will buy us some time until files get bigger than 4GB or until
         * everyone starts using __USE_FILE_OFFSET64 or equivalent.
         */
-       size = (double)st->st_size;
+       size = (double)(st ? st->st_size : sz);
 
        if (size > 1024.0 * 1024.0 * 1024.0) {
                size /= (1024.0 * 1024.0 * 1024.0);
@@ -331,9 +331,9 @@ void BLI_filelist_entry_owner_to_string(struct stat *st, 
char r_owner[FILELIST_D
  * Convert given entry's time into human-readable strings.
  */
 void BLI_filelist_entry_datetime_to_string(
-        struct stat *st, char r_time[FILELIST_DIRENTRY_TIME_LEN], char 
r_date[FILELIST_DIRENTRY_DATE_LEN])
+        struct stat *st, const int64_t ts, char 
r_time[FILELIST_DIRENTRY_TIME_LEN], char r_date[FILELIST_DIRENTRY_DATE_LEN])
 {
-       const struct tm *tm = localtime(&st->st_mtime);
+       const struct tm *tm = localtime(st ? &st->st_mtime : &ts);
        const time_t zero = 0;
 
        /* Prevent impossible dates in windows. */
diff --git a/source/blender/editors/include/ED_fileselect.h 
b/source/blender/editors/include/ED_fileselect.h
index b81ea55..bfc78fc 100644
--- a/source/blender/editors/include/ED_fileselect.h
+++ b/source/blender/editors/include/ED_fileselect.h
@@ -40,17 +40,13 @@ struct wmWindowManager;
 #define FILE_LAYOUT_HOR 1
 #define FILE_LAYOUT_VER 2
 
-#define MAX_FILE_COLUMN 8
+#define MAX_FILE_COLUMN 4
 
 typedef enum FileListColumns {
        COLUMN_NAME = 0,
        COLUMN_DATE,
        COLUMN_TIME,
        COLUMN_SIZE,
-       COLUMN_MODE1,
-       COLUMN_MODE2,
-       COLUMN_MODE3,
-       COLUMN_OWNER
 } FileListColumns;
 
 typedef struct FileLayout {
diff --git a/source/blender/editors/space_file/file_draw.c 
b/source/blender/editors/space_file/file_draw.c
index bf955cc..3221d55 100644
--- a/source/blender/editors/space_file/file_draw.c
+++ b/source/blender/editors/space_file/file_draw.c
@@ -570,9 +570,7 @@ void file_draw_list(const bContext *C, ARegion *ar)
                                width = layout->tile_w - 
(ICON_DEFAULT_WIDTH_SCALE + 0.2f * UI_UNIT_X);
                        }
                        else if (params->display == FILE_LONGDISPLAY) {
-                               width = layout->column_widths[COLUMN_NAME]  + 
layout->column_widths[COLUMN_MODE1] +
-                                       layout->column_widths[COLUMN_MODE2] + 
layout->column_widths[COLUMN_MODE3] +
-                                       (column_space * 3.5f);
+                               width = layout->column_widths[COLUMN_NAME] + 
(column_space * 3.5f);
                        }
                        else {
                                BLI_assert(params->display == FILE_IMGDISPLAY);
@@ -604,29 +602,18 @@ void file_draw_list(const bContext *C, ARegion *ar)
                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);
-                       sx += layout->column_widths[COLUMN_MODE1] + 
column_space;
-
-                       file_draw_string(sx, sy, file->entry->mode2, 
layout->column_widths[COLUMN_MODE2], layout->tile_h, align);
-                       sx += layout->column_widths[COLUMN_MODE2] + 
column_space;
-
-                       file_draw_string(sx, sy, file->entry->mode3, 
layout->column_widths[COLUMN_MODE3], layout->tile_h, align);
-                       sx += layout->column_widths[COLUMN_MODE3] + 
column_space;
-
-                       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
-#endif
+                       if (file->entry->date_str[0] == '\0') {
+                               BLI_filelist_entry_datetime_to_string(NULL, 
file->entry->time, file->entry->time_str, file->entry->date_str);
+                       }
                        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_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)) {
+                               if (file->entry->size_str[0] == '\0') {
+                                       BLI_filelist_entry_size_to_string(NULL, 
file->entry->size, file->entry->size_str);
+                               }
                                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 cd02567..71f4d37 100644
--- a/source/blender/editors/space_file/filelist.c
+++ b/source/blender/editors/space_file/filelist.c
@@ -1388,10 +1388,8 @@ static FileDirEntry *filelist_file_create_entry(FileList 
*filelist, const int in
        rev = MEM_callocN(sizeof(*rev), __func__);
 
        rev->size = (uint64_t)entry->st.st_size;
-       BLI_filelist_entry_size_to_string(&entry->st, rev->size_str);
 
        rev->time = (int64_t)entry->st.st_mtime;
-       BLI_filelist_entry_datetime_to_string(&entry->st, rev->time_str, 
rev->date_str);
 
        ret->entry = rev;
        ret->relpath = BLI_strdup(entry->relpath);
diff --git a/source/blender/editors/space_file/filesel.c 
b/source/blender/editors/space_file/filesel.c
index 83d26c0..7299d1a 100644
--- a/source/blender/editors/space_file/filesel.c
+++ b/source/blender/editors/space_file/filesel.c
@@ -480,7 +480,7 @@ float file_font_pointsize(void)
 #endif
 }
 
-static void column_widths(struct FileList *files, struct FileLayout *layout)
+static void column_widths(struct FileList *UNUSED(files), struct FileLayout 
*layout)
 {
        int i;
 
@@ -488,43 +488,12 @@ static void column_widths(struct FileList *files, struct 
FileLayout *layout)
                layout->column_widths[i] = 0;
        }
 
-#if 0
-       {
-       int numfiles = filelist_numfiles(files);
-       for (i = 0; (i < numfiles); ++i) {
-               FileDirEntry *file = filelist_file(files, i);
-               if (file) {
-                       float len;
-                       len = file_string_width(file->relpath);
-                       if (len > layout->column_widths[COLUMN_NAME]) 
layout->column_widths[COLUMN_NAME] = len;
-                       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_str);
-                       if (len > layout->column_widths[COLUMN_TIME]) 
layout->column_widths[COLUMN_TIME] = len;
-                       len = file_string_width(file->entry->size_str);
-                       if (len > layout->column_widths[COLUMN_SIZE]) 
layout->column_widths[COLUMN_SIZE] = len;
-                       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);
-                       if (len > layout->column_widths[COLUMN_MODE2]) 
layout->column_widths[COLUMN_MODE2] = len;
-                       len = file_string_width(file->entry->mode3);
-                       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;
-               }
-       }
-       }
-#else
-       UNUSED_VARS(files);
-       {
-               /* Biggest possible reasonable values...
-                * TODO: better ways to get those! */
-               layout->column_widths[COLUMN_NAME] = 
file_string_width("WMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWM");
-               layout->column_widths[COLUMN_DATE] = 
file_string_width("23-Mar-89");
-               layout->column_widths[COLUMN_TIME] = file_string_width("23:59");
-               layout->column_widths[COLUMN_SIZE] = file_string_width("987.6 
MiB");
-       }
-#endif
+       /* Biggest possible reasonable values...
+        * TODO: better ways to get those! */
+       layout->column_widths[COLUMN_NAME] = 
file_string_width("WMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWM");
+       layout->column_widths[COLUMN_DATE] = file_string_width("23-Dec-89");
+       layout->column_widths[COLUMN_TIME] = file_string_width("23:59");
+       layout->column_widths[COLUMN_SIZE] = file_string_width("987.64 MiB");
 }
 
 void ED_fileselect_init_layout(struct SpaceFile *sfile, ARegion *ar)
@@ -593,12 +562,6 @@ void ED_fileselect_init_layout(struct SpaceFile *sfile, 
ARegion *ar)
                else {
                        maxlen = ICON_DEFAULT_WIDTH_SCALE + column_icon_space +
                                 (int)layout->column_widths[COLUMN_NAME] + 
column_space +
-#ifndef WIN32
-                                (int)layout->column_widths[COLUMN_MODE1] + 
column_space +
-                                (int)layout->column_widths[COLUMN_MODE2] + 
column_space +
-                                (int)layout->column_widths[COLUMN_MODE3] + 
column_space +
-                                (int)layout->column_widths[COLUMN_OWNER] + 
column_space +
-#endif
                                 (int)layout->column_widths[COLUMN_DATE] + 
column_space +
                                 (int)layout->column_widths[COLUMN_TIME] + 
column_space +
                                 (int)layout->column_widths[COLUMN_SIZE] + 
column_space;
diff --git a/source/ble

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to