This commit is contained in:
SunboX 2017-05-26 22:04:45 +02:00
Родитель 5c0a6d1897
Коммит e2c717402b
7 изменённых файлов: 491 добавлений и 429 удалений

Просмотреть файл

@ -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>