Skip to content

Commit f9c7758

Browse files
committed
feat: Allow drag & drop to re-order server groups. #368
1 parent 91929bb commit f9c7758

File tree

11 files changed

+289
-196
lines changed

11 files changed

+289
-196
lines changed

Installer/Package.appxmanifest

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<Identity
1212
Name="16536Shawn.V.Workshop.PRemoteM"
1313
Publisher="CN=72AC6E85-B8C4-48F8-A07B-9A985863E628"
14-
Version="1.0.75.0" />
14+
Version="1.0.76.0" />
1515

1616
<Properties>
1717
<DisplayName>1Remote</DisplayName>

Ui/Service/LocalityService.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ internal class LocalitySettings
4242
public WindowStyle TabWindowStyle = WindowStyle.SingleBorderWindow;
4343
public EnumServerOrderBy ServerOrderBy = EnumServerOrderBy.IdAsc;
4444
public Dictionary<string, int> ServerCustomOrder = new Dictionary<string, int>();
45+
public Dictionary<string, int> ServerGroupedOrder = new Dictionary<string, int>();
4546
public ConcurrentDictionary<string, RdpLocalSetting> RdpLocalities = new ConcurrentDictionary<string, RdpLocalSetting>();
4647
public List<QuickConnectionItem> QuickConnectionHistory = new List<QuickConnectionItem>();
4748
}
@@ -173,6 +174,7 @@ public EnumServerOrderBy ServerOrderBy
173174
private readonly LocalitySettings _localitySettings;
174175

175176
public Dictionary<string, int> ServerCustomOrder => _localitySettings.ServerCustomOrder;
177+
public Dictionary<string, int> ServerGroupedOrder => _localitySettings.ServerGroupedOrder;
176178

177179
#region Interface
178180

@@ -244,6 +246,17 @@ public void ServerCustomOrderRebuild(IEnumerable<ProtocolBaseViewModel> servers)
244246
}
245247
Save();
246248
}
249+
public void ServerGroupedOrderRebuild(string?[] groupNames)
250+
{
251+
int i = 0;
252+
_localitySettings.ServerGroupedOrder.Clear();
253+
foreach (var str in groupNames)
254+
{
255+
_localitySettings.ServerGroupedOrder.Add(str, i);
256+
++i;
257+
}
258+
Save();
259+
}
247260

248261
public bool CanSave = true;
249262
private void Save()

Ui/Service/SessionControlService.cs

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,18 @@
11
using System;
22
using System.Collections.Concurrent;
3-
using System.Diagnostics;
4-
using System.IO;
53
using System.Linq;
64
using System.Runtime.CompilerServices;
7-
using System.Threading;
85
using System.Threading.Tasks;
96
using System.Windows;
107
using _1RM.Model;
11-
using _1RM.Model.Protocol;
128
using _1RM.Model.Protocol.Base;
13-
using _1RM.Model.ProtocolRunner;
14-
using _1RM.Model.ProtocolRunner.Default;
159
using _1RM.Utils;
16-
using _1RM.View;
1710
using _1RM.View.Host;
1811
using _1RM.View.Host.ProtocolHosts;
1912
using Shawn.Utils;
20-
using Shawn.Utils.Wpf;
2113
using Stylet;
2214
using ProtocolHostStatus = _1RM.View.Host.ProtocolHosts.ProtocolHostStatus;
2315
using _1RM.Service.DataSource;
24-
using System.Collections.Generic;
25-
using Shawn.Utils.WpfResources.Theme.Styles;
2616

