libede: FileSystemBox: added filesOnly option
authorRejean Loyer <rejean.loyer@gmail.com>
Sat, 10 Sep 2011 03:35:56 +0000 (23:35 -0400)
committerRejean Loyer <rejean.loyer@gmail.com>
Sat, 10 Sep 2011 03:35:56 +0000 (23:35 -0400)
libede/src/FileSystemBox.ec
tests/libede/fileSystemBoxTestApp/FileSystemBoxTestApp.ec

index b73a3d3..69d71eb 100644 (file)
@@ -457,7 +457,7 @@ static FileSystemNode MakeFileSystemNode(const FileStats stats, const char * fil
 
 class FileSystemBoxBits
 {
-   bool foldersOnly:1, details:1, treeBranches:1, previewPictures:1;
+   bool foldersOnly:1, filesOnly:1, details:1, treeBranches:1, previewPictures:1;
    //bool header:1, freeSelect:1, fullRowSelect:1, multiSelect:1, autoScroll:1, alwaysHL : 1, moveRows:1, resizable:1;
    //bool moveFields:1, clearHeader:1, alwaysEdit:1, collapse:1, treeBranch:1, rootCollapse:1, heightSet:1;
    //bool sortable:1, noDragging:1, fillLastField:1, expandOnAdd:1;
@@ -500,7 +500,8 @@ public:
       //isset { return path && path[0]; }
    }
 
-   property bool foldersOnly { set { bits.foldersOnly = value; } get { return bits.foldersOnly; } };
+   property bool foldersOnly { set { bits.foldersOnly = value; bits.filesOnly = !value; } get { return bits.foldersOnly; } };
+   property bool filesOnly { set { bits.filesOnly = value; bits.foldersOnly = !value; } get { return bits.filesOnly; } };
    property bool previewPictures { set { bits.previewPictures = value; } get { return bits.previewPictures; } };
    property char * extensions { set { delete extensions; if(value && value[0]) extensions = CopyString(value); } get { return extensions; } }
    property bool details { set { bits.details = value; } get { return bits.details; } };
@@ -795,7 +796,9 @@ private:
       list.Clear();
       while(listing.Find())
       {
-         if(!bits.foldersOnly || listing.stats.attribs.isDirectory)
+         if((!bits.foldersOnly && !bits.filesOnly) ||
+            (bits.foldersOnly && listing.stats.attribs.isDirectory) ||
+            (bits.filesOnly && !listing.stats.attribs.isDirectory/*listing.stats.attribs.isFile*/)) // TOCHECK: isFile broken?
          {
             FileSystemNode node = MakeFileSystemNode(listing.stats, listing.name, listing.path, bits.previewPictures, displaySystem);
             DataRow row = list.AddRow();
@@ -889,7 +892,9 @@ private:
 
             while(listing.Find())
             {
-               if(!bits.foldersOnly || listing.stats.attribs.isDirectory)
+               if((!bits.foldersOnly && !bits.filesOnly) ||
+                  (bits.foldersOnly && listing.stats.attribs.isDirectory) ||
+                  (bits.filesOnly && !listing.stats.attribs.isDirectory/*listing.stats.attribs.isFile*/)) // TOCHECK: isFile broken?
                {
                   FileSystemNode child = MakeFileSystemNode(listing.stats, listing.name, listing.path, bits.previewPictures, displaySystem);
                   AddTreeNode(child, true, false, node);
@@ -928,7 +933,9 @@ private:
          FileListing listing { path, extensions = extensions };
          while(listing.Find())
          {
-            if(!bits.foldersOnly || listing.stats.attribs.isDirectory)
+            if((!bits.foldersOnly && !bits.filesOnly) ||
+               (bits.foldersOnly && listing.stats.attribs.isDirectory) ||
+               (bits.filesOnly && !listing.stats.attribs.isDirectory/*listing.stats.attribs.isFile*/)) // TOCHECK: isFile broken?
             {
                FileSystemNode child = MakeFileSystemNode(listing.stats, listing.name, listing.path, bits.previewPictures, displaySystem);
                AddTreeNode(child, true, false, parent);
index 2f6d75a..3ef0a97 100644 (file)
@@ -14,6 +14,7 @@ class FileSystemBoxTestWindow : Window
    TabControl tabControl { this, background = activeBorder, anchor = { left = 4, top = 4, right = 4, bottom = 4 } };
 
    FileListTab fileListTab { tabControl };
+   JustFilesTab justFilesTab { tabControl };
    FolderListTab folderListTab { tabControl };
    FileTreeTab fileTreeTab { tabControl };
    FolderTreeTab folderTreeTab { tabControl };
@@ -42,6 +43,18 @@ class FileListTab : TestTab
    };
 }
 
+class JustFilesTab : TestTab
+{
+   text = "JustFiles";
+
+   FileSystemBox box
+   {
+      this;
+      filesOnly = true;
+      anchor = { left = 4, top = 4, right = 4, bottom = 4 };
+   };
+}
+
 class FolderListTab : TestTab
 {
    text = "FolderList";