void Runner_DuplicatiProgress(Duplicati.Library.Main.DuplicatiOperation operation, DuplicatiRunner.RunnerState state, string message, string submessage, int progress, int subprogress) { if (this.InvokeRequired) { this.Invoke(new DuplicatiRunner.ProgressEventDelegate(Runner_DuplicatiProgress), operation, state, message, submessage, progress, subprogress); } else { WorkProgressbar.Visible = ProgressMessage.Visible = state != DuplicatiRunner.RunnerState.Stopped; WorkProgressbar.Style = progress < 0 ? ProgressBarStyle.Marquee : ProgressBarStyle.Blocks; WorkProgressbar.Value = Math.Max(Math.Min(WorkProgressbar.Maximum, progress), WorkProgressbar.Minimum); ProgressMessage.Text = message; toolTip1.SetToolTip(SubProgressBar, submessage); SubProgressBar.Value = Math.Max(Math.Min(SubProgressBar.Maximum, subprogress), SubProgressBar.Minimum); if (!SubProgressBar.Visible && subprogress >= 0) { ProgressMessage_TextChanged(null, null); } SubProgressBar.Visible = subprogress >= 0; toolTip1.SetToolTip(ProgressMessage, ProgressMessage.Text); toolTip1.SetToolTip(WorkProgressbar, ProgressMessage.Text); } }
void Runner_DuplicatiProgress(Duplicati.Library.Main.DuplicatiOperation operation, DuplicatiRunner.RunnerState state, string message, string submessage, int progress, int subprogress) { if (this.InvokeRequired) { this.BeginInvoke(new DuplicatiRunner.ProgressEventDelegate(Runner_DuplicatiProgress), operation, state, message, submessage, progress, subprogress); return; } string name = ""; //Dirty read of the instance variable try { name = Program.WorkThread.CurrentTask.Schedule.Name; } catch { } Datamodel.ApplicationSettings.NotificationLevel level; try { level = m_settings.BallonNotificationLevel; } catch { m_settings = new Datamodel.ApplicationSettings(Program.DataConnection); try { level = m_settings.BallonNotificationLevel; } catch { //TODO: Should find the cause for this, but at least we do not crash the process return; } } if (state == DuplicatiRunner.RunnerState.Started && (level == Duplicati.Datamodel.ApplicationSettings.NotificationLevel.StartAndStop || level == Duplicati.Datamodel.ApplicationSettings.NotificationLevel.Start || level == Duplicati.Datamodel.ApplicationSettings.NotificationLevel.Continous)) { //Show start balloon m_trayIcon.ShowBalloonTip(BALLOON_SHOW_TIME, Application.ProductName, String.Format(Strings.MainForm.BalloonTip_Started, name), ToolTipIcon.Info); } else if (state == DuplicatiRunner.RunnerState.Stopped && (level == Duplicati.Datamodel.ApplicationSettings.NotificationLevel.StartAndStop || level == Duplicati.Datamodel.ApplicationSettings.NotificationLevel.Continous)) { //Show stop balloon m_trayIcon.ShowBalloonTip(BALLOON_SHOW_TIME, Application.ProductName, String.Format(Strings.MainForm.BalloonTip_Stopped, name), ToolTipIcon.Info); } else if (state == DuplicatiRunner.RunnerState.Running && level == Duplicati.Datamodel.ApplicationSettings.NotificationLevel.Continous) { //Show update balloon m_trayIcon.ShowBalloonTip(BALLOON_SHOW_TIME, Application.ProductName, String.Format(Strings.MainForm.BalloonTip_Running, message), ToolTipIcon.Info); } }