mirror of https://github.com/2dust/v2rayN
>Export Base64-encoded Share Links to Clipboard
parent
7faabdc375
commit
770e8b8cfa
|
@ -79,7 +79,7 @@ namespace v2rayN.Resx {
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Batch export share URL to clipboard successfully 的本地化字符串。
|
||||
/// 查找类似 Export Share Link to Clipboard Successfully 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string BatchExportURLSuccessfully {
|
||||
get {
|
||||
|
@ -610,7 +610,7 @@ namespace v2rayN.Resx {
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Import bulk URL from clipboard (Ctrl+V) 的本地化字符串。
|
||||
/// 查找类似 Importing Share Links from clipboard (Ctrl+V) 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string menuAddServerViaClipboard {
|
||||
get {
|
||||
|
@ -772,7 +772,7 @@ namespace v2rayN.Resx {
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Export selected server for client configuration 的本地化字符串。
|
||||
/// 查找类似 Export selected server for complete configuration 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string menuExport2ClientConfig {
|
||||
get {
|
||||
|
@ -781,7 +781,16 @@ namespace v2rayN.Resx {
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Export share URLs to clipboard (Ctrl+C) 的本地化字符串。
|
||||
/// 查找类似 Export selected server for complete configuration to clipboard 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string menuExport2ClientConfigClipboard {
|
||||
get {
|
||||
return ResourceManager.GetString("menuExport2ClientConfigClipboard", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Export Share Link to Clipboard (Ctrl+C) 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string menuExport2ShareUrl {
|
||||
get {
|
||||
|
@ -789,6 +798,15 @@ namespace v2rayN.Resx {
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Export Base64-encoded Share Links to Clipboard 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string menuExport2ShareUrlBase64 {
|
||||
get {
|
||||
return ResourceManager.GetString("menuExport2ShareUrlBase64", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Global Hotkey Setting 的本地化字符串。
|
||||
/// </summary>
|
||||
|
@ -1934,7 +1952,7 @@ namespace v2rayN.Resx {
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Scan import URL successfully 的本地化字符串。
|
||||
/// 查找类似 Scan import the shared link successfully 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string SuccessfullyImportedServerViaScan {
|
||||
get {
|
||||
|
|
|
@ -118,7 +118,7 @@
|
|||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="BatchExportURLSuccessfully" xml:space="preserve">
|
||||
<value>Batch export share URL to clipboard successfully</value>
|
||||
<value>Export Share Link to Clipboard Successfully</value>
|
||||
</data>
|
||||
<data name="CheckServerSettings" xml:space="preserve">
|
||||
<value>Please check the server settings first</value>
|
||||
|
@ -299,7 +299,7 @@
|
|||
<value>{0} servers have been imported from clipboard</value>
|
||||
</data>
|
||||
<data name="SuccessfullyImportedServerViaScan" xml:space="preserve">
|
||||
<value>Scan import URL successfully</value>
|
||||
<value>Scan import the shared link successfully</value>
|
||||
</data>
|
||||
<data name="TestMeOutput" xml:space="preserve">
|
||||
<value>The ping of current service: {0} ms</value>
|
||||
|
@ -491,7 +491,7 @@
|
|||
<value>Language (Restart)</value>
|
||||
</data>
|
||||
<data name="menuAddServerViaClipboard" xml:space="preserve">
|
||||
<value>Import bulk URL from clipboard (Ctrl+V)</value>
|
||||
<value>Importing Share Links from clipboard (Ctrl+V)</value>
|
||||
</data>
|
||||
<data name="menuAddServerViaScan" xml:space="preserve">
|
||||
<value>Scan QR code on the screen (Ctrl+S)</value>
|
||||
|
@ -524,10 +524,10 @@
|
|||
<value>Test servers with tcping (Ctrl+O)</value>
|
||||
</data>
|
||||
<data name="menuExport2ClientConfig" xml:space="preserve">
|
||||
<value>Export selected server for client configuration</value>
|
||||
<value>Export selected server for complete configuration</value>
|
||||
</data>
|
||||
<data name="menuExport2ShareUrl" xml:space="preserve">
|
||||
<value>Export share URLs to clipboard (Ctrl+C)</value>
|
||||
<value>Export Share Link to Clipboard (Ctrl+C)</value>
|
||||
</data>
|
||||
<data name="menuAddCustomServer" xml:space="preserve">
|
||||
<value>Add a custom configuration server</value>
|
||||
|
@ -1264,4 +1264,10 @@
|
|||
<data name="menuProfileAutofitColumnWidth" xml:space="preserve">
|
||||
<value>Auto column width adjustment</value>
|
||||
</data>
|
||||
<data name="menuExport2ShareUrlBase64" xml:space="preserve">
|
||||
<value>Export Base64-encoded Share Links to Clipboard</value>
|
||||
</data>
|
||||
<data name="menuExport2ClientConfigClipboard" xml:space="preserve">
|
||||
<value>Export selected server for complete configuration to clipboard</value>
|
||||
</data>
|
||||
</root>
|
|
@ -118,7 +118,7 @@
|
|||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="BatchExportURLSuccessfully" xml:space="preserve">
|
||||
<value>批量导出分享URL至剪贴板成功</value>
|
||||
<value>导出分享链接至剪贴板成功</value>
|
||||
</data>
|
||||
<data name="CheckServerSettings" xml:space="preserve">
|
||||
<value>请先检查服务器设置</value>
|
||||
|
@ -299,7 +299,7 @@
|
|||
<value>成功从剪贴板导入 {0} 个服务器</value>
|
||||
</data>
|
||||
<data name="SuccessfullyImportedServerViaScan" xml:space="preserve">
|
||||
<value>扫描导入URL成功</value>
|
||||
<value>扫描导入分享链接成功</value>
|
||||
</data>
|
||||
<data name="TestMeOutput" xml:space="preserve">
|
||||
<value>当前服务的真连接延迟: {0} ms</value>
|
||||
|
@ -491,7 +491,7 @@
|
|||
<value>语言(重启)</value>
|
||||
</data>
|
||||
<data name="menuAddServerViaClipboard" xml:space="preserve">
|
||||
<value>从剪贴板导入批量URL (Ctrl+V)</value>
|
||||
<value>从剪贴板导入分享链接 (Ctrl+V)</value>
|
||||
</data>
|
||||
<data name="menuAddServerViaScan" xml:space="preserve">
|
||||
<value>扫描屏幕上的二维码 (Ctrl+S)</value>
|
||||
|
@ -524,10 +524,10 @@
|
|||
<value>测试服务器延迟Tcping(多选) (Ctrl+O)</value>
|
||||
</data>
|
||||
<data name="menuExport2ClientConfig" xml:space="preserve">
|
||||
<value>导出所选服务器为客户端配置</value>
|
||||
<value>导出所选服务器完整配置</value>
|
||||
</data>
|
||||
<data name="menuExport2ShareUrl" xml:space="preserve">
|
||||
<value>批量导出分享URL至剪贴板(多选) (Ctrl+C)</value>
|
||||
<value>导出分享链接至剪贴板(多选) (Ctrl+C)</value>
|
||||
</data>
|
||||
<data name="menuAddCustomServer" xml:space="preserve">
|
||||
<value>添加自定义配置服务器</value>
|
||||
|
@ -1261,4 +1261,10 @@
|
|||
<data name="menuProfileAutofitColumnWidth" xml:space="preserve">
|
||||
<value>自动调整列宽</value>
|
||||
</data>
|
||||
<data name="menuExport2ShareUrlBase64" xml:space="preserve">
|
||||
<value>导出分享链接至剪贴板(多选) Base64编码</value>
|
||||
</data>
|
||||
<data name="menuExport2ClientConfigClipboard" xml:space="preserve">
|
||||
<value>导出所选服务器完整配置至剪贴板</value>
|
||||
</data>
|
||||
</root>
|
|
@ -118,7 +118,7 @@
|
|||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="BatchExportURLSuccessfully" xml:space="preserve">
|
||||
<value>批次匯出分享URL至剪貼簿成功</value>
|
||||
<value>匯出分享链接至剪貼簿成功</value>
|
||||
</data>
|
||||
<data name="CheckServerSettings" xml:space="preserve">
|
||||
<value>請先檢查伺服器設定</value>
|
||||
|
@ -298,7 +298,7 @@
|
|||
<value>成功從剪貼簿匯入 {0} 個伺服器</value>
|
||||
</data>
|
||||
<data name="SuccessfullyImportedServerViaScan" xml:space="preserve">
|
||||
<value>掃描匯入URL成功</value>
|
||||
<value>掃描匯入分享链接成功</value>
|
||||
</data>
|
||||
<data name="TestMeOutput" xml:space="preserve">
|
||||
<value>目前服務的真連接延遲: {0} ms</value>
|
||||
|
@ -490,7 +490,7 @@
|
|||
<value>語言(重啟)</value>
|
||||
</data>
|
||||
<data name="menuAddServerViaClipboard" xml:space="preserve">
|
||||
<value>從剪貼簿匯入批次URL (Ctrl+V)</value>
|
||||
<value>從剪貼簿導入分享鏈接 (Ctrl+V)</value>
|
||||
</data>
|
||||
<data name="menuAddServerViaScan" xml:space="preserve">
|
||||
<value>掃描螢幕上的二維碼 (Ctrl+S)</value>
|
||||
|
@ -523,10 +523,10 @@
|
|||
<value>測試伺服器延遲Tcping(多選) (Ctrl+O)</value>
|
||||
</data>
|
||||
<data name="menuExport2ClientConfig" xml:space="preserve">
|
||||
<value>匯出所選伺服器為用戶端配置</value>
|
||||
<value>匯出所選伺服器完整配置</value>
|
||||
</data>
|
||||
<data name="menuExport2ShareUrl" xml:space="preserve">
|
||||
<value>批次匯出分享URL至剪貼簿(多選) (Ctrl+C)</value>
|
||||
<value>匯出分享链接至剪貼簿(多選) (Ctrl+C)</value>
|
||||
</data>
|
||||
<data name="menuAddCustomServer" xml:space="preserve">
|
||||
<value>新增自訂配置伺服器</value>
|
||||
|
@ -1141,4 +1141,10 @@
|
|||
<data name="menuProfileAutofitColumnWidth" xml:space="preserve">
|
||||
<value>自動調整列寬</value>
|
||||
</data>
|
||||
<data name="menuExport2ShareUrlBase64" xml:space="preserve">
|
||||
<value>匯出分享链接至剪貼簿(多選) Base64编码</value>
|
||||
</data>
|
||||
<data name="menuExport2ClientConfigClipboard" xml:space="preserve">
|
||||
<value>匯出所選伺服器完整配置至剪貼簿</value>
|
||||
</data>
|
||||
</root>
|
|
@ -90,7 +90,9 @@ namespace v2rayN.ViewModels
|
|||
//servers export
|
||||
public ReactiveCommand<Unit, Unit> Export2ClientConfigCmd { get; }
|
||||
|
||||
public ReactiveCommand<Unit, Unit> Export2ClientConfigClipboardCmd { get; }
|
||||
public ReactiveCommand<Unit, Unit> Export2ShareUrlCmd { get; }
|
||||
public ReactiveCommand<Unit, Unit> Export2ShareUrlBase64Cmd { get; }
|
||||
|
||||
public ReactiveCommand<Unit, Unit> AddSubCmd { get; }
|
||||
public ReactiveCommand<Unit, Unit> EditSubCmd { get; }
|
||||
|
@ -216,11 +218,19 @@ namespace v2rayN.ViewModels
|
|||
//servers export
|
||||
Export2ClientConfigCmd = ReactiveCommand.Create(() =>
|
||||
{
|
||||
Export2ClientConfig();
|
||||
Export2ClientConfig(false);
|
||||
}, canEditRemove);
|
||||
Export2ClientConfigClipboardCmd = ReactiveCommand.Create(() =>
|
||||
{
|
||||
Export2ClientConfig(true);
|
||||
}, canEditRemove);
|
||||
Export2ShareUrlCmd = ReactiveCommand.Create(() =>
|
||||
{
|
||||
Export2ShareUrl();
|
||||
Export2ShareUrl(false);
|
||||
}, canEditRemove);
|
||||
Export2ShareUrlBase64Cmd = ReactiveCommand.Create(() =>
|
||||
{
|
||||
Export2ShareUrl(true);
|
||||
}, canEditRemove);
|
||||
|
||||
//Subscription
|
||||
|
@ -670,7 +680,7 @@ namespace v2rayN.ViewModels
|
|||
}
|
||||
}
|
||||
|
||||
private void Export2ClientConfig()
|
||||
private void Export2ClientConfig(bool blClipboard)
|
||||
{
|
||||
var item = LazyConfig.Instance.GetProfileItem(SelectedProfile.indexId);
|
||||
if (item is null)
|
||||
|
@ -678,8 +688,22 @@ namespace v2rayN.ViewModels
|
|||
_noticeHandler?.Enqueue(ResUI.PleaseSelectServer);
|
||||
return;
|
||||
}
|
||||
|
||||
_updateView?.Invoke(EViewAction.SaveFileDialog, item);
|
||||
if (blClipboard)
|
||||
{
|
||||
if (CoreConfigHandler.GenerateClientConfig(item, null, out string msg, out string content) != 0)
|
||||
{
|
||||
Locator.Current.GetService<NoticeHandler>()?.Enqueue(msg);
|
||||
}
|
||||
else
|
||||
{
|
||||
WindowsUtils.SetClipboardData(content);
|
||||
_noticeHandler?.SendMessage(ResUI.OperationSuccess);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_updateView?.Invoke(EViewAction.SaveFileDialog, item);
|
||||
}
|
||||
}
|
||||
|
||||
public void Export2ClientConfigResult(string fileName, ProfileItem item)
|
||||
|
@ -699,7 +723,7 @@ namespace v2rayN.ViewModels
|
|||
}
|
||||
}
|
||||
|
||||
public void Export2ShareUrl()
|
||||
public void Export2ShareUrl(bool blEncode)
|
||||
{
|
||||
if (GetProfileItems(out List<ProfileItem> lstSelecteds, true) < 0)
|
||||
{
|
||||
|
@ -719,7 +743,14 @@ namespace v2rayN.ViewModels
|
|||
}
|
||||
if (sb.Length > 0)
|
||||
{
|
||||
WindowsUtils.SetClipboardData(sb.ToString());
|
||||
if (blEncode)
|
||||
{
|
||||
WindowsUtils.SetClipboardData(Utils.Base64Encode(sb.ToString()));
|
||||
}
|
||||
else
|
||||
{
|
||||
WindowsUtils.SetClipboardData(sb.ToString());
|
||||
}
|
||||
_noticeHandler?.SendMessage(ResUI.BatchExportURLSuccessfully);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -192,14 +192,26 @@
|
|||
Click="menuSelectAll_Click"
|
||||
Header="{x:Static resx:ResUI.menuSelectAll}" />
|
||||
<Separator />
|
||||
<MenuItem
|
||||
x:Name="menuExport2ClientConfig"
|
||||
Height="{StaticResource MenuItemHeight}"
|
||||
Header="{x:Static resx:ResUI.menuExport2ClientConfig}" />
|
||||
<MenuItem
|
||||
x:Name="menuExport2ShareUrl"
|
||||
Height="{StaticResource MenuItemHeight}"
|
||||
Header="{x:Static resx:ResUI.menuExport2ShareUrl}" />
|
||||
<MenuItem Header="{x:Static resx:ResUI.menuExport2ClientConfig}">
|
||||
<MenuItem
|
||||
x:Name="menuExport2ClientConfig"
|
||||
Height="{StaticResource MenuItemHeight}"
|
||||
Header="{x:Static resx:ResUI.menuExport2ClientConfig}" />
|
||||
<MenuItem
|
||||
x:Name="menuExport2ClientConfigClipboard"
|
||||
Height="{StaticResource MenuItemHeight}"
|
||||
Header="{x:Static resx:ResUI.menuExport2ClientConfigClipboard}" />
|
||||
</MenuItem>
|
||||
<MenuItem Header="{x:Static resx:ResUI.menuExport2ShareUrl}">
|
||||
<MenuItem
|
||||
x:Name="menuExport2ShareUrl"
|
||||
Height="{StaticResource MenuItemHeight}"
|
||||
Header="{x:Static resx:ResUI.menuExport2ShareUrl}" />
|
||||
<MenuItem
|
||||
x:Name="menuExport2ShareUrlBase64"
|
||||
Height="{StaticResource MenuItemHeight}"
|
||||
Header="{x:Static resx:ResUI.menuExport2ShareUrlBase64}" />
|
||||
</MenuItem>
|
||||
</ContextMenu>
|
||||
</DataGrid.ContextMenu>
|
||||
<DataGrid.Resources>
|
||||
|
|
|
@ -87,7 +87,9 @@ namespace v2rayN.Views
|
|||
|
||||
//servers export
|
||||
this.BindCommand(ViewModel, vm => vm.Export2ClientConfigCmd, v => v.menuExport2ClientConfig).DisposeWith(disposables);
|
||||
this.BindCommand(ViewModel, vm => vm.Export2ClientConfigClipboardCmd, v => v.menuExport2ClientConfigClipboard).DisposeWith(disposables);
|
||||
this.BindCommand(ViewModel, vm => vm.Export2ShareUrlCmd, v => v.menuExport2ShareUrl).DisposeWith(disposables);
|
||||
this.BindCommand(ViewModel, vm => vm.Export2ShareUrlBase64Cmd, v => v.menuExport2ShareUrlBase64).DisposeWith(disposables);
|
||||
});
|
||||
|
||||
RestoreUI();
|
||||
|
@ -236,7 +238,7 @@ namespace v2rayN.Views
|
|||
break;
|
||||
|
||||
case Key.C:
|
||||
ViewModel?.Export2ShareUrl();
|
||||
ViewModel?.Export2ShareUrl(false);
|
||||
break;
|
||||
|
||||
case Key.D:
|
||||
|
|
Loading…
Reference in New Issue