Esempio n. 1
0
        async void OnDeferredDataRequestHandler(DataProviderRequest request)
        {
            var deferral = request.GetDeferral();

            try
            {
                var clipboardFormat = StandardToCfFormat(request.FormatId);
                var data            = await(m_requesters?[m_lastCopyId]?.GetDataAsync(clipboardFormat)
                                            ?? Task.FromResult <string>(null));

                // Get and put data in request
                var norm = NormalizeClipboardData(new ClipboardData {
                    cf = clipboardFormat, data = data
                });
                if (norm.cf == request.FormatId)
                {
                    request.SetData(norm.data);
                }
            }
            catch (Exception) { }
            finally
            {
                deferral.Complete();
            }
        }
Esempio n. 2
0
        private void OnUpdateAll()
        {
            var today = DateTime.Today;

            foreach (var entry in Entries)
            {
                var request = DataProviderRequest.Create(entry.Stock, typeof(Price), today.Subtract(TimeSpan.FromDays(7)), today.AddDays(1));
                request.WithPreview = false;

                var series = new List <IFigure>();

                // fetch some more data because of weekends and public holidays
                // we will then take last one

                DataProvider.Fetch(request, series);

                entry.CurrentPrice = ( Price )series
                                     .OrderByDescending(d => d.Period)
                                     .First();

                // connect to stock so that we can save it later
                var existingPrice = entry.Stock.Prices.SingleOrDefault(p => p.Period.Equals(entry.CurrentPrice.Period));
                if (existingPrice != null)
                {
                    existingPrice.Value    = entry.CurrentPrice.Value;
                    existingPrice.Currency = entry.CurrentPrice.Currency;
                    existingPrice.Source   = entry.CurrentPrice.Source;
                }
                else
                {
                    entry.Stock.Prices.Add(entry.CurrentPrice);
                }
            }
        }
Esempio n. 3
0
        private async void OnDeferredImageRequestedHandler(DataProviderRequest request, DataPackage dp)
        {
            DataProviderDeferral deferral = request.GetDeferral();

            try
            {
                StorageFile img = await PictureHandler.AsStorageFile(Items.SelectedItem.Pixels, "ToShare.jpg");

                if (img != null)
                {
                    List <IStorageFile> imageItems = new List <IStorageFile>
                    {
                        img
                    };
                    dp.SetStorageItems(imageItems);

                    RandomAccessStreamReference imageStreamRef = RandomAccessStreamReference.CreateFromFile(img);
                    dp.Properties.Thumbnail = imageStreamRef;
                    dp.SetBitmap(imageStreamRef);
                }
            }
            catch (Exception e)
            {
                throw e;
            }
            deferral.Complete();
        }
        private async void OnDeferredImageRequestedHandler(DataProviderRequest providerRequest, StorageFile imageFile)
        {
            // In this delegate we provide updated Bitmap data using delayed rendering.

            if (imageFile != null)
            {
                // If the delegate is calling any asynchronous operations it needs to acquire the deferral first. This lets the
                // system know that you are performing some operations that might take a little longer and that the call to
                // SetData could happen after the delegate returns. Once you acquired the deferral object you must call Complete
                // on it after your final call to SetData.
                DataProviderDeferral       deferral       = providerRequest.GetDeferral();
                InMemoryRandomAccessStream inMemoryStream = new InMemoryRandomAccessStream();

                // Make sure to always call Complete when done with the deferral.
                try
                {
                    // Decode the image and re-encode it at 50% width and height.
                    IRandomAccessStream imageStream = await imageFile.OpenAsync(FileAccessMode.Read);

                    BitmapDecoder imageDecoder = await BitmapDecoder.CreateAsync(imageStream);

                    BitmapEncoder imageEncoder = await BitmapEncoder.CreateForTranscodingAsync(inMemoryStream, imageDecoder);

                    imageEncoder.BitmapTransform.ScaledWidth  = (uint)(imageDecoder.OrientedPixelWidth * 0.5);
                    imageEncoder.BitmapTransform.ScaledHeight = (uint)(imageDecoder.OrientedPixelHeight * 0.5);
                    await imageEncoder.FlushAsync();

                    providerRequest.SetData(RandomAccessStreamReference.CreateFromStream(inMemoryStream));
                }
                finally
                {
                    deferral.Complete();
                }
            }
        }
