diff --git a/NzbDrone.Core/Model/DownloadClientType.cs b/NzbDrone.Core/Model/DownloadClientType.cs
new file mode 100644
index 000000000..906ff3f9a
--- /dev/null
+++ b/NzbDrone.Core/Model/DownloadClientType.cs
@@ -0,0 +1,8 @@
+namespace NzbDrone.Core.Model
+{
+ public enum DownloadClientType
+ {
+ Sabnzbd = 0,
+ Blackhole = 1
+ }
+}
\ No newline at end of file
diff --git a/NzbDrone.Core/NzbDrone.Core.csproj b/NzbDrone.Core/NzbDrone.Core.csproj
index 4a66dff38..e50133532 100644
--- a/NzbDrone.Core/NzbDrone.Core.csproj
+++ b/NzbDrone.Core/NzbDrone.Core.csproj
@@ -227,6 +227,7 @@
+
diff --git a/NzbDrone.Core/Providers/Core/ConfigProvider.cs b/NzbDrone.Core/Providers/Core/ConfigProvider.cs
index 3643c0801..ea684f1e8 100644
--- a/NzbDrone.Core/Providers/Core/ConfigProvider.cs
+++ b/NzbDrone.Core/Providers/Core/ConfigProvider.cs
@@ -409,6 +409,13 @@ namespace NzbDrone.Core.Providers.Core
set { SetValue("AutoIgnorePreviouslyDownloadedEpisodes", value); }
}
+ public virtual DownloadClientType DownloadClient
+ {
+ get { return (DownloadClientType)GetValueInt("DownloadClient"); }
+
+ set { SetValue("DownloadClient", (int)value); }
+ }
+
public string UGuid
{
get { return GetValue("UGuid", Guid.NewGuid().ToString(), persist: true); }
diff --git a/NzbDrone.Web/Controllers/SettingsController.cs b/NzbDrone.Web/Controllers/SettingsController.cs
index 1c84065d6..3d439d40d 100644
--- a/NzbDrone.Web/Controllers/SettingsController.cs
+++ b/NzbDrone.Web/Controllers/SettingsController.cs
@@ -6,6 +6,7 @@ using NLog;
using NzbDrone.Common;
using NzbDrone.Common.Model;
using NzbDrone.Core.Helpers;
+using NzbDrone.Core.Model;
using NzbDrone.Core.Providers;
using NzbDrone.Core.Providers.Core;
using NzbDrone.Core.Providers.ExternalNotification;
@@ -90,12 +91,17 @@ namespace NzbDrone.Web.Controllers
});
}
- public ActionResult Sabnzbd()
+ public ActionResult DownloadClient()
{
var tvCategory = _configProvider.SabTvCategory;
var tvCategorySelectList = new SelectList(new[] { tvCategory });
- var model = new SabnzbdSettingsModel
+ var downloadClientTypes = new List>();
+
+ foreach (DownloadClientType downloadClientType in Enum.GetValues(typeof(DownloadClientType)))
+ downloadClientTypes.Add(new KeyValuePair((int)downloadClientType, downloadClientType.ToString()));
+
+ var model = new DownloadClientSettingsModel
{
SabHost = _configProvider.SabHost,
SabPort = _configProvider.SabPort,
@@ -104,8 +110,10 @@ namespace NzbDrone.Web.Controllers
SabPassword = _configProvider.SabPassword,
SabTvCategory = tvCategory,
SabTvPriority = _configProvider.SabTvPriority,
- SabDropDirectory = _configProvider.SabDropDirectory,
- SabTvCategorySelectList = tvCategorySelectList
+ DownloadClientDropDirectory = _configProvider.SabDropDirectory,
+ SabTvCategorySelectList = tvCategorySelectList,
+ DownloadClient = (int)_configProvider.DownloadClient,
+ DownloadClientSelectList = new SelectList(downloadClientTypes, "Key", "Value")
};
return View(model);
@@ -373,11 +381,10 @@ namespace NzbDrone.Web.Controllers
}
[HttpPost]
- public JsonResult SaveSabnzbd(SabnzbdSettingsModel data)
+ public JsonResult SaveDownloadClient(DownloadClientSettingsModel data)
{
if (ModelState.IsValid)
{
-
_configProvider.SabHost = data.SabHost;
_configProvider.SabPort = data.SabPort;
_configProvider.SabApiKey = data.SabApiKey;
@@ -385,8 +392,8 @@ namespace NzbDrone.Web.Controllers
_configProvider.SabTvCategory = data.SabTvCategory;
_configProvider.SabUsername = data.SabUsername;
_configProvider.SabTvPriority = data.SabTvPriority;
- _configProvider.SabDropDirectory = data.SabDropDirectory;
-
+ _configProvider.SabDropDirectory = data.DownloadClientDropDirectory;
+ _configProvider.DownloadClient = (DownloadClientType)data.DownloadClient;
return GetSuccessResult();
}
diff --git a/NzbDrone.Web/Models/SabnzbdSettingsModel.cs b/NzbDrone.Web/Models/DownloadClientSettingsModel.cs
similarity index 74%
rename from NzbDrone.Web/Models/SabnzbdSettingsModel.cs
rename to NzbDrone.Web/Models/DownloadClientSettingsModel.cs
index e1e184286..3e2810e4a 100644
--- a/NzbDrone.Web/Models/SabnzbdSettingsModel.cs
+++ b/NzbDrone.Web/Models/DownloadClientSettingsModel.cs
@@ -7,7 +7,7 @@ using NzbDrone.Core.Model.Sabnzbd;
namespace NzbDrone.Web.Models
{
- public class SabnzbdSettingsModel
+ public class DownloadClientSettingsModel
{
public SelectList PrioritySelectList =
new SelectList(new[] {"Default", "Paused", "Low", "Normal", "High", "Top"});
@@ -53,11 +53,21 @@ namespace NzbDrone.Web.Models
[Description("Priority to use when sending NZBs to SABnzbd")]
public SabPriorityType SabTvPriority { get; set; }
- [DisplayName("SABnzbd TV Directory")]
- [Description("The directory where SABnzbd downloads TV shows to (NzbDrone will sort them for you)")]
+ [DisplayName("Download Client TV Directory")]
+ [Description("The directory where your download client downloads TV shows to (NzbDrone will sort them for you)")]
[DisplayFormat(ConvertEmptyStringToNull = false)]
- public string SabDropDirectory { get; set; }
+ public string DownloadClientDropDirectory { get; set; }
+
+ [DisplayName("Blackhole Directory")]
+ [Description("The directory where your download client will pickup NZB files")]
+ [DisplayFormat(ConvertEmptyStringToNull = false)]
+ public string BlackholeDirectory { get; set; }
+
+ [DisplayName("Download Client")]
+ [Description("What method do you download NZBs with?")]
+ public int DownloadClient { get; set; }
public SelectList SabTvCategorySelectList { get; set; }
+ public SelectList DownloadClientSelectList { get; set; }
}
}
\ No newline at end of file
diff --git a/NzbDrone.Web/NzbDrone.Web.csproj b/NzbDrone.Web/NzbDrone.Web.csproj
index cecff258d..b3d825d40 100644
--- a/NzbDrone.Web/NzbDrone.Web.csproj
+++ b/NzbDrone.Web/NzbDrone.Web.csproj
@@ -235,7 +235,7 @@
-
+
@@ -530,6 +530,12 @@
+
+
+
+
+
+