Skip to content

Commit 25bcf80

Browse files
Jeremy WoottenJeremy Wootten
authored andcommitted
Simplify is_valid_directory and is_valid_textfile
1 parent 098ef7a commit 25bcf80

File tree

3 files changed

+28
-33
lines changed

3 files changed

+28
-33
lines changed

src/FolderManager/File.vala

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -83,31 +83,29 @@ namespace Scratch.FolderManager {
8383
}
8484

8585
// Checks if we're dealing with a non-backup directory
86-
// Hidden subfolders are not shown by default, but we need to allow hidden top-level folder
87-
public bool is_valid_directory (bool allow_hidden = true) {
88-
if ((!allow_hidden && name.has_prefix (".")) || // If parent is hidden then inherit validity from parent
89-
info.get_is_backup ()) {
90-
91-
return false;
92-
}
86+
// If parent is hidden then inherit validity from parent
87+
private bool? _is_valid_directory = null;
88+
public bool is_valid_directory {
89+
get {
90+
if (_is_valid_directory == null) {
91+
_is_valid_directory = info != null &&
92+
!info.get_is_backup () &&
93+
info.get_file_type () == FileType.DIRECTORY;
94+
}
9395

94-
if (info.get_file_type () == FileType.DIRECTORY) {
95-
return true;
96+
return _is_valid_directory;
9697
}
97-
98-
return false;
9998
}
10099

101-
public bool is_temporary {
102-
get {
103-
return path.has_suffix ("~");
104-
}
105-
}
106-
107100
// checks if we're dealing with a textfile
101+
private bool? _is_valid_textfile = null;
108102
public bool is_valid_textfile {
109103
get {
110-
return Utils.check_if_valid_text_file (path, info);
104+
if (_is_valid_textfile == null) {
105+
_is_valid_textfile = !path.has_suffix ("~") && Utils.check_if_valid_text_file (path, info);
106+
}
107+
108+
return _is_valid_textfile;
111109
}
112110
}
113111

@@ -143,7 +141,7 @@ namespace Scratch.FolderManager {
143141
while ((file_info = enumerator.next_file ()) != null) {
144142
var child = file.get_child (file_info.get_name ());
145143
var child_file = new File (child.get_path ());
146-
if (child_file.is_valid_directory () || child_file.is_valid_textfile) {
144+
if (child_file.is_valid_directory || child_file.is_valid_textfile) {
147145
_children.add (child_file);
148146
}
149147
}
@@ -200,10 +198,10 @@ namespace Scratch.FolderManager {
200198
}
201199

202200
public static int compare (File a, File b) {
203-
if (a.is_valid_directory () && b.is_valid_textfile) {
201+
if (a.is_valid_directory && b.is_valid_textfile) {
204202
return -1;
205203
}
206-
if (a.is_valid_textfile && b.is_valid_directory ()) {
204+
if (a.is_valid_textfile && b.is_valid_directory) {
207205
return 1;
208206
}
209207

src/FolderManager/FileView.vala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -509,7 +509,7 @@ public class Scratch.FolderManager.FileView : Code.Widgets.SourceList, Code.Pane
509509
if (is_open (folder)) {
510510
warning ("Folder '%s' is already open.", folder.path);
511511
return;
512-
} else if (!folder.is_valid_directory (true)) { // Allow hidden top-level folders
512+
} else if (!folder.is_valid_directory) {
513513
warning ("Cannot open invalid directory.");
514514
return;
515515
}

src/FolderManager/FolderItem.vala

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ namespace Scratch.FolderManager {
2929
private bool has_dummy;
3030
private Code.Widgets.SourceList.Item dummy; /* Blank item for expanded empty folders */
3131

32-
public FolderItem (File file, FileView view) requires (file.is_valid_directory) {
32+
public FolderItem (File file, FileView view) {
3333
Object (file: file, view: view);
3434
}
3535

@@ -63,16 +63,14 @@ namespace Scratch.FolderManager {
6363
file.children.size > 0) {
6464

6565
foreach (var child in file.children) {
66-
Code.Widgets.SourceList.Item item = null;
67-
if (child.is_valid_directory ()) {
66+
Code.Widgets.SourceList.Item? item = null;
67+
if (child.is_valid_directory) {
6868
item = new FolderItem (child, view);
6969
} else if (child.is_valid_textfile) {
7070
item = new FileItem (child, view);
7171
}
7272

73-
if (item != null) {
74-
add (item);
75-
}
73+
add (item); // ignores null parameter
7674
}
7775

7876
children_loaded = true;
@@ -304,15 +302,14 @@ namespace Scratch.FolderManager {
304302
var path_item = find_item_for_path (source.get_path ());
305303
if (path_item == null) {
306304
var file = new File (source.get_path ());
307-
if (file.is_valid_directory ()) {
305+
if (file.is_valid_directory) {
308306
path_item = new FolderItem (file, view);
309-
} else if (!file.is_temporary) {
307+
308+
} else if (file.is_valid_textfile) {
310309
path_item = new FileItem (file, view);
311-
} else {
312-
break;
313310
}
314311

315-
add (path_item);
312+
add (path_item); // null parameter is silently ignored
316313
}
317314

318315
break;

0 commit comments

Comments
 (0)