private async void AddFile_Click(object sender, RoutedEventArgs e) { FileOpenPicker Picker = new FileOpenPicker { SuggestedStartLocation = PickerLocationId.ComputerFolder, ViewMode = PickerViewMode.Thumbnail }; Picker.FileTypeFilter.Add("*"); IReadOnlyList <StorageFile> FileList = await Picker.PickMultipleFilesAsync(); if (FileList.Count > 0) { ActivateLoading(true, true); Cancellation = new CancellationTokenSource(); try { foreach (string OriginFilePath in FileList.Select((Item) => Item.Path)) { if (await FileSystemStorageItemBase.OpenAsync(OriginFilePath) is FileSystemStorageFile File) { if (await File.EncryptAsync(SecureFolder.Path, EncryptionAESKey, AESKeySize, Cancellation.Token) is FileSystemStorageFile EncryptedFile) { SecureCollection.Add(EncryptedFile); await File.DeleteAsync(false); } else { QueueContentDialog Dialog = new QueueContentDialog { Title = Globalization.GetString("Common_Dialog_ErrorTitle"), Content = Globalization.GetString("QueueDialog_EncryptError_Content"), CloseButtonText = Globalization.GetString("Common_Dialog_CloseButton") }; _ = await Dialog.ShowAsync(); } } } } catch (TaskCanceledException cancelException) { LogTracer.Log(cancelException, "Import items to SecureArea have been cancelled"); } catch (Exception ex) { LogTracer.Log(ex, "An exception was threw when importing file"); QueueContentDialog Dialog = new QueueContentDialog { Title = Globalization.GetString("Common_Dialog_ErrorTitle"), Content = Globalization.GetString("QueueDialog_EncryptError_Content"), CloseButtonText = Globalization.GetString("Common_Dialog_CloseButton") }; _ = await Dialog.ShowAsync(); } finally { Cancellation.Dispose(); Cancellation = null; await Task.Delay(1500); ActivateLoading(false); } } }
private async void Grid_Drop(object sender, DragEventArgs e) { try { if (e.DataView.Contains(StandardDataFormats.StorageItems)) { IReadOnlyList <IStorageItem> Items = await e.DataView.GetStorageItemsAsync(); if (Items.Any((Item) => Item.IsOfType(StorageItemTypes.Folder))) { QueueContentDialog Dialog = new QueueContentDialog { Title = Globalization.GetString("Common_Dialog_TipTitle"), Content = Globalization.GetString("QueueDialog_SecureAreaImportFiliter_Content"), CloseButtonText = Globalization.GetString("Common_Dialog_CloseButton") }; _ = await Dialog.ShowAsync(); } if (Items.Any((Item) => Item.IsOfType(StorageItemTypes.File))) { ActivateLoading(true, true); Cancellation = new CancellationTokenSource(); try { foreach (string OriginFilePath in Items.Select((Item) => Item.Path)) { if (await FileSystemStorageItemBase.OpenAsync(OriginFilePath) is FileSystemStorageFile File) { if (await File.EncryptAsync(SecureFolder.Path, EncryptionAESKey, AESKeySize, Cancellation.Token) is FileSystemStorageFile EncryptedFile) { SecureCollection.Add(EncryptedFile); await File.DeleteAsync(false); } else { QueueContentDialog Dialog = new QueueContentDialog { Title = Globalization.GetString("Common_Dialog_ErrorTitle"), Content = Globalization.GetString("QueueDialog_EncryptError_Content"), CloseButtonText = Globalization.GetString("Common_Dialog_CloseButton") }; _ = await Dialog.ShowAsync(); } } } } catch (TaskCanceledException cancelException) { LogTracer.Log(cancelException, "Import items to SecureArea have been cancelled"); } catch (Exception ex) { LogTracer.Log(ex, "An error was threw when importing file"); QueueContentDialog Dialog = new QueueContentDialog { Title = Globalization.GetString("Common_Dialog_ErrorTitle"), Content = Globalization.GetString("QueueDialog_EncryptError_Content"), CloseButtonText = Globalization.GetString("Common_Dialog_CloseButton") }; _ = await Dialog.ShowAsync(); } finally { Cancellation.Dispose(); Cancellation = null; await Task.Delay(1000); ActivateLoading(false); } } } } catch (Exception ex) when(ex.HResult is unchecked ((int)0x80040064)or unchecked ((int)0x8004006A)) { QueueContentDialog dialog = new QueueContentDialog { Title = Globalization.GetString("Common_Dialog_ErrorTitle"), Content = Globalization.GetString("QueueDialog_CopyFromUnsupportedArea_Content"), CloseButtonText = Globalization.GetString("Common_Dialog_CloseButton") }; _ = await dialog.ShowAsync(); } catch { QueueContentDialog dialog = new QueueContentDialog { Title = Globalization.GetString("Common_Dialog_ErrorTitle"), Content = Globalization.GetString("QueueDialog_FailToGetClipboardError_Content"), CloseButtonText = Globalization.GetString("Common_Dialog_CloseButton") }; _ = await dialog.ShowAsync(); } }
private async Task Initialize() { try { ExitLocker = new ManualResetEvent(false); Cancellation = new CancellationTokenSource(); LoadQueue = new Queue <int>(); Behavior.Attach(Flip); if (await FileSystemStorageItemBase.OpenAsync(Path.GetDirectoryName(SelectedPhotoFile.Path)) is FileSystemStorageFolder Item) { FileSystemStorageFile[] PictureFileList = (await Item.GetChildItemsAsync(SettingControl.IsDisplayHiddenItem, SettingControl.IsDisplayProtectedSystemItems, Filter: ItemFilters.File)).OfType <FileSystemStorageFile>().Where((Item) => Item.Type.Equals(".png", StringComparison.OrdinalIgnoreCase) || Item.Type.Equals(".jpg", StringComparison.OrdinalIgnoreCase) || Item.Type.Equals(".bmp", StringComparison.OrdinalIgnoreCase)).ToArray(); if (PictureFileList.Length == 0) { QueueContentDialog Dialog = new QueueContentDialog { Title = Globalization.GetString("Common_Dialog_ErrorTitle"), Content = Globalization.GetString("Queue_Dialog_ImageReadError_Content"), CloseButtonText = Globalization.GetString("Common_Dialog_GoBack") }; _ = await Dialog.ShowAsync(); Frame.GoBack(); } else { int LastSelectIndex = Array.FindIndex(PictureFileList, (Photo) => Photo.Path.Equals(SelectedPhotoFile.Path, StringComparison.OrdinalIgnoreCase)); if (LastSelectIndex < 0 || LastSelectIndex >= PictureFileList.Length) { LastSelectIndex = 0; } PhotoCollection = new ObservableCollection <PhotoDisplaySupport>(PictureFileList.Select((Item) => new PhotoDisplaySupport(Item))); Flip.ItemsSource = PhotoCollection; if (!await PhotoCollection[LastSelectIndex].ReplaceThumbnailBitmapAsync()) { CouldnotLoadTip.Visibility = Visibility.Visible; } for (int i = LastSelectIndex - 5 > 0 ? LastSelectIndex - 5 : 0; i <= (LastSelectIndex + 5 < PhotoCollection.Count - 1 ? LastSelectIndex + 5 : PhotoCollection.Count - 1) && !Cancellation.IsCancellationRequested; i++) { await PhotoCollection[i].GenerateThumbnailAsync(); } if (!Cancellation.IsCancellationRequested) { Flip.SelectedIndex = LastSelectIndex; Flip.SelectionChanged += Flip_SelectionChanged; Flip.SelectionChanged += Flip_SelectionChanged1; EnterAnimation.Begin(); } } } else { throw new FileNotFoundException(); } } catch (Exception ex) { CouldnotLoadTip.Visibility = Visibility.Visible; LogTracer.Log(ex, "An error was threw when initialize PhotoViewer"); } finally { ExitLocker.Set(); } }
private async Task OnLaunchOrOnActivate(IActivatedEventArgs args) { SystemInformation.Instance.TrackAppUse(args); ApplicationViewTitleBar TitleBar = ApplicationView.GetForCurrentView().TitleBar; TitleBar.ButtonBackgroundColor = Colors.Transparent; TitleBar.ButtonInactiveBackgroundColor = Colors.Transparent; TitleBar.ButtonForegroundColor = AppThemeController.Current.Theme == ElementTheme.Dark ? Colors.White : Colors.Black; CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar = true; switch (args) { case LaunchActivatedEventArgs LaunchArgs: { if (Window.Current.Content is Frame frame) { if (frame.Content is MainPage Main && Main.Nav.Content is TabViewContainer TabContainer) { if (!string.IsNullOrWhiteSpace(LaunchArgs.Arguments) && await FileSystemStorageItemBase.CheckExistAsync(LaunchArgs.Arguments)) { await TabContainer.CreateNewTabAsync(LaunchArgs.Arguments); } else { await TabContainer.CreateNewTabAsync(); } } } else { if (string.IsNullOrWhiteSpace(LaunchArgs.Arguments) || !await FileSystemStorageItemBase.CheckExistAsync(LaunchArgs.Arguments)) { await LaunchWithStartupMode(LaunchArgs); } else { ExtendedSplash extendedSplash = new ExtendedSplash(LaunchArgs.SplashScreen, new List <string[]> { new string[] { LaunchArgs.Arguments } }); Window.Current.Content = extendedSplash; } } break; } case CommandLineActivatedEventArgs CmdArgs: { string[] Arguments = CmdArgs.Operation.Arguments.Split(" ", StringSplitOptions.RemoveEmptyEntries); if (Window.Current.Content is Frame frame) { if (frame.Content is MainPage Main && Main.Nav.Content is TabViewContainer TabContainer) { if (Arguments.Length > 1) { string Path = string.Join(" ", Arguments.Skip(1)); if (string.IsNullOrWhiteSpace(Path) || Regex.IsMatch(Path, @"::\{[0-9A-F\-]+\}", RegexOptions.IgnoreCase)) { await TabContainer.CreateNewTabAsync(); } else { await TabContainer.CreateNewTabAsync(Path == "."?CmdArgs.Operation.CurrentDirectoryPath : Path); } } else { await TabContainer.CreateNewTabAsync(); } } } else { string Path = string.Join(" ", Arguments.Skip(1)); if (Arguments.Length > 1) { if (string.IsNullOrWhiteSpace(Path) || Regex.IsMatch(Path, @"::\{[0-9A-F\-]+\}", RegexOptions.IgnoreCase)) { await LaunchWithStartupMode(CmdArgs); } else { ExtendedSplash extendedSplash = new ExtendedSplash(CmdArgs.SplashScreen, new List <string[]> { new string[] { Path == "." ? CmdArgs.Operation.CurrentDirectoryPath : Path } }); Window.Current.Content = extendedSplash; } } else { await LaunchWithStartupMode(CmdArgs); } } break; } case ProtocolActivatedEventArgs ProtocalArgs: { if (!string.IsNullOrWhiteSpace(ProtocalArgs.Uri.AbsolutePath)) { ExtendedSplash extendedSplash = new ExtendedSplash(ProtocalArgs.SplashScreen, new List <string[]> { Uri.UnescapeDataString(ProtocalArgs.Uri.AbsolutePath).Split("||", StringSplitOptions.RemoveEmptyEntries) }); Window.Current.Content = extendedSplash; } else { ExtendedSplash extendedSplash = new ExtendedSplash(ProtocalArgs.SplashScreen); Window.Current.Content = extendedSplash; } break; } case not ToastNotificationActivatedEventArgs: { ExtendedSplash extendedSplash = new ExtendedSplash(args.SplashScreen); Window.Current.Content = extendedSplash; break; } } Window.Current.Activate(); }
private async void Grid_Drop(object sender, DragEventArgs e) { if (e.DataView.Contains(StandardDataFormats.StorageItems)) { IReadOnlyList <IStorageItem> Items = await e.DataView.GetStorageItemsAsync(); if (Items.Any((Item) => Item.IsOfType(StorageItemTypes.Folder))) { QueueContentDialog Dialog = new QueueContentDialog { Title = Globalization.GetString("Common_Dialog_TipTitle"), Content = Globalization.GetString("QueueDialog_SecureAreaImportFiliter_Content"), CloseButtonText = Globalization.GetString("Common_Dialog_CloseButton") }; _ = await Dialog.ShowAsync().ConfigureAwait(true); } if (Items.Any((Item) => Item.IsOfType(StorageItemTypes.File))) { ActivateLoading(true, true); Cancellation = new CancellationTokenSource(); try { foreach (string OriginFilePath in Items.Select((Item) => Item.Path)) { if (FileSystemStorageItemBase.Open(OriginFilePath, ItemFilters.File) is FileSystemStorageItemBase Item) { if (await Item.EncryptAsync(SecureFolder.Path, EncryptionAESKey, AESKeySize, Cancellation.Token).ConfigureAwait(true) is SecureAreaStorageItem EncryptedFile) { SecureCollection.Add(EncryptedFile); if (!Item.PermanentDelete()) { LogTracer.Log(new Win32Exception(Marshal.GetLastWin32Error()), "Delete origin file failed after importing to SecureArea"); } } else { QueueContentDialog Dialog = new QueueContentDialog { Title = Globalization.GetString("Common_Dialog_ErrorTitle"), Content = Globalization.GetString("QueueDialog_EncryptError_Content"), CloseButtonText = Globalization.GetString("Common_Dialog_CloseButton") }; _ = await Dialog.ShowAsync().ConfigureAwait(true); } } } } catch (TaskCanceledException cancelException) { LogTracer.Log(cancelException, "Import items to SecureArea have been cancelled"); } catch (Exception ex) { LogTracer.Log(ex, "An error was threw when importing file"); QueueContentDialog Dialog = new QueueContentDialog { Title = Globalization.GetString("Common_Dialog_ErrorTitle"), Content = Globalization.GetString("QueueDialog_EncryptError_Content"), CloseButtonText = Globalization.GetString("Common_Dialog_CloseButton") }; _ = await Dialog.ShowAsync().ConfigureAwait(true); } finally { Cancellation.Dispose(); Cancellation = null; await Task.Delay(1000).ConfigureAwait(true); ActivateLoading(false); } } } }
private async void QuickStartGridView_ItemClick(object sender, ItemClickEventArgs e) { if (e.ClickedItem is QuickStartItem Item) { if ((sender as GridView).Name == nameof(QuickStartGridView)) { if (Uri.TryCreate(Item.Protocol, UriKind.Absolute, out Uri Ur)) { if (Ur.IsFile) { if (await FileSystemStorageItemBase.CheckExistAsync(Item.Protocol)) { using (FullTrustProcessController.ExclusiveUsage Exclusive = await FullTrustProcessController.GetAvailableController()) { try { if (Path.GetExtension(Item.Protocol).ToLower() == ".msc") { if (!await Exclusive.Controller.RunAsync("powershell.exe", string.Empty, WindowState.Normal, false, true, false, "-Command", Item.Protocol)) { QueueContentDialog Dialog = new QueueContentDialog { Title = Globalization.GetString("Common_Dialog_ErrorTitle"), Content = Globalization.GetString("QueueDialog_LaunchFailed_Content"), CloseButtonText = Globalization.GetString("Common_Dialog_CloseButton") }; await Dialog.ShowAsync(); } } else { if (!await Exclusive.Controller.RunAsync(Item.Protocol, Path.GetDirectoryName(Item.Protocol))) { QueueContentDialog Dialog = new QueueContentDialog { Title = Globalization.GetString("Common_Dialog_ErrorTitle"), Content = Globalization.GetString("QueueDialog_LaunchFailed_Content"), CloseButtonText = Globalization.GetString("Common_Dialog_CloseButton") }; await Dialog.ShowAsync(); } } } catch (Exception ex) { LogTracer.Log(ex, "Could not execute program in quick start"); } } } else { QueueContentDialog Dialog = new QueueContentDialog { Title = Globalization.GetString("Common_Dialog_ErrorTitle"), Content = Globalization.GetString("QueueDialog_ApplicationNotFound_Content"), CloseButtonText = Globalization.GetString("Common_Dialog_CloseButton") }; await Dialog.ShowAsync(); } } else { await Launcher.LaunchUriAsync(Ur); } } else { using (FullTrustProcessController.ExclusiveUsage Exclusive = await FullTrustProcessController.GetAvailableController()) { if (!await Exclusive.Controller.LaunchUWPLnkAsync(Item.Protocol)) { QueueContentDialog Dialog = new QueueContentDialog { Title = Globalization.GetString("Common_Dialog_ErrorTitle"), Content = Globalization.GetString("QueueDialog_LaunchFailed_Content"), CloseButtonText = Globalization.GetString("Common_Dialog_CloseButton") }; await Dialog.ShowAsync(); } } } } else { await Launcher.LaunchUriAsync(new Uri(Item.Protocol)); } } }
public PropertyDialog(FileSystemStorageItemBase Item) { InitializeComponent(); this.Item = Item; Loading += PropertyDialog_Loading; }
protected override async void OnLaunched(LaunchActivatedEventArgs e) { SystemInformation.Instance.TrackAppUse(e); ApplicationViewTitleBar TitleBar = ApplicationView.GetForCurrentView().TitleBar; TitleBar.ButtonBackgroundColor = Colors.Transparent; TitleBar.ButtonInactiveBackgroundColor = Colors.Transparent; TitleBar.ButtonForegroundColor = AppThemeController.Current.Theme == ElementTheme.Dark ? Colors.White : "#1E1E1E".ToColor(); CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar = true; if (Window.Current.Content is Frame frame) { if (frame.Content is MainPage Main && Main.Nav.Content is TabViewContainer TabContainer) { if (!string.IsNullOrWhiteSpace(e.Arguments) && await FileSystemStorageItemBase.CheckExistAsync(e.Arguments)) { await TabContainer.CreateNewTabAsync(e.Arguments); } else { await TabContainer.CreateNewTabAsync(); } } } else { if (!string.IsNullOrWhiteSpace(e.Arguments) && await FileSystemStorageItemBase.CheckExistAsync(e.Arguments)) { ExtendedSplash extendedSplash = new ExtendedSplash(e.SplashScreen, new List <string[]> { new string[] { e.Arguments } }); Window.Current.Content = extendedSplash; } else { StartupMode Mode = StartupModeController.GetStartupMode(); switch (Mode) { case StartupMode.CreateNewTab: { ExtendedSplash extendedSplash = new ExtendedSplash(e.SplashScreen); Window.Current.Content = extendedSplash; break; } case StartupMode.LastOpenedTab: { List <string[]> LastOpenedPathArray = await StartupModeController.GetAllPathAsync(Mode).ToListAsync(); StartupModeController.Clear(StartupMode.LastOpenedTab); if (LastOpenedPathArray.Count == 0) { ExtendedSplash extendedSplash = new ExtendedSplash(e.SplashScreen); Window.Current.Content = extendedSplash; } else { ExtendedSplash extendedSplash = new ExtendedSplash(e.SplashScreen, LastOpenedPathArray); Window.Current.Content = extendedSplash; } break; } case StartupMode.SpecificTab: { string[] SpecificPathArray = await StartupModeController.GetAllPathAsync(Mode).Select((Item) => Item.FirstOrDefault()).OfType <string>().ToArrayAsync(); if (SpecificPathArray.Length == 0) { ExtendedSplash extendedSplash = new ExtendedSplash(e.SplashScreen); Window.Current.Content = extendedSplash; } else { ExtendedSplash extendedSplash = new ExtendedSplash(e.SplashScreen, SpecificPathArray); Window.Current.Content = extendedSplash; } break; } } } } Window.Current.Activate(); }
private async void ProgramPickerDialog_Loading(FrameworkElement sender, object args) { LoadingText.Visibility = Visibility.Visible; WholeArea.Visibility = Visibility.Collapsed; List <ProgramPickerItem> RecommandList = new List <ProgramPickerItem>(); try { using (FullTrustProcessController.ExclusiveUsage Exclusive = await FullTrustProcessController.GetAvailableController()) { IReadOnlyList <AssociationPackage> AssocList = await Exclusive.Controller.GetAssociationFromPathAsync(OpenFile.Path); IReadOnlyList <AppInfo> AppInfoList = await Launcher.FindFileHandlersAsync(OpenFile.Type); await SQLite.Current.UpdateProgramPickerRecordAsync(OpenFile.Type, AssocList.Concat(AppInfoList.Select((Info) => new AssociationPackage(OpenFile.Type, Info.PackageFamilyName, true))).ToArray()); foreach (AppInfo Info in AppInfoList) { try { using (IRandomAccessStreamWithContentType LogoStream = await Info.DisplayInfo.GetLogo(new Windows.Foundation.Size(128, 128)).OpenReadAsync()) { BitmapDecoder Decoder = await BitmapDecoder.CreateAsync(LogoStream); using (SoftwareBitmap SBitmap = await Decoder.GetSoftwareBitmapAsync(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Premultiplied)) using (SoftwareBitmap ResizeBitmap = ComputerVisionProvider.ResizeToActual(SBitmap)) using (InMemoryRandomAccessStream Stream = new InMemoryRandomAccessStream()) { BitmapEncoder Encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, Stream); Encoder.SetSoftwareBitmap(ResizeBitmap); await Encoder.FlushAsync(); BitmapImage Image = new BitmapImage(); await Image.SetSourceAsync(Stream); RecommandList.Add(new ProgramPickerItem(Image, Info.DisplayInfo.DisplayName, Info.DisplayInfo.Description, Info.PackageFamilyName)); } } } catch (Exception ex) { LogTracer.Log(ex, "An exception was threw when getting or processing App Logo"); } } } } catch (Exception ex) { LogTracer.Log(ex, "An exception was threw when fetching association data"); } foreach (AssociationPackage Package in await SQLite.Current.GetProgramPickerRecordAsync(OpenFile.Type, false)) { try { if (await FileSystemStorageItemBase.CheckExistAsync(Package.ExecutablePath)) { StorageFile ExecuteFile = await StorageFile.GetFileFromPathAsync(Package.ExecutablePath); IDictionary <string, object> PropertiesDictionary = await ExecuteFile.Properties.RetrievePropertiesAsync(new string[] { "System.FileDescription" }); string ExtraAppName = string.Empty; if (PropertiesDictionary.TryGetValue("System.FileDescription", out object DescriptionRaw)) { ExtraAppName = Convert.ToString(DescriptionRaw); } if (await ExecuteFile.GetThumbnailRawStreamAsync() is IRandomAccessStream ThumbnailStream) { using (ThumbnailStream) { BitmapDecoder Decoder = await BitmapDecoder.CreateAsync(ThumbnailStream); using (SoftwareBitmap SBitmap = await Decoder.GetSoftwareBitmapAsync(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Premultiplied)) using (SoftwareBitmap ResizeBitmap = ComputerVisionProvider.ResizeToActual(SBitmap)) using (InMemoryRandomAccessStream ResizeBitmapStream = new InMemoryRandomAccessStream()) { BitmapEncoder Encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, ResizeBitmapStream); Encoder.SetSoftwareBitmap(ResizeBitmap); await Encoder.FlushAsync(); BitmapImage ThumbnailBitmap = new BitmapImage(); await ThumbnailBitmap.SetSourceAsync(ResizeBitmapStream); if (Package.IsRecommanded) { RecommandList.Add(new ProgramPickerItem(ThumbnailBitmap, string.IsNullOrEmpty(ExtraAppName) ? ExecuteFile.DisplayName : ExtraAppName, Globalization.GetString("Application_Admin_Name"), ExecuteFile.Path)); } else { NotRecommandList.Add(new ProgramPickerItem(ThumbnailBitmap, string.IsNullOrEmpty(ExtraAppName) ? ExecuteFile.DisplayName : ExtraAppName, Globalization.GetString("Application_Admin_Name"), ExecuteFile.Path)); } } } } else { if (Package.IsRecommanded) { RecommandList.Add(new ProgramPickerItem(new BitmapImage(AppThemeController.Current.Theme == ElementTheme.Dark ? new Uri("ms-appx:///Assets/Page_Solid_White.png") : new Uri("ms-appx:///Assets/Page_Solid_Black.png")), string.IsNullOrEmpty(ExtraAppName) ? ExecuteFile.DisplayName : ExtraAppName, Globalization.GetString("Application_Admin_Name"), ExecuteFile.Path)); } else { NotRecommandList.Add(new ProgramPickerItem(new BitmapImage(AppThemeController.Current.Theme == ElementTheme.Dark ? new Uri("ms-appx:///Assets/Page_Solid_White.png") : new Uri("ms-appx:///Assets/Page_Solid_Black.png")), string.IsNullOrEmpty(ExtraAppName) ? ExecuteFile.DisplayName : ExtraAppName, Globalization.GetString("Application_Admin_Name"), ExecuteFile.Path)); } } } else { await SQLite.Current.DeleteProgramPickerRecordAsync(Package); } } catch (Exception ex) { LogTracer.Log(ex, "An exception was threw trying add to ApplicationList"); } } string AdminExecutablePath = await SQLite.Current.GetDefaultProgramPickerRecordAsync(OpenFile.Type); if (string.IsNullOrEmpty(AdminExecutablePath)) { using (FullTrustProcessController.ExclusiveUsage Exclusive = await FullTrustProcessController.GetAvailableController()) { AdminExecutablePath = await Exclusive.Controller.GetDefaultAssociationFromPathAsync(OpenFile.Path); } } if (!string.IsNullOrEmpty(AdminExecutablePath)) { if (RecommandList.FirstOrDefault((Item) => Item.Path.Equals(AdminExecutablePath, StringComparison.OrdinalIgnoreCase)) is ProgramPickerItem RecommandItem) { CurrentUseProgramList.Items.Add(RecommandItem); CurrentUseProgramList.SelectedIndex = 0; RecommandList.Remove(RecommandItem); } else if (NotRecommandList.FirstOrDefault((Item) => Item.Path.Equals(AdminExecutablePath, StringComparison.OrdinalIgnoreCase)) is ProgramPickerItem NotRecommandItem) { CurrentUseProgramList.Items.Add(NotRecommandItem); CurrentUseProgramList.SelectedIndex = 0; NotRecommandList.Remove(NotRecommandItem); } } if (CurrentUseProgramList.Items.Count == 0) { switch (OpenFile.Type.ToLower()) { case ".jpg": case ".png": case ".bmp": case ".heic": case ".gif": case ".tiff": case ".mkv": case ".mp4": case ".mp3": case ".flac": case ".wma": case ".wmv": case ".m4a": case ".mov": case ".alac": case ".txt": case ".pdf": case ".exe": { Area1.Visibility = Visibility.Visible; CurrentUseProgramList.Visibility = Visibility.Visible; Title1.Text = Globalization.GetString("ProgramPicker_Dialog_Title_1"); Title2.Text = Globalization.GetString("ProgramPicker_Dialog_Title_2"); CurrentUseProgramList.Items.Add(new ProgramPickerItem(new BitmapImage(new Uri("ms-appx:///Assets/RX-icon.png")), Globalization.GetString("ProgramPicker_Dialog_BuiltInViewer"), Globalization.GetString("ProgramPicker_Dialog_BuiltInViewer_Description"), Package.Current.Id.FamilyName)); CurrentUseProgramList.SelectedIndex = 0; break; } default: { Area1.Visibility = Visibility.Collapsed; CurrentUseProgramList.Visibility = Visibility.Collapsed; Title2.Text = Globalization.GetString("ProgramPicker_Dialog_Title_2"); break; } } } else { Area1.Visibility = Visibility.Visible; CurrentUseProgramList.Visibility = Visibility.Visible; Title1.Text = Globalization.GetString("ProgramPicker_Dialog_Title_1"); Title2.Text = Globalization.GetString("ProgramPicker_Dialog_Title_2"); switch (OpenFile.Type.ToLower()) { case ".jpg": case ".png": case ".bmp": case ".heic": case ".gif": case ".tiff": case ".mkv": case ".mp4": case ".mp3": case ".flac": case ".wma": case ".wmv": case ".m4a": case ".mov": case ".alac": case ".txt": case ".pdf": case ".exe": { ProgramCollection.Add(new ProgramPickerItem(new BitmapImage(new Uri("ms-appx:///Assets/RX-icon.png")), Globalization.GetString("ProgramPicker_Dialog_BuiltInViewer"), Globalization.GetString("ProgramPicker_Dialog_BuiltInViewer_Description"), Package.Current.Id.FamilyName)); break; } } } if (RecommandList.Count == 0) { ShowMore.Visibility = Visibility.Collapsed; foreach (ProgramPickerItem Item in NotRecommandList) { ProgramCollection.Add(Item); } OtherProgramList.MaxHeight = 300; } else { foreach (ProgramPickerItem Item in RecommandList) { ProgramCollection.Add(Item); } } if (CurrentUseProgramList.SelectedIndex == -1) { OtherProgramList.SelectedIndex = 0; } LoadingText.Visibility = Visibility.Collapsed; WholeArea.Visibility = Visibility.Visible; }
protected override void OnNavigatedFrom(NavigationEventArgs e) { SFile = null; Text.Text = string.Empty; }
private async void GetImageAutomatic_Click(object sender, RoutedEventArgs e) { if (string.IsNullOrWhiteSpace(Protocol.Text)) { EmptyTip.Target = Protocol; EmptyTip.IsOpen = true; return; } switch (Type) { case QuickStartType.Application: case QuickStartType.UpdateApp: { if (Uri.TryCreate(Protocol.Text, UriKind.Absolute, out Uri Result)) { if (Result.IsFile) { if (await FileSystemStorageItemBase.CheckExistAsync(Protocol.Text)) { try { StorageFile ExecuteFile = await StorageFile.GetFileFromPathAsync(Protocol.Text); IDictionary <string, object> PropertiesDictionary = await ExecuteFile.Properties.RetrievePropertiesAsync(new string[] { "System.FileDescription" }); string ExtraAppName = string.Empty; if (PropertiesDictionary.TryGetValue("System.FileDescription", out object DescriptionRaw)) { ExtraAppName = Convert.ToString(DescriptionRaw); } DisplayName.Text = string.IsNullOrEmpty(ExtraAppName) ? ExecuteFile.DisplayName : ExtraAppName; StorageFile FileThumbnail = await ApplicationData.Current.TemporaryFolder.CreateFileAsync("FileThumbnail.png", CreationCollisionOption.ReplaceExisting); if (await ExecuteFile.GetThumbnailRawStreamAsync() is IRandomAccessStream ThumbnailStream) { BitmapDecoder Decoder = await BitmapDecoder.CreateAsync(ThumbnailStream); using (SoftwareBitmap SBitmap = await Decoder.GetSoftwareBitmapAsync(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Premultiplied)) using (SoftwareBitmap ResizeBitmap = ComputerVisionProvider.ResizeToActual(SBitmap)) using (InMemoryRandomAccessStream ResizeBitmapStream = new InMemoryRandomAccessStream()) { BitmapEncoder Encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, ResizeBitmapStream); Encoder.SetSoftwareBitmap(ResizeBitmap); await Encoder.FlushAsync(); BitmapImage Image = new BitmapImage(); Icon.Source = Image; await Image.SetSourceAsync(ResizeBitmapStream); ResizeBitmapStream.Seek(0); using (Stream TransformStream = ResizeBitmapStream.AsStreamForRead()) using (Stream FileStream = await FileThumbnail.OpenStreamForWriteAsync()) { await TransformStream.CopyToAsync(FileStream); } } } else { Uri PageUri = AppThemeController.Current.Theme == ElementTheme.Dark ? new Uri("ms-appx:///Assets/Page_Solid_White.png") : new Uri("ms-appx:///Assets/Page_Solid_Black.png"); StorageFile PageFile = await StorageFile.GetFileFromApplicationUriAsync(PageUri); using (IRandomAccessStream PageStream = await PageFile.OpenAsync(FileAccessMode.Read)) { BitmapImage Image = new BitmapImage(); Icon.Source = Image; await Image.SetSourceAsync(PageStream); PageStream.Seek(0); using (Stream TransformStream = PageStream.AsStreamForRead()) using (Stream FileStream = await FileThumbnail.OpenStreamForWriteAsync()) { await TransformStream.CopyToAsync(FileStream); } } } ImageFile = FileThumbnail; } catch { FailureTips.IsOpen = true; } } else { FailureTips.IsOpen = true; } } else { if ((await Launcher.FindUriSchemeHandlersAsync(Result.Scheme)).ToList().FirstOrDefault() is AppInfo App) { DisplayName.Text = App.DisplayInfo.DisplayName; StorageFile FileThumbnail = await ApplicationData.Current.TemporaryFolder.CreateFileAsync("FileThumbnail.png", CreationCollisionOption.ReplaceExisting); using (IRandomAccessStreamWithContentType LogoStream = await App.DisplayInfo.GetLogo(new Windows.Foundation.Size(120, 120)).OpenReadAsync()) { BitmapDecoder Decoder = await BitmapDecoder.CreateAsync(LogoStream); using (SoftwareBitmap SBitmap = await Decoder.GetSoftwareBitmapAsync(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Premultiplied)) using (SoftwareBitmap ResizeBitmap = ComputerVisionProvider.ResizeToActual(SBitmap)) using (InMemoryRandomAccessStream ResizeBitmapStream = new InMemoryRandomAccessStream()) { BitmapEncoder Encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, ResizeBitmapStream); Encoder.SetSoftwareBitmap(ResizeBitmap); await Encoder.FlushAsync(); BitmapImage Source = new BitmapImage(); Icon.Source = Source; await Source.SetSourceAsync(ResizeBitmapStream); ResizeBitmapStream.Seek(0); using (Stream FileStream = await FileThumbnail.OpenStreamForWriteAsync()) { await ResizeBitmapStream.AsStreamForRead().CopyToAsync(FileStream); } } } ImageFile = FileThumbnail; } else { FormatErrorTip.IsOpen = true; } } } else { using (FullTrustProcessController.ExclusiveUsage Exclusive = await FullTrustProcessController.GetAvailableController()) { if (await Exclusive.Controller.GetInstalledApplicationAsync(Protocol.Text) is InstalledApplication Pack) { StorageFile FileThumbnail = await ApplicationData.Current.TemporaryFolder.CreateFileAsync("FileThumbnail.png", CreationCollisionOption.ReplaceExisting); if (Pack.CreateStreamFromLogoData() is Stream LogoStream) { try { BitmapDecoder Decoder = await BitmapDecoder.CreateAsync(LogoStream.AsRandomAccessStream()); using (SoftwareBitmap SBitmap = await Decoder.GetSoftwareBitmapAsync(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Premultiplied)) using (SoftwareBitmap ResizeBitmap = ComputerVisionProvider.ResizeToActual(SBitmap)) using (InMemoryRandomAccessStream ResizeBitmapStream = new InMemoryRandomAccessStream()) { BitmapEncoder Encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, ResizeBitmapStream); Encoder.SetSoftwareBitmap(ResizeBitmap); await Encoder.FlushAsync(); BitmapImage Image = new BitmapImage(); Icon.Source = Image; await Image.SetSourceAsync(ResizeBitmapStream); ResizeBitmapStream.Seek(0); using (Stream FileStream = await FileThumbnail.OpenStreamForWriteAsync()) { await ResizeBitmapStream.AsStreamForRead().CopyToAsync(FileStream); } } } finally { LogoStream.Dispose(); } } else { Uri PageUri = AppThemeController.Current.Theme == ElementTheme.Dark ? new Uri("ms-appx:///Assets/Page_Solid_White.png") : new Uri("ms-appx:///Assets/Page_Solid_Black.png"); StorageFile PageFile = await StorageFile.GetFileFromApplicationUriAsync(PageUri); using (IRandomAccessStream PageStream = await PageFile.OpenAsync(FileAccessMode.Read)) { BitmapImage Image = new BitmapImage(); Icon.Source = Image; await Image.SetSourceAsync(PageStream); PageStream.Seek(0); using (Stream TransformStream = PageStream.AsStreamForRead()) using (Stream FileStream = await FileThumbnail.OpenStreamForWriteAsync()) { await TransformStream.CopyToAsync(FileStream); } } } ImageFile = FileThumbnail; } else { FormatErrorTip.IsOpen = true; } } } break; } case QuickStartType.WebSite: case QuickStartType.UpdateWeb: { try { if (Uri.TryCreate(Protocol.Text, UriKind.Absolute, out Uri Result)) { Uri ImageUri = new Uri($"{Result.Scheme}://{Result.Host}/favicon.ico"); HttpWebRequest Request = WebRequest.CreateHttp(ImageUri); using (WebResponse Response = await Request.GetResponseAsync()) using (Stream WebImageStream = Response.GetResponseStream()) using (MemoryStream TemplateStream = new MemoryStream()) { await WebImageStream.CopyToAsync(TemplateStream); TemplateStream.Seek(0, SeekOrigin.Begin); if (TemplateStream.Length > 0) { BitmapImage Bitmap = new BitmapImage(); Icon.Source = Bitmap; await Bitmap.SetSourceAsync(TemplateStream.AsRandomAccessStream()); TemplateStream.Seek(0, SeekOrigin.Begin); StorageFile DownloadImage = await ApplicationData.Current.TemporaryFolder.CreateFileAsync("DownloadFile.ico", CreationCollisionOption.ReplaceExisting); using (Stream LocalFileStream = await DownloadImage.OpenStreamForWriteAsync()) { await TemplateStream.CopyToAsync(LocalFileStream); } ImageFile = DownloadImage; } else { FailureTips.IsOpen = true; } } } else { FailureTips.IsOpen = true; } } catch { try { Uri QueryUrl = Globalization.CurrentLanguage == LanguageEnum.Chinese_Simplified ? new Uri($"http://statics.dnspod.cn/proxy_favicon/_/favicon?domain={new Uri(Protocol.Text).Host}") : new Uri($"http://www.google.com/s2/favicons?domain={new Uri(Protocol.Text).Host}"); HttpWebRequest Request = WebRequest.CreateHttp(QueryUrl); using (WebResponse Response = await Request.GetResponseAsync()) using (Stream WebImageStream = Response.GetResponseStream()) using (MemoryStream TemplateStream = new MemoryStream()) { await WebImageStream.CopyToAsync(TemplateStream); TemplateStream.Seek(0, SeekOrigin.Begin); if (TemplateStream.Length > 0) { BitmapImage Bitmap = new BitmapImage(); Icon.Source = Bitmap; await Bitmap.SetSourceAsync(TemplateStream.AsRandomAccessStream()); TemplateStream.Seek(0, SeekOrigin.Begin); StorageFile DownloadImage = await ApplicationData.Current.TemporaryFolder.CreateFileAsync("DownloadFile.ico", CreationCollisionOption.ReplaceExisting); using (Stream LocalFileStream = await DownloadImage.OpenStreamForWriteAsync()) { await TemplateStream.CopyToAsync(LocalFileStream); } ImageFile = DownloadImage; } else { FailureTips.IsOpen = true; } } } catch { FailureTips.IsOpen = true; } } break; } } }