Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit b746e8e

Browse files
feature: allow to select multiple tags and delete theme from context menu (#1717)
Signed-off-by: leo <longshuang@msn.cn>
1 parent 6a8bde4 commit b746e8e

File tree

13 files changed

+595
-245
lines changed

13 files changed

+595
-245
lines changed

‎src/Models/Tag.cs‎

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using System;
2-
using CommunityToolkit.Mvvm.ComponentModel;
32

43
namespace SourceGit.Models
54
{
@@ -9,7 +8,7 @@ public enum TagSortMode
98
Name,
109
}
1110

12-
public class Tag:ObservableObject
11+
public class Tag
1312
{
1413
public string Name { get; set; } = string.Empty;
1514
public bool IsAnnotated { get; set; } = false;
@@ -22,13 +21,5 @@ public string CreatorDateStr
2221
{
2322
get => DateTime.UnixEpoch.AddSeconds(CreatorDate).ToLocalTime().ToString(DateTimeFormat.Active.DateTime);
2423
}
25-
26-
public FilterMode FilterMode
27-
{
28-
get => _filterMode;
29-
set => SetProperty(ref _filterMode, value);
30-
}
31-
32-
private FilterMode _filterMode = FilterMode.None;
3324
}
3425
}

‎src/Resources/Locales/en_US.axaml‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,9 @@
279279
<x:String x:Key="Text.DeleteBranch.WithTrackingRemote" xml:space="preserve">Also delete remote branch ${0}$</x:String>
280280
<x:String x:Key="Text.DeleteMultiBranch" xml:space="preserve">Delete Multiple Branches</x:String>
281281
<x:String x:Key="Text.DeleteMultiBranch.Tip" xml:space="preserve">You are trying to delete multiple branches at one time. Be sure to double-check before taking action!</x:String>
282+
<x:String x:Key="Text.DeleteMultiTags" xml:space="preserve">Delete Multiple Tags</x:String>
283+
<x:String x:Key="Text.DeleteMultiTags.DeleteFromRemotes" xml:space="preserve">Delete them from remotes</x:String>
284+
<x:String x:Key="Text.DeleteMultiTags.Tip" xml:space="preserve">You are trying to delete multiple tags at one time. Be sure to double-check before taking action!</x:String>
282285
<x:String x:Key="Text.DeleteRemote" xml:space="preserve">Delete Remote</x:String>
283286
<x:String x:Key="Text.DeleteRemote.Remote" xml:space="preserve">Remote:</x:String>
284287
<x:String x:Key="Text.DeleteRepositoryNode.Path" xml:space="preserve">Path:</x:String>
@@ -788,6 +791,7 @@
788791
<x:String x:Key="Text.TagCM.CopyName" xml:space="preserve">Copy Tag Name</x:String>
789792
<x:String x:Key="Text.TagCM.CustomAction" xml:space="preserve">Custom Action</x:String>
790793
<x:String x:Key="Text.TagCM.Delete" xml:space="preserve">Delete ${0}$...</x:String>
794+
<x:String x:Key="Text.TagCM.DeleteMultiple" xml:space="preserve">Delete selected {0} tags...</x:String>
791795
<x:String x:Key="Text.TagCM.Merge" xml:space="preserve">Merge ${0}$ into ${1}$...</x:String>
792796
<x:String x:Key="Text.TagCM.Push" xml:space="preserve">Push ${0}$...</x:String>
793797
<x:String x:Key="Text.UpdateSubmodules" xml:space="preserve">Update Submodules</x:String>

