Radarr/NzbDrone.Core/Model/Notification/ProgressNotification.cs

97 lines
2.8 KiB
C#
Raw Normal View History

using System;
using NLog;
namespace NzbDrone.Core.Model.Notification
{
public class ProgressNotification : IDisposable
{
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
public ProgressNotification(string title)
{
Title = title;
2011-04-24 05:48:12 +00:00
CurrentMessage = String.Empty;
Id = Guid.NewGuid();
ProgressMax = 100;
ProgressValue = 0;
}
/// <summary>
2011-04-10 02:44:01 +00:00
/// Gets or sets the unique id.
/// </summary>
/// <value>The Id.</value>
public Guid Id { get; private set; }
/// <summary>
2011-04-10 02:44:01 +00:00
/// Gets or sets the title for this notification.
/// </summary>
/// <value>The title.</value>
public String Title { get; private set; }
/// <summary>
2011-04-10 02:44:01 +00:00
/// Gets or sets the current status of this task. this field could be use to show the currently processing item in a long running task.
/// </summary>
/// <value>The current status.</value>
2011-04-24 05:48:12 +00:00
public String CurrentMessage { get; set; }
/// <summary>
2011-04-10 02:44:01 +00:00
/// Gets or sets the completion status in percent.
/// </summary>
/// <value>The percent complete.</value>
public int PercentComplete
{
get { return Convert.ToInt32(Convert.ToDouble(ProgressValue) / Convert.ToDouble(ProgressMax) * 100); }
}
/// <summary>
2011-04-10 02:44:01 +00:00
/// Gets or sets the total number of items that need to be completed
/// </summary>
/// <value>The progress max.</value>
public int ProgressMax { get; set; }
/// <summary>
2011-04-10 02:44:01 +00:00
/// Gets or sets the number of items successfully completed.
/// </summary>
/// <value>The progress value.</value>
public int ProgressValue { get; set; }
private ProgressNotificationStatus _status;
/// <summary>
2011-04-10 02:44:01 +00:00
/// Gets or sets the status.
/// </summary>
/// <value>The status.</value>
public ProgressNotificationStatus Status
{
get { return _status; }
set
{
if (value != ProgressNotificationStatus.InProgress)
{
CompletedTime = DateTime.Now;
}
_status = value;
}
}
/// <summary>
/// Gets the completed time.
/// </summary>
2011-11-21 04:43:16 +00:00
public Nullable<DateTime> CompletedTime { get; private set; }
2011-04-10 02:44:01 +00:00
#region IDisposable Members
public void Dispose()
{
if (Status == ProgressNotificationStatus.InProgress)
{
2010-10-24 17:35:58 +00:00
Logger.Warn("Background task '{0}' was unexpectedly abandoned.", Title);
Status = ProgressNotificationStatus.Failed;
}
}
2011-04-10 02:44:01 +00:00
#endregion
}
}