Explorer; libede: Fixes to compile, warnings; fixed single window coming up when...
[ede] / libede / src / FileSystemSearch.ec
index 53b6da8..d198f1b 100644 (file)
@@ -12,7 +12,7 @@ struct SearchStackFrame
    int tag;
    char path[MAX_LOCATION];
    FileListing listing;
-   
+
    bool branched;
    //DataRow result;
    //DataRow browse;
@@ -47,7 +47,7 @@ public:
       terminate = false;
    }
 
-   virtual bool Window::NotifyUpdateSearchLocation(FileSystemSearch search, char * location);
+   virtual bool Window::NotifyUpdateSearchLocation(FileSystemSearch search, const char * location);
    virtual bool Window::NotifySearchSortResults(FileSystemSearch search);
    virtual bool Window::NotifySearchSortBrowser(FileSystemSearch search);
    virtual bool Window::NotifySearchTerminated(FileSystemSearch search);
@@ -61,7 +61,7 @@ public:
 
 
 
-   bool SearchFileContent(String path)
+   bool SearchFileContent(const String path)
    {
       bool match = false;
       File file = FileOpen(path, read);
@@ -96,8 +96,8 @@ public:
                      find = SearchString(buffer, start, contentSearch, optionContentMatchCase, optionContentMatchWord);
 
                      // todo add a maximum line length possibility as param
-                     for(bstart = start; 
-                           bstart < readCount && newLine && (!find || newLine < find); 
+                     for(bstart = start;
+                           bstart < readCount && newLine && (!find || newLine < find);
                               bstart += (newLine - &buffer[bstart]) / sizeof(char))
                      {
                         newLine = strstr(&buffer[bstart], "\n");
@@ -131,14 +131,14 @@ public:
                      find = SearchString(buffer, start, contentSearch, optionContentMatchCase, optionContentMatchWord);
                file.Seek(seekBack, current);
             }
-            match = (bool)find;
+            match = find != null;
          }
          delete file;
       }
       return match;
    }
-   
-   // I wonder if this is optimized at the c level to be compiled inline 
+
+   // I wonder if this is optimized at the c level to be compiled inline
    // and to use in-place in-stack memory for both the return value and the parameters
    // if not, c should be more optimized...
    // would the const have any impact on optimization?
@@ -155,24 +155,24 @@ public:
       // \\Nateus\data\ is not remote, etc...
       // How to?
       FileStats stats;
-      
+
       terminate = false;
       count = 0;
       matchCount = 0;
-      
+
       hasNameSearch = (strlen(nameSearch) != 0);
       hasSizeSearch = false;  // this is temporary
       hasContentSearch = (strlen(contentSearch) != 0);
 
       listLines = true;
       lines = OldList { };
-      
+
       //SearchDir(location);
 
       FileGetStats(location, stats);
 
       strcpy(stack[0].path, location);
-      stack[0].listing = FileListing { stack[0].path };  // there should be a sorted = true/false 
+      stack[0].listing = FileListing { stack[0].path };  // there should be a sorted = true/false
 
       //fsb.list.Clear();
                                                          // Binary Search sorting...
@@ -193,12 +193,12 @@ public:
             //DeleteMessageNode();
             tree.Clear();
             stack[0].browse = MakeFileSystemNode(stats, stack[0].path, stack[0].path, false,
-                  tree.bits.previewPictures, tree.displaySystem);
-            tree.AddTreeNode(stack[0].browse, false, true, null); // TEMPORARY // searchPanel.AddBrowse(stack[0].browse, null);
+                  tree.bits.previewPictures, false, tree.displaySystem);
+            tree.AddTreeNode(stack[0].browse, false, true, true, null); // TEMPORARY // searchPanel.AddBrowse(stack[0].browse, null);
          }
          guiApp.Unlock();
       }
-      
+
       for(frame = 0; frame >= 0 && !terminate; )
       {
          guiApp.Lock();
@@ -222,13 +222,13 @@ public:
          if(stack[frame].listing.Find())
          {
             count++;
-            
+
             //match = (strcmp(stack[frame].listing.name, nameSearch) == 0);
             //match = (stack[frame].listing.name[0] == nameSearch[0]);
             //match = (bool)strstr(stack[frame].listing.name, nameSearch);
-               
+
             if(hasNameSearch)
-               match = (bool)SearchString(stack[frame].listing.name, 0, nameSearch, optionNameMatchCase, optionNameMatchWord);
+               match = SearchString(stack[frame].listing.name, 0, nameSearch, optionNameMatchCase, optionNameMatchWord) != null;
             else
                match = true;
 
@@ -251,16 +251,16 @@ public:
                               DeleteMessageNode();
                               stack[frame].result = MakeFileSystemNode(stack[frame - 1].listing.stats,
                                     stack[frame - 1].listing.name, stack[frame - 1].path, true,
-                                    fsb.bits.previewPictures, fsb.displaySystem);
-                              fsb.AddTreeNode(stack[frame].result, true, false, stack[frame - 1].result); // TEMPORARY // searchPanel.AddResult(stack[frame].result, stack[frame - 1].result);
+                                    fsb.bits.previewPictures, false, fsb.displaySystem);
+                              fsb.AddTreeNode(stack[frame].result, true, true, false, stack[frame - 1].result); // TEMPORARY // searchPanel.AddResult(stack[frame].result, stack[frame - 1].result);
                               stack[frame].result.row.collapsed = false;
                            }
                            else
                            {
                               DeleteMessageNode();
                               stack[0].result = MakeFileSystemNode(stats, stack[0].path, stack[0].path, true,
-                                    fsb.bits.previewPictures, fsb.displaySystem);
-                              fsb.AddTreeNode(stack[0].result, true, false, null); // TEMPORARY // searchPanel.AddResult(stack[0].result, null);
+                                    fsb.bits.previewPictures, false, fsb.displaySystem);
+                              fsb.AddTreeNode(stack[0].result, true, true, false, null); // TEMPORARY // searchPanel.AddResult(stack[0].result, null);
                               stack[0].result.row.collapsed = false;
                            }
                            stack[frame].branched = true;
@@ -297,7 +297,7 @@ public:
                      stack[frame].browse = MakeFileSystemNode(stack[stackTop].listing.stats,
                            stack[stackTop].listing.name, stack[stackTop].path, true,
                            fsb.bits.previewPictures, fsb.displaySystem);
-                     fsb.AddTreeNode(stack[frame].browse, true, false, stack[stackTop].browse); // TEMPORARY // searchPanel.AddBrowse(stack[frame].browse, stack[stackTop].browse);
+                     fsb.AddTreeNode(stack[frame].browse, true, true, false, stack[stackTop].browse); // TEMPORARY // searchPanel.AddBrowse(stack[frame].browse, stack[stackTop].browse);
 
                      if(frame)
                         stack[frame].browse.row.collapsed = true;
@@ -317,10 +317,10 @@ public:
                      DeleteMessageNode();
                      stack[frame].result = MakeFileSystemNode(stack[stackTop].listing.stats,
                            stack[stackTop].listing.name, stack[stackTop].path, true,
-                           fsb.bits.previewPictures, fsb.displaySystem);
+                           fsb.bits.previewPictures, false, fsb.displaySystem);
                      if(optionTree)
                      {
-                        fsb.AddTreeNode(stack[frame].result, true, false, stack[stackTop].result); // TEMPORARY // searchPanel.AddResult(stack[frame].result, stack[stackTop].result);
+                        fsb.AddTreeNode(stack[frame].result, true, true, false, stack[stackTop].result); // TEMPORARY // searchPanel.AddResult(stack[frame].result, stack[stackTop].result);
                         stack[frame].result.row.collapsed = false;
                         //searchPanel.SortResults();  // this can be very bad for performance in some situations
                                                 // there should be a way to sort the nodes as they are added
@@ -345,7 +345,7 @@ public:
                      item = MakeFileSystemNode(stack[frame].listing.stats,
                            stack[frame].listing.name, stack[frame].path, true,
                            fsb.bits.previewPictures, fsb.displaySystem);
-                     fsb.AddTreeNode(item, true, false, stack[frame].browse); // TEMPORARY // searchPanel.AddBrowse(item, stack[frame].browse);
+                     fsb.AddTreeNode(item, true, true, false, stack[frame].browse); // TEMPORARY // searchPanel.AddBrowse(item, stack[frame].browse);
                      //if(frame == 1)
                         //searchPanel.SortBrowser();  // this can be very bad for performance in some situations
                                                 // there should be a way to sort the nodes as they are added
@@ -357,10 +357,10 @@ public:
                      DeleteMessageNode();
                      item = MakeFileSystemNode(stack[frame].listing.stats,
                            stack[frame].listing.name, stack[frame].path, true,
-                           fsb.bits.previewPictures, fsb.displaySystem);
+                           fsb.bits.previewPictures, false, fsb.displaySystem);
                      if(optionTree)
                      {
-                        fsb.AddTreeNode(item, true, false, stack[frame].result); // TEMPORARY // searchPanel.AddResult(item, stack[frame].result);
+                        fsb.AddTreeNode(item, true, true, false, stack[frame].result); // TEMPORARY // searchPanel.AddResult(item, stack[frame].result);
                         item.row.collapsed = false;
                         //searchPanel.SortResults();  // this can be very bad for performance in some situations
                                                 // there should be a way to sort the nodes as they are added
@@ -374,7 +374,7 @@ public:
                            for(lin = lin.next; lin && strlen(temp) < MAX_F_STRING; lin = lin.next)
                               strcatf(temp, ", %d", lin.num);
                            node = FileSystemNode { name = temp/*CopyString(temp)*/, type = lineNumbers };
-                           fsb.AddTreeNode(node, true, false, item); // TEMPORARY // searchPanel.AddResult(node, item);
+                           fsb.AddTreeNode(node, true, true, false, item); // TEMPORARY // searchPanel.AddResult(node, item);
                            //row.AddRow().SetData(resultsNameField, node);
                            lines.Free(null);
                         }