‎src/Resources/Locales/zh_CN.axaml‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,9 @@
283283
<x:String x:Key="Text.DeleteBranch.WithTrackingRemote" xml:space="preserve">同时删除远程分支 ${0}$</x:String>
284284
<x:String x:Key="Text.DeleteMultiBranch" xml:space="preserve">删除多个分支</x:String>
285285
<x:String x:Key="Text.DeleteMultiBranch.Tip" xml:space="preserve">您正在尝试一次性删除多个分支,请务必仔细检查后再执行操作!</x:String>
286+
<x:String x:Key="Text.DeleteMultiTags" xml:space="preserve">删除多个标签</x:String>
287+
<x:String x:Key="Text.DeleteMultiTags.DeleteFromRemotes" xml:space="preserve">同时在远程仓库中删除</x:String>
288+
<x:String x:Key="Text.DeleteMultiTags.Tip" xml:space="preserve">您正在尝试一次性删除多个标签,请务必仔细检查后再执行操作!</x:String>
286289
<x:String x:Key="Text.DeleteRemote" xml:space="preserve">删除远程确认</x:String>
287290
<x:String x:Key="Text.DeleteRemote.Remote" xml:space="preserve">远程名 :</x:String>
288291
<x:String x:Key="Text.DeleteRepositoryNode.Path" xml:space="preserve">路径 :</x:String>
@@ -792,6 +795,7 @@
792795
<x:String x:Key="Text.TagCM.CopyName" xml:space="preserve">复制标签名</x:String>
793796
<x:String x:Key="Text.TagCM.CustomAction" xml:space="preserve">自定义操作</x:String>
794797
<x:String x:Key="Text.TagCM.Delete" xml:space="preserve">删除 ${0}$...</x:String>
798+
<x:String x:Key="Text.TagCM.DeleteMultiple" xml:space="preserve">删除选中 {0} 个标签...</x:String>
795799
<x:String x:Key="Text.TagCM.Merge" xml:space="preserve">合并 ${0}$ 到 ${1}$...</x:String>
796800
<x:String x:Key="Text.TagCM.Push" xml:space="preserve">推送 ${0}$...</x:String>
797801
<x:String x:Key="Text.UpdateSubmodules" xml:space="preserve">更新子模块</x:String>

‎src/Resources/Locales/zh_TW.axaml‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,9 @@
283283
<x:String x:Key="Text.DeleteBranch.WithTrackingRemote" xml:space="preserve">同時刪除遠端分支 ${0}$</x:String>
284284
<x:String x:Key="Text.DeleteMultiBranch" xml:space="preserve">刪除多個分支</x:String>
285285
<x:String x:Key="Text.DeleteMultiBranch.Tip" xml:space="preserve">您正在嘗試一次性刪除多個分支,請務必仔細檢查後再刪除!</x:String>
286+
<x:String x:Key="Text.DeleteMultiTags" xml:space="preserve">刪除多個標籤</x:String>
287+
<x:String x:Key="Text.DeleteMultiTags.DeleteFromRemotes" xml:space="preserve">同時刪除遠端存放庫中的這些標籤</x:String>
288+
<x:String x:Key="Text.DeleteMultiTags.Tip" xml:space="preserve">您正在嘗試一次性刪除多個標籤,請務必仔細檢查後再刪除!</x:String>
286289
<x:String x:Key="Text.DeleteRemote" xml:space="preserve">刪除遠端確認</x:String>
287290
<x:String x:Key="Text.DeleteRemote.Remote" xml:space="preserve">遠端名稱:</x:String>
288291
<x:String x:Key="Text.DeleteRepositoryNode.Path" xml:space="preserve">路徑:</x:String>
@@ -792,6 +795,7 @@
792795
<x:String x:Key="Text.TagCM.CopyName" xml:space="preserve">複製標籤名稱</x:String>
793796
<x:String x:Key="Text.TagCM.CustomAction" xml:space="preserve">自訂動作</x:String>
794797
<x:String x:Key="Text.TagCM.Delete" xml:space="preserve">刪除 ${0}$...</x:String>
798+
<x:String x:Key="Text.TagCM.DeleteMultiple" xml:space="preserve">刪除所選的 {0} 個標籤...</x:String>
795799
<x:String x:Key="Text.TagCM.Merge" xml:space="preserve">合併 ${0}$ 到 ${1}$...</x:String>
796800
<x:String x:Key="Text.TagCM.Push" xml:space="preserve">推送 ${0}$...</x:String>
797801
<x:String x:Key="Text.UpdateSubmodules" xml:space="preserve">更新子模組</x:String>

