Small fixes before removing the Win10 plugins for the RC1

This commit is contained in:
Robin 2016-10-18 20:18:36 +02:00
commit 667669ca3e
3 changed files with 30 additions and 9 deletions

View file

@ -13,6 +13,7 @@
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion> <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<TargetFrameworkProfile /> <TargetFrameworkProfile />
<TargetPlatformVersion>8.1</TargetPlatformVersion>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>

View file

@ -25,8 +25,13 @@ using Windows.ApplicationModel.DataTransfer;
namespace GreenshotWin10Plugin.Native namespace GreenshotWin10Plugin.Native
{ {
/// <summary>
/// Wraps the interop for calling the ShareUI
/// </summary>
public class DataTransferManagerHelper public class DataTransferManagerHelper
{ {
private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(typeof(DataTransferManagerHelper));
private const string DataTransferManagerId = "a5caee9b-8708-49d1-8d36-67d25a8da00c"; private const string DataTransferManagerId = "a5caee9b-8708-49d1-8d36-67d25a8da00c";
private readonly IDataTransferManagerInterOp _dataTransferManagerInterOp; private readonly IDataTransferManagerInterOp _dataTransferManagerInterOp;
private readonly IntPtr _windowHandle; private readonly IntPtr _windowHandle;
@ -48,7 +53,11 @@ namespace GreenshotWin10Plugin.Native
_windowHandle = handle; _windowHandle = handle;
var riid = new Guid(DataTransferManagerId); var riid = new Guid(DataTransferManagerId);
DataTransferManager dataTransferManager; DataTransferManager dataTransferManager;
_dataTransferManagerInterOp.GetForWindow(_windowHandle, riid, out dataTransferManager); var hresult = _dataTransferManagerInterOp.GetForWindow(_windowHandle, riid, out dataTransferManager);
if (hresult != 0)
{
Log.WarnFormat("HResult for GetForWindow: {0}", hresult);
}
DataTransferManager = dataTransferManager; DataTransferManager = dataTransferManager;
} }
@ -57,7 +66,15 @@ namespace GreenshotWin10Plugin.Native
/// </summary> /// </summary>
public void ShowShareUi() public void ShowShareUi()
{ {
_dataTransferManagerInterOp.ShowShareUIForWindow(_windowHandle); var hresult = _dataTransferManagerInterOp.ShowShareUIForWindow(_windowHandle);
if (hresult != 0)
{
Log.WarnFormat("HResult for ShowShareUIForWindow: {0}", hresult);
}
else
{
Log.Debug("ShowShareUIForWindow called");
}
} }
} }

View file