Esempio n. 5
0
        private async void OnDeferredPDFRequestedHandler(DataProviderRequest request)
        {
            LockDeferredPDFRequestedHandler = true;
            exportfile = await Windows.Storage.ApplicationData.Current.TemporaryFolder.CreateFileAsync("test_pull_sharing.pdf", CreationCollisionOption.ReplaceExisting);

            request.SetData(new List <IStorageItem> {
                exportfile
            });

            await this.Dispatcher.RunIdleAsync(async delegate(IdleDispatchedHandlerArgs args)
            {
                try
                {
                    var service = new StiPdfExportService();
                    await service.ExportPdfAsync(viewerControl.Report, exportfile, new StiPdfExportSettings());
                }
                finally
                {
                    LockDeferredPDFRequestedHandler = false;
                }
            });

            while (LockDeferredPDFRequestedHandler)
            {
                await Task.Delay(500);
            }

            var deferral = request.GetDeferral();

            deferral.Complete();
        }
Esempio n. 6
0
        async private static void OnDeferredImageRequestedHandler(DataProviderRequest request, StorageFile imageFile)
        {
            // Since this method is using "await" prior to setting the data in DataPackage,
            // deferral object must be used
            var deferral = request.GetDeferral();

            // Use try/finally to ensure that we always complete the deferral.
            try
            {
                using (var imageStream = await imageFile.OpenAsync(FileAccessMode.Read))
                {
                    // Decode the image
                    var imageDecoder = await BitmapDecoder.CreateAsync(imageStream);

                    // Re-encode the image at 50% width and height
                    var inMemoryStream = new InMemoryRandomAccessStream();
                    var imageEncoder   = await BitmapEncoder.CreateForTranscodingAsync(inMemoryStream, imageDecoder);

                    imageEncoder.BitmapTransform.ScaledWidth  = (uint)(imageDecoder.OrientedPixelWidth * 0.5);
                    imageEncoder.BitmapTransform.ScaledHeight = (uint)(imageDecoder.OrientedPixelHeight * 0.5);
                    await imageEncoder.FlushAsync();

                    request.SetData(RandomAccessStreamReference.CreateFromStream(inMemoryStream));
                }
            }
            finally
            {
                deferral.Complete();
            }

            MainPage.DisplayToast("Image has been set via deferral.");
        }
Esempio n. 7
0
        // 用户点击了分享目标后会调用此方法
        private async void OnDeferredImageRequestedHandler(DataProviderRequest providerRequest, StorageFile imageFile)
        {
            // 获取 DataProviderDeferral,以开始异步处理
            DataProviderDeferral       deferral       = providerRequest.GetDeferral();
            InMemoryRandomAccessStream inMemoryStream = new InMemoryRandomAccessStream();

            try
            {
                // 将用户选中的图片缩小一倍,然后再分享
                IRandomAccessStream imageStream = await imageFile.OpenAsync(FileAccessMode.Read);

                BitmapDecoder imageDecoder = await BitmapDecoder.CreateAsync(imageStream);

                BitmapEncoder imageEncoder = await BitmapEncoder.CreateForTranscodingAsync(inMemoryStream, imageDecoder);

                imageEncoder.BitmapTransform.ScaledWidth  = (uint)(imageDecoder.OrientedPixelWidth * 0.5);
                imageEncoder.BitmapTransform.ScaledHeight = (uint)(imageDecoder.OrientedPixelHeight * 0.5);
                await imageEncoder.FlushAsync();

                // 停 3 秒,以模拟长时间任务
                await Task.Delay(3000);

                providerRequest.SetData(RandomAccessStreamReference.CreateFromStream(inMemoryStream));
            }
            finally
            {
                // 完成异步操作
                deferral.Complete();
            }
        }
 private async void renderer(DataProviderRequest request)
 {
     await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, async() => {
         var deferral = request.GetDeferral();
         request.SetData(await GetImage());
         deferral.Complete();
     });
 }
Esempio n. 9
0
        private async Task ForcedDelayDataProviderCallback(DataProviderRequest request, Func <Object> valueRetrievalCallback)
        {
            var deferral = request.GetDeferral();
            await Task.Delay(TimeSpan.FromSeconds(10));

            request.SetData(valueRetrievalCallback());
            deferral.Complete();
        }
Esempio n. 10
0
        private async void ProvideData(DataProviderRequest request)
        {
            DataProviderDeferral deferral = request.GetDeferral();
            var stream = new InMemoryRandomAccessStream();
            await Graph.SaveImageAsync(stream);

            request.SetData(RandomAccessStreamReference.CreateFromStream(stream));
            deferral.Complete();
        }