‎src/ViewModels/DeleteMultipleTags.cs‎

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
using System.Collections.Generic;
2+
using System.Threading.Tasks;
3+
4+
namespace SourceGit.ViewModels
5+
{
6+
public class DeleteMultipleTags : Popup
7+
{
8+
public List<Models.Tag> Tags
9+
{
10+
get;
11+
}
12+
13+
public bool DeleteFromRemote
14+
{
15+
get;
16+
set;
17+
} = false;
18+
19+
public DeleteMultipleTags(Repository repo, List<Models.Tag> tags)
20+
{
21+
_repo = repo;
22+
Tags = tags;
23+
}
24+
25+
public override async Task<bool> Sure()
26+
{
27+
_repo.SetWatcherEnabled(false);
28+
ProgressDescription = "Deleting multiple tags...";
29+
30+
var log = _repo.CreateLog("Delete Multiple Tags");
31+
Use(log);
32+
33+
foreach (var tag in Tags)
34+
{
35+
var succ = await new Commands.Tag(_repo.FullPath, tag.Name)
36+
.Use(log)
37+
.DeleteAsync();
38+
39+
if (succ)
40+
{
41+
foreach (var r in _repo.Remotes)
42+
await new Commands.Push(_repo.FullPath, r.Name, $"refs/tags/{tag.Name}", true)
43+
.Use(log)
44+
.RunAsync();
45+
}
46+
}
47+
48+
log.Complete();
49+
_repo.MarkTagsDirtyManually();
50+
_repo.SetWatcherEnabled(true);
51+
return true;
52+
}
53+
54+
private readonly Repository _repo;
55+
}
56+
}

‎src/ViewModels/Repository.cs‎

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1755,9 +1755,19 @@ private object BuildVisibleTags()
17551755
UpdateTagFilterMode(historiesFilters);
17561756

17571757
if (Preferences.Instance.ShowTagsAsTree)
1758-
return TagCollectionAsTree.Build(visible, _visibleTags as TagCollectionAsTree);
1758+
{
1759+
var tree = TagCollectionAsTree.Build(visible, _visibleTags as TagCollectionAsTree);
1760+
foreach (var node in tree.Tree)
1761+
node.UpdateFilterMode(historiesFilters);
1762+
return tree;
1763+
}
17591764
else
1760-
return new TagCollectionAsList() { Tags = visible };
1765+
{
1766+
var list = new TagCollectionAsList(visible);
1767+
foreach (var item in list.TagItems)
1768+
item.FilterMode = historiesFilters.GetValueOrDefault(item.Tag.Name, Models.FilterMode.None);
1769+
return list;
1770+
}
17611771
}
17621772

17631773
private object BuildVisibleSubmodules()
@@ -1813,9 +1823,15 @@ private void UpdateBranchTreeFilterMode(List<BranchTreeNode> nodes, Dictionary<s
18131823

18141824
private void UpdateTagFilterMode(Dictionary<string, Models.FilterMode> filters)
18151825
{
1816-
foreach (var tag in _tags)
1826+
if (VisibleTags is TagCollectionAsTree tree)
1827+
{
1828+
foreach (var node in tree.Tree)
1829+
node.UpdateFilterMode(filters);
1830+
}
1831+
else if (VisibleTags is TagCollectionAsList list)
18171832
{
1818-
tag.FilterMode = filters.GetValueOrDefault(tag.Name, Models.FilterMode.None);
1833+
foreach (var item in list.TagItems)
1834+
item.FilterMode = filters.GetValueOrDefault(item.Tag.Name, Models.FilterMode.None);
18191835
}
18201836
}
18211837

@@ -1831,8 +1847,17 @@ private void ResetBranchTreeFilterMode(List<BranchTreeNode> nodes)
18311847

18321848
private void ResetTagFilterMode()
18331849
{
1834-
foreach (var tag in _tags)
1835-
tag.FilterMode = Models.FilterMode.None;
1850+
if (VisibleTags is TagCollectionAsTree tree)
1851+
{
1852+
var filters = new Dictionary<string, Models.FilterMode>();
1853+
foreach (var node in tree.Tree)
1854+
node.UpdateFilterMode(filters);
1855+
}
1856+
else if (VisibleTags is TagCollectionAsList list)
1857+
{
1858+
foreach (var item in list.TagItems)
1859+
item.FilterMode = Models.FilterMode.None;
1860+
}
18361861
}
18371862

18381863
private BranchTreeNode FindBranchNode(List<BranchTreeNode> nodes, string path)

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /