finally got it working stable
This commit is contained in:
Родитель
5c0a6d1897
Коммит
e2c717402b
|
@ -1,7 +1,7 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 14
|
||||
VisualStudioVersion = 14.0.25420.1
|
||||
# Visual Studio 15
|
||||
VisualStudioVersion = 15.0.26430.6
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NextcloudApp", "NextcloudApp\NextcloudApp.csproj", "{99EFB7EA-88A3-4FCF-9289-22734215B5CF}"
|
||||
EndProject
|
||||
|
|
|
@ -24,7 +24,6 @@ using Microsoft.QueryStringDotNET;
|
|||
using Windows.UI.Notifications;
|
||||
using Windows.Foundation.Collections;
|
||||
using Windows.System;
|
||||
using Windows.ApplicationModel.DataTransfer;
|
||||
using Windows.Storage;
|
||||
|
||||
namespace NextcloudApp
|
||||
|
@ -162,31 +161,29 @@ namespace NextcloudApp
|
|||
OnShareTargetActivatedsyncAsync(args);
|
||||
}
|
||||
|
||||
private async Task OnShareTargetActivatedsyncAsync(ShareTargetActivatedEventArgs args)
|
||||
private async void OnShareTargetActivatedsyncAsync(ShareTargetActivatedEventArgs args)
|
||||
{
|
||||
var fileTokens = new List<string>();
|
||||
var sorageItems = await args.ShareOperation.Data.GetStorageItemsAsync();
|
||||
StorageApplicationPermissions.FutureAccessList.Clear();
|
||||
foreach (var storageItem in sorageItems)
|
||||
{
|
||||
if (storageItem.IsOfType(StorageItemTypes.File))
|
||||
{
|
||||
var token = StorageApplicationPermissions.FutureAccessList.Add(storageItem);
|
||||
fileTokens.Add(token);
|
||||
}
|
||||
}
|
||||
args.ShareOperation.ReportDataRetrieved();
|
||||
|
||||
var frame = new Frame();
|
||||
frame.Navigate(typeof(ShareTarget), null);
|
||||
Window.Current.Content = frame;
|
||||
Window.Current.Activate();
|
||||
|
||||
var options = new LauncherOptions()
|
||||
{
|
||||
TargetApplicationPackageFamilyName = Package.Current.Id.FamilyName
|
||||
TargetApplicationPackageFamilyName = Package.Current.Id.FamilyName,
|
||||
DesiredRemainingView = Windows.UI.ViewManagement.ViewSizePreference.UseNone
|
||||
};
|
||||
|
||||
ValueSet inputData = new ValueSet
|
||||
var inputData = new ValueSet
|
||||
{
|
||||
{ "FileTokens", fileTokens.ToArray() }
|
||||
{ "FileTokens", (from storageItem in sorageItems where storageItem.IsOfType(StorageItemTypes.File) select StorageApplicationPermissions.FutureAccessList.Add(storageItem)).ToArray() }
|
||||
};
|
||||
Uri uri = new Uri("nextcloud:///share");
|
||||
var uri = new Uri("nextcloud:///share");
|
||||
|
||||
await Launcher.LaunchUriAsync(uri, options, inputData);
|
||||
|
||||
args.ShareOperation.ReportCompleted();
|
||||
|
@ -220,11 +217,12 @@ namespace NextcloudApp
|
|||
ToastNotificationManager.History.RemoveGroup(ToastNotificationService.SYNCACTION);
|
||||
|
||||
// Handle toast activation
|
||||
if (args is ToastNotificationActivatedEventArgs)
|
||||
var eventArgs = args as ToastNotificationActivatedEventArgs;
|
||||
if (eventArgs != null)
|
||||
{
|
||||
var toastActivationArgs = args as ToastNotificationActivatedEventArgs;
|
||||
var toastActivationArgs = eventArgs;
|
||||
// Parse the query string
|
||||
QueryString query = QueryString.Parse(toastActivationArgs.Argument);
|
||||
var query = QueryString.Parse(toastActivationArgs.Argument);
|
||||
// See what action is being requested
|
||||
switch (query["action"])
|
||||
{
|
||||
|
@ -239,52 +237,57 @@ namespace NextcloudApp
|
|||
break;
|
||||
}
|
||||
}
|
||||
else if (args.Kind == ActivationKind.Protocol)
|
||||
else switch (args.Kind)
|
||||
{
|
||||
var protocolArgs = args as ProtocolActivatedEventArgs;
|
||||
case ActivationKind.Protocol:
|
||||
var protocolArgs = args as ProtocolActivatedEventArgs;
|
||||
|
||||
if (protocolArgs.Uri.AbsolutePath == "/share")
|
||||
{
|
||||
var pageParameters = new ShareTargetPageParameters()
|
||||
if (protocolArgs != null && protocolArgs.Uri.AbsolutePath == "/share")
|
||||
{
|
||||
ActivationKind = ActivationKind.ShareTarget,
|
||||
FileTokens = new List<string>()
|
||||
};
|
||||
|
||||
if (protocolArgs.Data.ContainsKey("FileTokens"))
|
||||
{
|
||||
foreach (var token in protocolArgs.Data["FileTokens"] as string[])
|
||||
var pageParameters = new ShareTargetPageParameters()
|
||||
{
|
||||
ActivationKind = ActivationKind.ShareTarget,
|
||||
FileTokens = new List<string>()
|
||||
};
|
||||
|
||||
if (protocolArgs.Data.ContainsKey("FileTokens"))
|
||||
{
|
||||
var tokens = protocolArgs.Data["FileTokens"] as string[];
|
||||
if (tokens != null)
|
||||
{
|
||||
foreach (var token in tokens)
|
||||
{
|
||||
pageParameters.FileTokens.Add(token);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CheckSettingsAndContinue(PageToken.ShareTarget, pageParameters);
|
||||
}
|
||||
break;
|
||||
case ActivationKind.FileSavePicker:
|
||||
case ActivationKind.CachedFileUpdater:
|
||||
CheckSettingsAndContinue(PageToken.FileSavePicker, null);
|
||||
break;
|
||||
case ActivationKind.File:
|
||||
if (args is FileActivatedEventArgs activatedEventArgs)
|
||||
{
|
||||
var sorageItems = activatedEventArgs.Files;
|
||||
var pageParameters = new ShareTargetPageParameters()
|
||||
{
|
||||
//ShareOperation = activatedEventArgs.ShareOperation,
|
||||
ActivationKind = ActivationKind.ShareTarget,
|
||||
FileTokens = new List<string>()
|
||||
};
|
||||
StorageApplicationPermissions.FutureAccessList.Clear();
|
||||
foreach (var storageItem in sorageItems)
|
||||
{
|
||||
var token = StorageApplicationPermissions.FutureAccessList.Add(storageItem);
|
||||
pageParameters.FileTokens.Add(token);
|
||||
}
|
||||
CheckSettingsAndContinue(PageToken.ShareTarget, pageParameters);
|
||||
}
|
||||
|
||||
CheckSettingsAndContinue(PageToken.ShareTarget, pageParameters);
|
||||
}
|
||||
}
|
||||
else if (args.Kind == ActivationKind.FileSavePicker || args.Kind == ActivationKind.CachedFileUpdater)
|
||||
{
|
||||
CheckSettingsAndContinue(PageToken.FileSavePicker, null);
|
||||
}
|
||||
else if (args.Kind == ActivationKind.File)
|
||||
{
|
||||
if (args is FileActivatedEventArgs activatedEventArgs)
|
||||
{
|
||||
var sorageItems = activatedEventArgs.Files;
|
||||
var pageParameters = new ShareTargetPageParameters()
|
||||
{
|
||||
//ShareOperation = activatedEventArgs.ShareOperation,
|
||||
ActivationKind = ActivationKind.ShareTarget,
|
||||
FileTokens = new List<string>()
|
||||
};
|
||||
StorageApplicationPermissions.FutureAccessList.Clear();
|
||||
foreach (var storageItem in sorageItems)
|
||||
{
|
||||
var token = StorageApplicationPermissions.FutureAccessList.Add(storageItem);
|
||||
pageParameters.FileTokens.Add(token);
|
||||
}
|
||||
CheckSettingsAndContinue(PageToken.ShareTarget, pageParameters);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -168,6 +168,9 @@
|
|||
<Compile Include="Services\ToastNotificationService.cs" />
|
||||
<Compile Include="Services\UpdateNotificationService.cs" />
|
||||
<Compile Include="Services\VerificationService.cs" />
|
||||
<Compile Include="ShareTarget.xaml.cs">
|
||||
<DependentUpon>ShareTarget.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Utils\DebugTraceListener.cs" />
|
||||
<Compile Include="Utils\DefaultSettingValueAttribute.cs" />
|
||||
<Compile Include="Utils\GroupMode.cs" />
|
||||
|
@ -281,6 +284,10 @@
|
|||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="ShareTarget.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="Themes\Fonts.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
|
|
|
@ -27,13 +27,7 @@
|
|||
</uap:InitialRotationPreference>
|
||||
</uap:VisualElements>
|
||||
<Extensions>
|
||||
<uap:Extension Category="windows.protocol">
|
||||
<uap:Protocol Name="nextcloud">
|
||||
<uap:Logo>Assets\StoreLogo.png</uap:Logo>
|
||||
<uap:DisplayName>Nextcloud</uap:DisplayName>
|
||||
</uap:Protocol>
|
||||
</uap:Extension>
|
||||
<uap:Extension Category="windows.shareTarget">
|
||||
<uap:Extension Category="windows.shareTarget" EntryPoint="NextcloudApp.ShareTarget">
|
||||
<uap:ShareTarget>
|
||||
<uap:SupportedFileTypes>
|
||||
<uap:SupportsAnyFileType />
|
||||
|
@ -46,6 +40,12 @@
|
|||
<uap:DataFormat>RTF</uap:DataFormat>
|
||||
</uap:ShareTarget>
|
||||
</uap:Extension>
|
||||
<uap:Extension Category="windows.protocol">
|
||||
<uap:Protocol Name="nextcloud">
|
||||
<uap:Logo>Assets\StoreLogo.png</uap:Logo>
|
||||
<uap:DisplayName>Nextcloud</uap:DisplayName>
|
||||
</uap:Protocol>
|
||||
</uap:Extension>
|
||||
</Extensions>
|
||||
</Application>
|
||||
</Applications>
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
<Page
|
||||
x:Class="NextcloudApp.ShareTarget"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="using:NextcloudApp"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
mc:Ignorable="d">
|
||||
|
||||
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<ProgressRing Foreground="White" Width="100" Height="100" IsActive="True" VerticalAlignment="Bottom" Margin="10"/>
|
||||
<TextBlock Grid.Row="1" x:Uid="PrepareForSharing" Text="Prepare for sharing..." VerticalAlignment="Top" HorizontalAlignment="Center" Margin="10"/>
|
||||
</Grid>
|
||||
</Page>
|
|
@ -0,0 +1,30 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices.WindowsRuntime;
|
||||
using Windows.Foundation;
|
||||
using Windows.Foundation.Collections;
|
||||
using Windows.UI.Xaml;
|
||||
using Windows.UI.Xaml.Controls;
|
||||
using Windows.UI.Xaml.Controls.Primitives;
|
||||
using Windows.UI.Xaml.Data;
|
||||
using Windows.UI.Xaml.Input;
|
||||
using Windows.UI.Xaml.Media;
|
||||
using Windows.UI.Xaml.Navigation;
|
||||
|
||||
// The Blank Page item template is documented at https://go.microsoft.com/fwlink/?LinkId=234238
|
||||
|
||||
namespace NextcloudApp
|
||||
{
|
||||
/// <summary>
|
||||
/// An empty page that can be used on its own or navigated to within a Frame.
|
||||
/// </summary>
|
||||
public sealed partial class ShareTarget : Page
|
||||
{
|
||||
public ShareTarget()
|
||||
{
|
||||
this.InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -551,4 +551,7 @@ Please try again later.</value>
|
|||
<data name="DirectoryListStatusBarText" xml:space="preserve">
|
||||
<value>Items: {0} (folders: {1} files: {2})</value>
|
||||
</data>
|
||||
<data name="PrepareForSharing" xml:space="preserve">
|
||||
<value>Prepare for sharing...</value>
|
||||
</data>
|
||||
</root>
|
Загрузка…
Ссылка в новой задаче