mirror of
https://github.com/sourcegit-scm/sourcegit
synced 2025-06-15 23:54:58 +00:00
enhance: unify sorting of RepositoryNode
tree, unconditional sort & save after rescan
This commit is contained in:
parent
88c38b4139
commit
b969ac161a
2 changed files with 29 additions and 21 deletions
|
@ -436,16 +436,26 @@ namespace SourceGit.ViewModels
|
||||||
{
|
{
|
||||||
var collection = to == null ? RepositoryNodes : to.SubNodes;
|
var collection = to == null ? RepositoryNodes : to.SubNodes;
|
||||||
collection.Add(node);
|
collection.Add(node);
|
||||||
collection.Sort((l, r) =>
|
SortNodes(collection);
|
||||||
|
|
||||||
|
if (save)
|
||||||
|
Save();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SortNodes(List<RepositoryNode> collection)
|
||||||
|
{
|
||||||
|
collection?.Sort((l, r) =>
|
||||||
{
|
{
|
||||||
if (l.IsRepository != r.IsRepository)
|
if (l.IsRepository != r.IsRepository)
|
||||||
return l.IsRepository ? 1 : -1;
|
return l.IsRepository ? 1 : -1;
|
||||||
|
|
||||||
return string.Compare(l.Name, r.Name, StringComparison.Ordinal);
|
return string.Compare(l.Name, r.Name, StringComparison.Ordinal);
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
if (save)
|
public void SortAllNodes()
|
||||||
Save();
|
{
|
||||||
|
SortNodesRecursive(RepositoryNodes);
|
||||||
}
|
}
|
||||||
|
|
||||||
public RepositoryNode FindNode(string id)
|
public RepositoryNode FindNode(string id)
|
||||||
|
@ -503,22 +513,14 @@ namespace SourceGit.ViewModels
|
||||||
public void SortByRenamedNode(RepositoryNode node)
|
public void SortByRenamedNode(RepositoryNode node)
|
||||||
{
|
{
|
||||||
var container = FindNodeContainer(node, RepositoryNodes);
|
var container = FindNodeContainer(node, RepositoryNodes);
|
||||||
container?.Sort((l, r) =>
|
SortNodes(container);
|
||||||
{
|
|
||||||
if (l.IsRepository != r.IsRepository)
|
|
||||||
return l.IsRepository ? 1 : -1;
|
|
||||||
|
|
||||||
return string.Compare(l.Name, r.Name, StringComparison.Ordinal);
|
|
||||||
});
|
|
||||||
|
|
||||||
Save();
|
Save();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AutoRemoveInvalidNode()
|
public bool AutoRemoveInvalidNode()
|
||||||
{
|
{
|
||||||
var changed = RemoveInvalidRepositoriesRecursive(RepositoryNodes);
|
return RemoveInvalidRepositoriesRecursive(RepositoryNodes);
|
||||||
if (changed)
|
|
||||||
Save();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Save()
|
public void Save()
|
||||||
|
@ -588,6 +590,13 @@ namespace SourceGit.ViewModels
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void SortNodesRecursive(List<RepositoryNode> collection)
|
||||||
|
{
|
||||||
|
SortNodes(collection);
|
||||||
|
foreach (var node in collection)
|
||||||
|
SortNodesRecursive(node.SubNodes);
|
||||||
|
}
|
||||||
|
|
||||||
private RepositoryNode FindNodeRecursive(string id, List<RepositoryNode> collection)
|
private RepositoryNode FindNodeRecursive(string id, List<RepositoryNode> collection)
|
||||||
{
|
{
|
||||||
foreach (var node in collection)
|
foreach (var node in collection)
|
||||||
|
|
|
@ -64,6 +64,11 @@ namespace SourceGit.ViewModels
|
||||||
}
|
}
|
||||||
|
|
||||||
Preferences.Instance.AutoRemoveInvalidNode();
|
Preferences.Instance.AutoRemoveInvalidNode();
|
||||||
|
|
||||||
|
// Sort & Save unconditionally after a complete rescan.
|
||||||
|
Preferences.Instance.SortAllNodes();
|
||||||
|
Preferences.Instance.Save();
|
||||||
|
|
||||||
Welcome.Instance.Refresh();
|
Welcome.Instance.Refresh();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -151,13 +156,7 @@ namespace SourceGit.ViewModels
|
||||||
IsExpanded = true,
|
IsExpanded = true,
|
||||||
};
|
};
|
||||||
collection.Add(added);
|
collection.Add(added);
|
||||||
collection.Sort((l, r) =>
|
Preferences.Instance.SortNodes(collection);
|
||||||
{
|
|
||||||
if (l.IsRepository != r.IsRepository)
|
|
||||||
return l.IsRepository ? 1 : -1;
|
|
||||||
|
|
||||||
return string.Compare(l.Name, r.Name, StringComparison.Ordinal);
|
|
||||||
});
|
|
||||||
|
|
||||||
return added;
|
return added;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue