/// <summary> /// This is the SufraceMessageEvent receiver /// </summary> /// <param name="sender"></param> /// <param name="eventArgs"></param> private void SurfaceMessageReceived(object sender, SurfaceMessageEventArgs eventArgs) { if (string.IsNullOrEmpty(eventArgs?.Message)) { return; } if (MainForm.Instance == null) { return; } switch (eventArgs.MessageType) { case SurfaceMessageTyp.Error: MainForm.Instance.NotifyIcon.ShowBalloonTip(10000, "Greenshot", eventArgs.Message, ToolTipIcon.Error); break; case SurfaceMessageTyp.Info: MainForm.Instance.NotifyIcon.ShowBalloonTip(10000, "Greenshot", eventArgs.Message, ToolTipIcon.Info); break; case SurfaceMessageTyp.FileSaved: case SurfaceMessageTyp.UploadedUri: // Show a balloon and register an event handler to open the "capture" for if someone clicks the balloon. MainForm.Instance.NotifyIcon.BalloonTipClicked += OpenCaptureOnClick; MainForm.Instance.NotifyIcon.BalloonTipClosed += RemoveEventHandler; // Store for later usage MainForm.Instance.NotifyIcon.Tag = eventArgs; MainForm.Instance.NotifyIcon.ShowBalloonTip(10000, "Greenshot", eventArgs.Message, ToolTipIcon.Info); break; } }
/// <summary> /// If a balloon tip is show for a taken capture, this handles the click on it /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OpenCaptureOnClick(object sender, EventArgs e) { SurfaceMessageEventArgs eventArgs = MainForm.Instance.NotifyIcon.Tag as SurfaceMessageEventArgs; if (eventArgs == null) { Log.Warn("OpenCaptureOnClick called without SurfaceMessageEventArgs"); RemoveEventHandler(sender, e); return; } ISurface surface = eventArgs.Surface; if (surface != null) { switch (eventArgs.MessageType) { case SurfaceMessageTyp.FileSaved: ExplorerHelper.OpenInExplorer(surface.LastSaveFullPath); break; case SurfaceMessageTyp.UploadedUri: Process.Start(surface.UploadUrl); break; } } Log.DebugFormat("Deregistering the BalloonTipClicked"); RemoveEventHandler(sender, e); }