Esempio n. 11
0
        private void OnImport(FigureSeries series, bool withPreview)
        {
            var currentYear = DateTime.Now.Year;

            var request = DataProviderRequest.Create(Stock, series.FigureType, currentYear - 10, currentYear);

            request.WithPreview = withPreview;

            DataProvider.Fetch(request, series);
        }
Esempio n. 12
0
        public void Fetch(DataProviderRequest request, ICollection <IFigure> resultContainer)
        {
            var previewViewModel = new ImportPreviewModel(myStorageService, myLutService.CurrenciesLut)
            {
                Stock                 = request.Stock,
                From                  = request.From,
                To                    = request.To,
                Series                = resultContainer,
                ThrowOnError          = request.ThrowOnError,
                CustomResolverCreator = CustomResolverCreator
            };

            if (request.WithPreview)
            {
                if (myCurrencyCache.Isin == request.Stock.Isin)
                {
                    // take over last setting from user
                    previewViewModel.Currency = myCurrencyCache.Currency;
                }

                var preview = new ImportPreview(previewViewModel);

                previewViewModel.FinishAction = () =>
                {
                    preview.Close();

                    // remember last setting from user
                    if (previewViewModel.Currency != null)
                    {
                        myCurrencyCache.Isin     = previewViewModel.Stock.Isin;
                        myCurrencyCache.Currency = previewViewModel.Currency;
                    }
                };
                preview.DataContext = previewViewModel;

                previewViewModel.Fetch(request.FigureType);

                preview.Top  = 0;
                preview.Left = 0;
                preview.Show();
            }
            else
            {
                previewViewModel.Browser = new SafeWebBrowser();
                previewViewModel.Fetch(request.FigureType);
                previewViewModel.PublishData();
            }
        }
Esempio n. 13
0
        private void OnImportPrice(bool withPreview)
        {
            var today = DateTime.Today;

            var request = DataProviderRequest.Create(Stock, typeof(Price), today.Subtract(TimeSpan.FromDays(7)), today.AddDays(1));

            request.WithPreview = withPreview;

            var series = new ObservableCollection <IFigure>();

            CollectionChangedEventManager.AddHandler(series, OnSeriesChanged);

            // fetch some more data because of weekends and public holidays
            // we will then take last one

            DataProvider.Fetch(request, series);
        }
Esempio n. 14
0
        public void GetSeries()
        {
            var stock = new Stock {
                Isin = "DE0005190003"
            };

            stock.Company = new Company {
                Name = "BMW"
            };
            stock.Company.Stocks.Add(stock);

            var dataProvider = new WebFigureProvider(new StorageService(myProjectHost.Object), myLutService.Object);

            dataProvider.CustomResolverCreator = r => new CompositeMacroResolver(new MacroResolver(TestDataRoot), r);

            var request = new DataProviderRequest(stock, typeof(Dividend), new YearPeriod(2001), new YearPeriod(2004))
            {
                WithPreview  = false,
                ThrowOnError = true
            };

            var series = new List <IFigure>();

            dataProvider.Fetch(request, series);

            Assert.That(series.Count, Is.EqualTo(4));

            foreach (var dividend in series.Cast <Dividend>())
            {
                Assert.That(dividend.Company.Stocks.First().Isin, Is.EqualTo("DE0005190003"));
                Assert.That(dividend.Period, Is.InstanceOf <YearPeriod>());
                Assert.That(dividend.Source, Does.Contain("ariva").IgnoreCase.And.Contains("fundamentals").IgnoreCase);
                Assert.That(dividend.Timestamp.Date, Is.EqualTo(DateTime.Today));
                Assert.That(dividend.Currency, Is.Null);
            }

            Assert.That(series[0].Period, Is.EqualTo(new YearPeriod(2001)));
            Assert.That(series[0].Value, Is.EqualTo(350000000d));
            Assert.That(series[1].Period, Is.EqualTo(new YearPeriod(2002)));
            Assert.That(series[1].Value, Is.EqualTo(351000000d));
            Assert.That(series[2].Period, Is.EqualTo(new YearPeriod(2003)));
            Assert.That(series[2].Value, Is.EqualTo(392000000d));
            Assert.That(series[3].Period, Is.EqualTo(new YearPeriod(2004)));
            Assert.That(series[3].Value, Is.EqualTo(419000000d));
        }
