Skip to content

Commit cb1664f

Browse files
committed
code_review: PR #2503
- Use `Directory.Exists(_id)` instead of `IsInvalid` since we have alread makes sure it's a repository - For invalid repository node, only show `Delete` entry in context menu Signed-off-by: leo <longshuang@msn.cn>
1 parent dd163e5 commit cb1664f

3 files changed

Lines changed: 90 additions & 83 deletions

File tree

src/ViewModels/RepositoryNode.cs

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -92,14 +92,15 @@ public List<RepositoryNode> SubNodes
9292

9393
public void Open()
9494
{
95-
if (IsRepository)
95+
if (!_isRepository)
96+
{
97+
foreach (var subNode in SubNodes)
98+
subNode.Open();
99+
}
100+
else if (Directory.Exists(_id))
96101
{
97102
App.GetLauncher().OpenRepositoryInTab(this, null);
98-
return;
99103
}
100-
101-
foreach (var subNode in SubNodes)
102-
subNode.Open();
103104
}
104105

105106
public void Edit()
@@ -125,16 +126,14 @@ public void Move()
125126

126127
public void OpenInFileManager()
127128
{
128-
if (!IsRepository || IsInvalid)
129-
return;
130-
Native.OS.OpenInFileManager(_id);
129+
if (_isRepository && Directory.Exists(_id))
130+
Native.OS.OpenInFileManager(_id);
131131
}
132132

133133
public void OpenTerminal()
134134
{
135-
if (!IsRepository || IsInvalid)
136-
return;
137-
Native.OS.OpenTerminal(_id);
135+
if (_isRepository && Directory.Exists(_id))
136+
Native.OS.OpenTerminal(_id);
138137
}
139138

140139
public void Delete()

src/Views/RepositoryToolbar.axaml.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System.Collections.Generic;
2+
using System.IO;
23

