private void ConfigureTransferDestination_RequestNavigate(object sender, RequestNavigateEventArgs e)
 {
     Uploader.PresentOptions(() =>
     {
         FlashProgress(TaskbarProgressBarState.Normal);
     }, () =>
     {
         FlashProgress(TaskbarProgressBarState.Paused);
     }, new WindowInteropHelper(this).Handle);
 }
        public MainWindow()
        {
            InitializeComponent();

            App.ViewModel = new AppViewModel();
            DataContext   = App.ViewModel;

            WindowState = System.Windows.WindowState.Minimized;

            Loaded += (_, __) =>
            {
                if (!AppJumpList.RunningOnWin7)
                {
                    MessageBox.Show("This application requires Windows 7", "Windows 7 Required", MessageBoxButton.OK);
                    Environment.Exit(1);
                }

                Program.JumpList.SetJumpList();

                Program.JumpList.OtherCommandLineReceived += line =>
                {
                    // from explorer
                    Trace.WriteLine("CLI from explorer: " + line);

                    var list = new List <string>();
                    list.Add(line);
                    UploadFileList(list);
                };

                Program.SetMenu(true);

                if (Program.HTTP == null)
                {
                    FlashProgress(TaskbarProgressBarState.Error);
                }
            };

            Closing += (_, e) =>
            {
                WindowState = System.Windows.WindowState.Minimized;
                e.Cancel    = true;
            };

            Program.JumpListItemClicked += item =>
            {
                this.Invoke(() =>
                {
                    Window w = null;
                    switch (item.Title)
                    {
                    case "Send Note":
                        w = new NoteWindow();
                        break;

                    case "Send SMS":
                        w = new MessageWindow(MessageWindowType.SMS);
                        break;

                    case "Send Mail":
                        w = new MessageWindow(MessageWindowType.EMail);
                        break;

                    case "Send Clipboard":
                        SendClipboard();
                        break;

                    case "Set Transfer Destination":
                        Uploader.PresentOptions(() => {
                            FlashProgress(TaskbarProgressBarState.Normal);
                        }, () => {
                            FlashProgress(TaskbarProgressBarState.Paused);
                        }, IntPtr.Zero);
                        break;

                    default:
                        Trace.WriteLine("Invalid jumplist item: " + item);
                        break;
                    }
                    if (w != null)
                    {
                        w.Show();
                        w.Topmost = true;
                        w.Activate();
                        this.InvokeDelay(1000, () => w.Topmost = false);
                    }
                });
            };
        }