Esempio n. 15
0
        private void OnShareBitmapData(DataProviderRequest request)
        {
            var deferral = request.GetDeferral();

            Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async() =>
            {
                try
                {
                    var file = await ApplicationData.Current.TemporaryFolder.
                               CreateFileAsync("TempImage.png",
                                               CreationCollisionOption.ReplaceExisting);

                    // Render XAML control to PNG image
                    using (var stream = await file.OpenAsync(FileAccessMode.ReadWrite))
                    {
                        var renderTargetBitmap = new RenderTargetBitmap();
                        await renderTargetBitmap.RenderAsync(SharedControl);
                        var pixelBuffer = await renderTargetBitmap.GetPixelsAsync();

                        var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, stream);
                        encoder.SetPixelData(
                            BitmapPixelFormat.Bgra8,
                            BitmapAlphaMode.Straight,
                            (uint)renderTargetBitmap.PixelWidth,
                            (uint)renderTargetBitmap.PixelHeight,
                            96, 96,
                            pixelBuffer.ToArray());

                        await encoder.FlushAsync();
                    }

                    // Share file
                    request.SetData(RandomAccessStreamReference.CreateFromFile(file));
                }
                finally
                {
                    deferral.Complete();
                }
            });
        }
        async private void OnDeferredImageRequestedHandler(DataProviderRequest request, StorageFile imageFile)
        {
            if (imageFile != null)
            {
                // Since this method is using "await" prior to setting the data in DataPackage,
                // deferral object must be used
                var deferral = request.GetDeferral();

                // Surround try catch to ensure that we always call Complete on defferal.
                try
                {
                    using (var imageStream = await imageFile.OpenAsync(FileAccessMode.Read))
                    {
                        // Decode the image
                        var imageDecoder = await BitmapDecoder.CreateAsync(imageStream);

                        // Re-encode the image at 50% width and height
                        var inMemoryStream = new InMemoryRandomAccessStream();
                        var imageEncoder   = await BitmapEncoder.CreateForTranscodingAsync(inMemoryStream, imageDecoder);

                        imageEncoder.BitmapTransform.ScaledWidth  = (uint)(imageDecoder.OrientedPixelWidth * 0.5);
                        imageEncoder.BitmapTransform.ScaledHeight = (uint)(imageDecoder.OrientedPixelHeight * 0.5);
                        await imageEncoder.FlushAsync();

                        request.SetData(RandomAccessStreamReference.CreateFromStream(inMemoryStream));
                    }
                }
                finally
                {
                    deferral.Complete();
                }

                await log(OutputText, "Image has been set via deferral");
            }
            else
            {
                await log(OutputText, "Error: imageFile is null");
            }
        }
Esempio n. 17
0
        private async void OnDeferredImageRequestedHandler(DataProviderRequest request)
        {
            // Request deferral to wait for async calls
            DataProviderDeferral deferral = request.GetDeferral();

            // XAML objects can only be accessed on the UI thread, and the call may come in on a background thread
            await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, async() =>
            {
                try
                {
                    RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap();
                    InMemoryRandomAccessStream stream     = new InMemoryRandomAccessStream();
                    // Render to an image at the current system scale and retrieve pixel contents
                    await renderTargetBitmap.RenderAsync(collageCanvas);
                    var pixelBuffer = await renderTargetBitmap.GetPixelsAsync();

                    // Encode image to an in-memory stream
                    var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, stream);

                    encoder.SetPixelData(
                        BitmapPixelFormat.Bgra8,
                        BitmapAlphaMode.Ignore,
                        (uint)renderTargetBitmap.PixelWidth,
                        (uint)renderTargetBitmap.PixelHeight,
                        DisplayInformation.GetForCurrentView().LogicalDpi,
                        DisplayInformation.GetForCurrentView().LogicalDpi,
                        pixelBuffer.ToArray());

                    await encoder.FlushAsync();

                    // Set content of the DataProviderRequest to the encoded image in memory
                    request.SetData(RandomAccessStreamReference.CreateFromStream(stream));
                }
                finally
                {
                    deferral.Complete();
                }
            });
        }
Esempio n. 18
0
        private void OnDeferredImageRequestedHandler(DataProviderRequest request)
        {
            if (_url != null)
            {
                // If the delegate is calling any asynchronous operations it needs to acquire
                // the deferral first. This lets the system know that you are performing some
                // operations that might take a little longer and that the call to SetData
                // could happen after the delegate returns. Once you acquired the deferral object
                // you must call Complete on it after your final call to SetData.
                DataProviderDeferral deferral = request.GetDeferral();

                // Make sure to always call Complete when finished with the deferral.
                try
                {
                    request.SetData(_url);
                }
                finally
                {
                    deferral.Complete();
                }
            }
        }
        // <SnippetShareFileFunction_CS>
        async void OnDeferredImageRequestedHandler(DataProviderRequest request)
        {
            // Provide updated bitmap data using delayed rendering.
            if (this.imageStream != null)
            {
                DataProviderDeferral       deferral       = request.GetDeferral();
                InMemoryRandomAccessStream inMemoryStream = new InMemoryRandomAccessStream();

                // Decode the image.
                BitmapDecoder imageDecoder = await BitmapDecoder.CreateAsync(this.imageStream);

                // Re-encode the image at 50% width and height.
                BitmapEncoder imageEncoder = await BitmapEncoder.CreateForTranscodingAsync(inMemoryStream, imageDecoder);

                imageEncoder.BitmapTransform.ScaledWidth  = (uint)(imageDecoder.OrientedPixelHeight * 0.5);
                imageEncoder.BitmapTransform.ScaledHeight = (uint)(imageDecoder.OrientedPixelHeight * 0.5);
                await imageEncoder.FlushAsync();

                request.SetData(RandomAccessStreamReference.CreateFromStream(inMemoryStream));
                deferral.Complete();
            }
        }
        //<SnippetShareFileFunction_CS>
        //<SnippetShareFileFunction>
        async void OnDeferredImageRequestedHandler(DataProviderRequest request)
        {
            // Here we provide updated Bitmap data using delayed rendering
            if (this.imageStream != null)
            {
                //<SnippetGetDefferal_CS>
                //<SnippetGetDefferal>
                DataProviderDeferral deferral = request.GetDeferral();
                //</SnippetGetDefferal>
                //</SnippetGetDefferal_CS>

                try
                {
                    InMemoryRandomAccessStream inMemoryStream = new InMemoryRandomAccessStream();

                    // Decode the image
                    BitmapDecoder imageDecoder = await BitmapDecoder.CreateAsync(this.imageStream);

                    // Re-encode the image at 50% width and height
                    BitmapEncoder imageEncoder = await BitmapEncoder.CreateForTranscodingAsync(inMemoryStream, imageDecoder);

                    imageEncoder.BitmapTransform.ScaledWidth  = (uint)(imageDecoder.OrientedPixelHeight * 0.5);
                    imageEncoder.BitmapTransform.ScaledHeight = (uint)(imageDecoder.OrientedPixelHeight * 0.5);
                    await imageEncoder.FlushAsync();

                    request.SetData(RandomAccessStreamReference.CreateFromStream(inMemoryStream));
                }

                catch (Exception ex)
                {
                    // Handle the exception
                }

                finally
                {
                    deferral.Complete();
                }
            }
        }
Esempio n. 21
0
        public void GetCell()
        {
            var stock = new Stock {
                Isin = "DE0007664039"
            };

            stock.Company = new Company {
                Name = "Volkswagen"
            };
            stock.Company.Stocks.Add(stock);

            var dataProvider = new WebFigureProvider(new StorageService(myProjectHost.Object), myLutService.Object);

            dataProvider.CustomResolverCreator = r => new CompositeMacroResolver(new MacroResolver(TestDataRoot), r);

            var request = new DataProviderRequest(stock, typeof(Price), new DayPeriod(DateTime.MinValue), new DayPeriod(DateTime.MaxValue))
            {
                WithPreview  = false,
                ThrowOnError = true
            };

            var series = new List <IFigure>();

            dataProvider.Fetch(request, series);

            Assert.That(series.Count, Is.EqualTo(1));

            var price = ( Price )series.Single();

            Assert.That(price.Stock.Isin, Is.EqualTo("DE0007664039"));
            Assert.That((( DayPeriod )price.Period).Day.Date, Is.EqualTo(DateTime.Today));
            Assert.That(price.Source, Does.Contain("ariva").IgnoreCase.And.Contains("price").IgnoreCase);
            Assert.That(price.Timestamp.Date, Is.EqualTo(DateTime.Today));
            Assert.That(price.Value, Is.EqualTo(134.356d));
            Assert.That(price.Currency.Symbol, Is.EqualTo("EUR"));
        }
Esempio n. 22
0
 private void OnDeferredDataRequestedHandler(DataProviderRequest request)
 {
 }
Esempio n. 23
0
        private void OnDeferredTextRequestedHandler(DataProviderRequest providerRequest)
        {
            string text = "Hello World delayed";

            providerRequest.SetData(text);
        }