@ -73,6 +73,7 @@ namespace GreenshotWin10Plugin
// Create capture for export // Create capture for export
ImageOutput.SaveToStream(surface, imageStream, new SurfaceOutputSettings()); ImageOutput.SaveToStream(surface, imageStream, new SurfaceOutputSettings());
imageStream.Position = 0; imageStream.Position = 0;
Log.Info("Created RandomAccessStreamReference for the image");
var imageRandomAccessStreamReference = RandomAccessStreamReference.CreateFromStream(imageStream); var imageRandomAccessStreamReference = RandomAccessStreamReference.CreateFromStream(imageStream);
RandomAccessStreamReference thumbnailRandomAccessStreamReference; RandomAccessStreamReference thumbnailRandomAccessStreamReference;
RandomAccessStreamReference logoRandomAccessStreamReference; RandomAccessStreamReference logoRandomAccessStreamReference;
@ -85,6 +86,7 @@ namespace GreenshotWin10Plugin
ImageOutput.SaveToStream(thumbnail, null, thumbnailStream, new SurfaceOutputSettings()); ImageOutput.SaveToStream(thumbnail, null, thumbnailStream, new SurfaceOutputSettings());
thumbnailStream.Position = 0; thumbnailStream.Position = 0;
thumbnailRandomAccessStreamReference = RandomAccessStreamReference.CreateFromStream(thumbnailStream); thumbnailRandomAccessStreamReference = RandomAccessStreamReference.CreateFromStream(thumbnailStream);
Log.Info("Created RandomAccessStreamReference for the thumbnail");
} }
} }
// Create logo // Create logo
@ -95,13 +97,14 @@ namespace GreenshotWin10Plugin
ImageOutput.SaveToStream(logoThumbnail, null, logoStream, new SurfaceOutputSettings()); ImageOutput.SaveToStream(logoThumbnail, null, logoStream, new SurfaceOutputSettings());
logoStream.Position = 0; logoStream.Position = 0;
logoRandomAccessStreamReference = RandomAccessStreamReference.CreateFromStream(logoStream); logoRandomAccessStreamReference = RandomAccessStreamReference.CreateFromStream(logoStream);
Log.Info("Created RandomAccessStreamReference for the logo");
} }
} }
string applicationName = null; string applicationName = null;
var dataTransferManagerHelper = new DataTransferManagerHelper(handle); var dataTransferManagerHelper = new DataTransferManagerHelper(handle);
dataTransferManagerHelper.DataTransferManager.TargetApplicationChosen += (dtm, args) => dataTransferManagerHelper.DataTransferManager.TargetApplicationChosen += (dtm, args) =>
{ {
Log.DebugFormat("Trying to share with {0}", args.ApplicationName); Log.InfoFormat("Trying to share with {0}", args.ApplicationName);
applicationName = args.ApplicationName; applicationName = args.ApplicationName;
}; };
var filename = FilenameHelper.GetFilename(OutputFormat.png, captureDetails); var filename = FilenameHelper.GetFilename(OutputFormat.png, captureDetails);
@ -113,8 +116,8 @@ namespace GreenshotWin10Plugin
{ {
using (var deferredStream = streamedFileDataRequest.AsStreamForWrite()) using (var deferredStream = streamedFileDataRequest.AsStreamForWrite())
{ {
await imageStream.CopyToAsync(deferredStream); await imageStream.CopyToAsync(deferredStream).ConfigureAwait(false);
await imageStream.FlushAsync(); await imageStream.FlushAsync().ConfigureAwait(false);
} }
// Signal that the stream is ready // Signal that the stream is ready
streamedFileDataRequest.Dispose(); streamedFileDataRequest.Dispose();
@ -125,7 +128,7 @@ namespace GreenshotWin10Plugin
} }
// Signal transfer ready to the await down below // Signal transfer ready to the await down below
taskCompletionSource.TrySetResult(applicationName); taskCompletionSource.TrySetResult(applicationName);
}, imageRandomAccessStreamReference); }, imageRandomAccessStreamReference).AsTask().ConfigureAwait(false);
dataTransferManagerHelper.DataTransferManager.DataRequested += (sender, args) => dataTransferManagerHelper.DataTransferManager.DataRequested += (sender, args) =>
{ {
@ -143,7 +146,7 @@ namespace GreenshotWin10Plugin
dataPackage.Properties.Square30x30Logo = logoRandomAccessStreamReference; dataPackage.Properties.Square30x30Logo = logoRandomAccessStreamReference;
dataPackage.Properties.LogoBackgroundColor = Color.FromArgb(0xff, 0x3d, 0x3d, 0x3d); dataPackage.Properties.LogoBackgroundColor = Color.FromArgb(0xff, 0x3d, 0x3d, 0x3d);
dataPackage.SetStorageItems(new List<IStorageItem> { storageFile }); dataPackage.SetStorageItems(new List<IStorageItem> { storageFile });
//dataPackage.SetBitmap(imageRandomAccessStreamReference); dataPackage.SetBitmap(imageRandomAccessStreamReference);
dataPackage.Destroyed += (dp, o) => dataPackage.Destroyed += (dp, o) =>
{ {
Log.Debug("Destroyed."); Log.Debug("Destroyed.");
@ -151,7 +154,7 @@ namespace GreenshotWin10Plugin
deferral.Complete(); deferral.Complete();
}; };
dataTransferManagerHelper.ShowShareUi(); dataTransferManagerHelper.ShowShareUi();
return await taskCompletionSource.Task; return await taskCompletionSource.Task.ConfigureAwait(false);
} }
}).Result; }).Result;
if (string.IsNullOrWhiteSpace(exportTarget)) if (string.IsNullOrWhiteSpace(exportTarget))