瀏覽代碼

[filebrowser] Added stat bar to file gallery

Clément Espeute 2 月之前
父節點
當前提交
188266a93b
共有 3 個文件被更改,包括 37 次插入4 次删除
  1. 5 0
      bin/style.css
  2. 6 0
      bin/style.less
  3. 26 4
      hide/view/FileBrowser.hx

+ 5 - 0
bin/style.css

@@ -4967,6 +4967,11 @@ file-browser .right {
   display: flex;
   flex-direction: column;
 }
+file-browser .right .footer {
+  height: 12px;
+  font-size: 11px;
+  background-color: #272727;
+}
 fancy-flex-fill {
   flex: 1 1;
 }

+ 6 - 0
bin/style.less

@@ -5938,6 +5938,12 @@ file-browser {
 		flex: 1 1;
 		display: flex;
 		flex-direction: column;
+
+		.footer {
+			height: 12px;
+			font-size: 11px;
+			background-color: #272727;
+		}
 	}
 }
 

+ 26 - 4
hide/view/FileBrowser.hx

@@ -136,6 +136,9 @@ class FileBrowser extends hide.ui.View<FileBrowserState> {
 	var delaySelectGallery: String = null;
 	var delaySelectFileTree: String = null;
 	var delayedSelectItem : FileEntry = null;
+	var stats: js.html.Element;
+	var statFileCount: Int = 0;
+	var statFileFiltered: Int = 0;
 
 	function set_filterEnabled(v : Bool) {
 		var anySet = false;
@@ -184,6 +187,8 @@ class FileBrowser extends hide.ui.View<FileBrowserState> {
 		hide.tools.FileManager.inst.clearRenderQueue();
 		currentSearch = [];
 		currentSearchRanges = [];
+		statFileCount = 0;
+		statFileFiltered = 0;
 
 		var validFolder = currentFolder;
 		while(validFolder != null && !sys.FileSystem.exists(validFolder.getPath())) {
@@ -200,6 +205,8 @@ class FileBrowser extends hide.ui.View<FileBrowserState> {
 
 		if (searchString.length == 0 && !collapseSubfolders && !filterEnabled) {
 			currentSearch = currentFolder.children;
+			currentSearch = currentSearch.filter(filterFiles);
+			statFileFiltered = currentSearch.length;
 		} else {
 			var exts = [];
 			if (filterEnabled) {
@@ -225,6 +232,10 @@ class FileBrowser extends hide.ui.View<FileBrowserState> {
 						rec(file.children);
 					}
 					else {
+						if (!filterFiles(file))
+							continue;
+
+						statFileFiltered ++;
 						if (filterEnabled && file.kind == File) {
 							var ext = file.name.split(".").pop().toLowerCase();
 
@@ -258,13 +269,14 @@ class FileBrowser extends hide.ui.View<FileBrowserState> {
 				}
 			}
 
-
 			rec(currentFolder.children);
-
-			currentSearch.sort(FileEntry.compareFile);
 		}
 
-		currentSearch = currentSearch.filter(filterFiles);
+		currentSearch.sort(FileEntry.compareFile);
+
+		statFileCount = currentSearch.length;
+		statFileFiltered -= statFileCount;
+		refreshStats();
 
 		for (i => _ in currentSearch) {
 			var child = currentSearch[currentSearch.length - i - 1];
@@ -282,6 +294,10 @@ class FileBrowser extends hide.ui.View<FileBrowserState> {
 		}
 	}
 
+	function refreshStats() {
+		stats.innerText = 'Showing ${hide.comp.SceneEditor.splitCentaines(statFileCount)} files (${hide.comp.SceneEditor.splitCentaines(statFileFiltered)} filtered)';
+	}
+
 	function onFileChange(file: FileEntry) {
 		if (delaySelectFileTree != null) {
 			var item = FileManager.inst.getFileEntry(delaySelectFileTree);
@@ -354,10 +370,16 @@ class FileBrowser extends hide.ui.View<FileBrowserState> {
 						</fancy-button>
 					</fancy-toolbar>
 					<fancy-gallery></fancy-gallery>
+					<fancy-toolbar class="footer">
+					<fancy-flex-fill></fancy-flex-fill>
+					<span class="stats"></span>
+					<fancy-toolbar>
 				</div>
 			</file-browser>
 		').appendTo(element);
 
+		stats = browserLayout.find(".stats").get(0);
+
 		resize = new hide.comp.ResizablePanel(Horizontal, element.find(".left"), After);
 
 		breadcrumbs = browserLayout.find("fancy-breadcrumbs");