34
using Avalonia.Controls;
45
using Avalonia.Input;
@@ -21,8 +22,7 @@ private void OpenWithExternalTools(object sender, RoutedEventArgs ev)
2122
if (sender is Button button && DataContext is ViewModels.Repository repo)
2223
{
2324
var fullpath = repo.FullPath;
24-
25-
if (!System.IO.Directory.Exists(fullpath))
25+
if (!Directory.Exists(fullpath))
2626
return;
2727

2828
var menu = new ContextMenu();

src/Views/Welcome.axaml.cs

Lines changed: 78 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
using System;
2+
using System.IO;
23
using System.Threading;
4+
35
using Avalonia;
46
using Avalonia.Controls;
57
using Avalonia.Controls.Primitives;
@@ -148,72 +150,6 @@ private void OnTreeNodeContextRequested(object sender, ContextRequestedEventArgs
148150
{
149151
var menu = new ContextMenu();
150152

151-
if (!node.IsRepository && node.SubNodes.Count > 0)
152-
{
153-
var openAll = new MenuItem();
154-
openAll.Header = App.Text("Welcome.OpenAllInNode");
155-
openAll.Icon = this.CreateMenuIcon("Icons.Folder.Open");
156-
openAll.Click += (_, e) =>
157-
{
158-
node.Open();
159-
e.Handled = true;
160-
};
161-
162-
menu.Items.Add(openAll);
163-
menu.Items.Add(new MenuItem() { Header = "-" });
164-
}
165-
166-
if (node.IsRepository)
167-
{
168-
var open = new MenuItem();
169-
open.Header = App.Text("Welcome.OpenOrInit");
170-
open.Icon = this.CreateMenuIcon("Icons.Folder.Open");
171-
open.Click += (_, e) =>
172-
{
173-
node.Open();
174-
e.Handled = true;
175-
};
176-
177-
menu.Items.Add(open);
178-
menu.Items.Add(new MenuItem() { Header = "-" });
179-
180-
if (!node.IsInvalid)
181-
{
182-
var explore = new MenuItem();
183-
explore.Header = App.Text("Repository.Explore");
184-
explore.Icon = this.CreateMenuIcon("Icons.Explore");
185-
explore.Click += (_, e) =>
186-
{
187-
node.OpenInFileManager();
188-
e.Handled = true;
189-
};
190-
191-
var terminal = new MenuItem();
192-
terminal.Header = App.Text("Repository.Terminal");
193-
terminal.Icon = this.CreateMenuIcon("Icons.Terminal");
194-
terminal.Click += (_, e) =>
195-
{
196-
node.OpenTerminal();
197-
e.Handled = true;
198-
};
199-
menu.Items.Add(explore);
200-
menu.Items.Add(terminal);
201-
menu.Items.Add(new MenuItem() { Header = "-" });
202-
}
203-
}
204-
else
205-
{
206-
var addSubFolder = new MenuItem();
207-
addSubFolder.Header = App.Text("Welcome.AddSubFolder");
208-
addSubFolder.Icon = this.CreateMenuIcon("Icons.Folder.Add");
209-
addSubFolder.Click += (_, e) =>
210-
{
211-
node.AddSubFolder();
212-
e.Handled = true;
213-
};
214-
menu.Items.Add(addSubFolder);
215-
}
216-
217153
var edit = new MenuItem();
218154
edit.Header = App.Text("Welcome.Edit");
219155
edit.Icon = this.CreateMenuIcon("Icons.Edit");
@@ -241,10 +177,82 @@ private void OnTreeNodeContextRequested(object sender, ContextRequestedEventArgs
241177
e.Handled = true;
242178
};
243179

244-
menu.Items.Add(edit);
245-
menu.Items.Add(move);
246-
menu.Items.Add(new MenuItem() { Header = "-" });
247-
menu.Items.Add(delete);
180+
if (!node.IsRepository)
181+
{
182+
if (node.SubNodes.Count > 0)
183+
{
184+
var openAll = new MenuItem();
185+
openAll.Header = App.Text("Welcome.OpenAllInNode");
186+
openAll.Icon = this.CreateMenuIcon("Icons.Folder.Open");
187+
openAll.Click += (_, e) =>
188+
{
189+
node.Open();
190+
e.Handled = true;
191+
};
192+
193+
menu.Items.Add(openAll);
194+
menu.Items.Add(new MenuItem() { Header = "-" });
195+
}
196+
197+
var addSubFolder = new MenuItem();
198+
addSubFolder.Header = App.Text("Welcome.AddSubFolder");
199+
addSubFolder.Icon = this.CreateMenuIcon("Icons.Folder.Add");
200+
addSubFolder.Click += (_, e) =>
201+
{
202+
node.AddSubFolder();
203+
e.Handled = true;
204+
};
205+
206+
menu.Items.Add(addSubFolder);
207+
menu.Items.Add(edit);
208+
menu.Items.Add(move);
209+
menu.Items.Add(new MenuItem() { Header = "-" });
210+
menu.Items.Add(delete);
211+
}
212+
else if (Directory.Exists(node.Id))
213+
{
214+
var open = new MenuItem();
215+
open.Header = App.Text("Welcome.OpenOrInit");
216+
open.Icon = this.CreateMenuIcon("Icons.Folder.Open");
217+
open.Click += (_, e) =>
218+
{
219+
node.Open();
220+
e.Handled = true;
221+
};
222+
223+
var explore = new MenuItem();
224+
explore.Header = App.Text("Repository.Explore");
225+
explore.Icon = this.CreateMenuIcon("Icons.Explore");
226+
explore.Click += (_, e) =>
227+
{
228+
node.OpenInFileManager();
229+
e.Handled = true;
230+
};
231+
232+
var terminal = new MenuItem();
233+
terminal.Header = App.Text("Repository.Terminal");
234+
terminal.Icon = this.CreateMenuIcon("Icons.Terminal");
235+
terminal.Click += (_, e) =>
236+
{
237+
node.OpenTerminal();
238+
e.Handled = true;
239+
};
240+
241+
menu.Items.Add(open);
242+
menu.Items.Add(new MenuItem() { Header = "-" });
243+
menu.Items.Add(explore);
244+
menu.Items.Add(terminal);
245+
menu.Items.Add(new MenuItem() { Header = "-" });
246+
menu.Items.Add(edit);
247+
menu.Items.Add(move);
248+
menu.Items.Add(new MenuItem() { Header = "-" });
249+
menu.Items.Add(delete);
250+
}
251+
else
252+
{
253+
menu.Items.Add(delete);
254+
}
255+
248256
menu.Open(grid);
249257
}
250258

0 commit comments

Comments
 (0)