2717
namespace _1RM.Service
2818
{
@@ -83,7 +73,7 @@ private void OnRequestOpenConnection(in ProtocolBase? serverOrg, in string fromV
8373
{
8474
this.OnRequestOpenConnection(item.Server, assignTabToken, assignRunnerName, fromView);
8575
}
86-
MsAppCenterHelper.TraceSessionOpen("multiple sessions", fromView);
76+
MsAppCenterHelper.TraceSessionOpen($"multiple sessions ({((list.Length >=5) ? ">=5" : list.Length.ToString())})", fromView);
8777
return;
8878
}
8979
#endregion

Ui/Utils/MsAppCenterHelper.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,7 @@ public static void TraceView(string viewName, bool isShow)
8686
{
8787
var properties = new Dictionary<string, string>
8888
{
89-
{ "View", viewName },
90-
{ "Action", isShow ? "Show":"Hide" },
89+
{ "View", (isShow ? "Show":"Hide") + viewName },
9190
};
9291
Trace(EventName.View, properties);
9392
}

Ui/View/Host/ProtocolHosts/AxMsRdpClient09Host.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
using MSTSCLib;
1111
using _1RM.Model.Protocol;
1212
using _1RM.Service;
13+
using _1RM.Utils;
1314
using Shawn.Utils;
1415
using Shawn.Utils.Interface;
1516
using Shawn.Utils.Wpf;
@@ -246,14 +247,17 @@ private void OnGoToFullScreenRequested()
246247
case null:
247248
case ERdpWindowResizeMode.AutoResize:
248249
case ERdpWindowResizeMode.FixedFullScreen:
250+
case ERdpWindowResizeMode.StretchFullScreen:
249251
SetRdpResolution((uint)screenSize.Width, (uint)screenSize.Height, true);
250252
break;
251253
case ERdpWindowResizeMode.Stretch:
252254
case ERdpWindowResizeMode.Fixed:
253255
SetRdpResolution((uint)(_rdpSettings.RdpWidth ?? 800), (uint)(_rdpSettings.RdpHeight ?? 600), true);
254256
break;
255257
default:
256-
throw new ArgumentOutOfRangeException();
258+
MsAppCenterHelper.Error(new ArgumentOutOfRangeException($"{_rdpSettings.RdpWindowResizeMode} is not processed!"));
259+
SetRdpResolution((uint)screenSize.Width, (uint)screenSize.Height, true);
260+
break;
257261
}
258262
}
259263
}

Ui/View/MainWindowViewModel.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -389,6 +389,7 @@ public string MainFilterString
389389
{
390390
if (_mainFilterString == MainFilterString)
391391
{
392+
// MainFilterString changed -> refresh view source -> calc visible in `ServerListItemSource_OnFilter`
392393
ServerListViewModel.RefreshCollectionViewSource();
393394
}
394395
});

Ui/View/ProtocolBaseViewModel.cs

Lines changed: 32 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,6 @@ namespace _1RM.View
1616
public class ProtocolBaseViewModel : NotifyPropertyChangedBase
1717
{
1818
public string DataSourceName => Server.DataSourceName;
19-
public bool IsEditable { get; private set; } = false;
20-
public bool IsViewable { get; private set; } = false;
21-
22-
public string Id => Server.Id;
23-
24-
public string DisplayName => Server.DisplayName;
25-
public string SubTitle => Server.SubTitle;
26-
public string ProtocolDisplayNameInShort => Server.ProtocolDisplayName;
27-
28-
/// <summary>
29-
/// like: "#work #asd", display in launcher page.
30-
/// </summary>
31-
public string TagString { get; private set; }
3219

3320
public int CustomOrder
3421
{
@@ -44,6 +31,38 @@ public int CustomOrder
4431
}
4532

4633

34+
public string GroupedOrder
35+
{
36+
get
37+
{
38+
int i = 65535;
39+
char mark = IoC.Get<DataSourceService>().LocalDataSource?.DataSourceName == DataSourceName ? '!' : '#';
40+
if (IoC.TryGet<LocalityService>() != null)
41+
{
42+
var orders = IoC.Get<LocalityService>().ServerGroupedOrder;
43+
if (orders.ContainsKey(DataSourceName) == true)
44+
i = orders[DataSourceName];
45+
}
46+
return $"{i}_{mark}_{DataSourceName}";
47+
}
48+
}
49+
50+
51+
public bool IsEditable { get; private set; } = false;
52+
public bool IsViewable { get; private set; } = false;
53+
54+
public string Id => Server.Id;
55+
56+
public string DisplayName => Server.DisplayName;
57+
public string SubTitle => Server.SubTitle;
58+
public string ProtocolDisplayNameInShort => Server.ProtocolDisplayName;
59+
60+
/// <summary>
61+
/// like: "#work #asd", display in launcher page.
62+
/// </summary>
63+
public string TagString { get; private set; }
64+
65+
4766
private ProtocolBase _server;
4867
public ProtocolBase Server
4968
{

0 commit comments

Comments
 (0)