Added shutdown and restart buttons to system UI
New: Shutdown and restart from UI Fixed: ctrl+c will shutdown app on mono
This commit is contained in:
parent
6ff9c9f61e
commit
be9b7284b5
|
@ -4,5 +4,12 @@ namespace NzbDrone.Core.Lifecycle.Commands
|
|||
{
|
||||
public class RestartCommand : Command
|
||||
{
|
||||
public override bool SendUpdatesToClient
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,5 +4,12 @@ namespace NzbDrone.Core.Lifecycle.Commands
|
|||
{
|
||||
public class ShutdownCommand : Command
|
||||
{
|
||||
public override bool SendUpdatesToClient
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
using System.IO;
|
||||
using NLog;
|
||||
using NzbDrone.Common;
|
||||
using NzbDrone.Common.EnvironmentInfo;
|
||||
using NzbDrone.Common.Processes;
|
||||
using NzbDrone.Core.Instrumentation;
|
||||
using NzbDrone.Core.Lifecycle.Commands;
|
||||
using NzbDrone.Core.Messaging.Commands;
|
||||
using NzbDrone.Core.Messaging.Events;
|
||||
|
@ -16,23 +18,27 @@ namespace NzbDrone.Core.Lifecycle
|
|||
private readonly IAppFolderInfo _appFolderInfo;
|
||||
private readonly IServiceProvider _serviceProvider;
|
||||
private readonly IProcessProvider _processProvider;
|
||||
private readonly Logger _logger;
|
||||
|
||||
|
||||
public LifestyleService(IEventAggregator eventAggregator,
|
||||
IRuntimeInfo runtimeInfo,
|
||||
IAppFolderInfo appFolderInfo,
|
||||
IServiceProvider serviceProvider,
|
||||
IProcessProvider processProvider)
|
||||
IProcessProvider processProvider,
|
||||
Logger logger)
|
||||
{
|
||||
_eventAggregator = eventAggregator;
|
||||
_runtimeInfo = runtimeInfo;
|
||||
_appFolderInfo = appFolderInfo;
|
||||
_serviceProvider = serviceProvider;
|
||||
_processProvider = processProvider;
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public void Execute(ShutdownCommand message)
|
||||
{
|
||||
_logger.ProgressInfo("Shutdown requested, goodbye.");
|
||||
_eventAggregator.PublishEvent(new ApplicationShutdownRequested());
|
||||
|
||||
if (_runtimeInfo.IsWindowsService)
|
||||
|
@ -43,6 +49,7 @@ namespace NzbDrone.Core.Lifecycle
|
|||
|
||||
public void Execute(RestartCommand message)
|
||||
{
|
||||
_logger.ProgressInfo("Restart requested, brb.");
|
||||
_eventAggregator.PublishEvent(new ApplicationShutdownRequested(true));
|
||||
|
||||
if (_runtimeInfo.IsWindowsService)
|
||||
|
|
|
@ -167,3 +167,12 @@
|
|||
.icon(@cloud-download);
|
||||
color: @errorText;
|
||||
}
|
||||
|
||||
.icon-nd-shutdown:before {
|
||||
.icon(@off);
|
||||
color: @errorText;
|
||||
}
|
||||
|
||||
.icon-nd-restart:before {
|
||||
.icon(@repeat);
|
||||
}
|
|
@ -219,3 +219,26 @@ body {
|
|||
height: 55px;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.lifecycle-controls {
|
||||
font-size: 20px;
|
||||
|
||||
i {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.drone-button {
|
||||
height: .8em;
|
||||
margin-left: -8px;
|
||||
|
||||
&:hover {
|
||||
.icon-stack-base:before {
|
||||
.icon(@sign-blank)
|
||||
}
|
||||
|
||||
.icon-nd-restart:before {
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -5,12 +5,14 @@ define(
|
|||
'marionette',
|
||||
'System/Info/SystemInfoLayout',
|
||||
'System/Logs/LogsLayout',
|
||||
'System/Update/UpdateLayout'
|
||||
'System/Update/UpdateLayout',
|
||||
'Commands/CommandController'
|
||||
], function (Backbone,
|
||||
Marionette,
|
||||
SystemInfoLayout,
|
||||
LogsLayout,
|
||||
UpdateLayout) {
|
||||
UpdateLayout,
|
||||
CommandController) {
|
||||
return Marionette.Layout.extend({
|
||||
template: 'System/SystemLayoutTemplate',
|
||||
|
||||
|
@ -29,7 +31,9 @@ define(
|
|||
events: {
|
||||
'click .x-info-tab' : '_showInfo',
|
||||
'click .x-logs-tab' : '_showLogs',
|
||||
'click .x-updates-tab': '_showUpdates'
|
||||
'click .x-updates-tab': '_showUpdates',
|
||||
'click .x-shutdown' : '_shutdown',
|
||||
'click .x-restart' : '_restart'
|
||||
},
|
||||
|
||||
initialize: function (options) {
|
||||
|
@ -83,6 +87,18 @@ define(
|
|||
this.updates.show(new UpdateLayout());
|
||||
this.ui.updatesTab.tab('show');
|
||||
this._navigate('system/updates');
|
||||
},
|
||||
|
||||
_shutdown: function () {
|
||||
CommandController.Execute('shutdown', {
|
||||
name : 'shutdown'
|
||||
});
|
||||
},
|
||||
|
||||
_restart: function () {
|
||||
CommandController.Execute('restart', {
|
||||
name : 'restart'
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
|
@ -2,6 +2,19 @@
|
|||
<li><a href="#info" class="x-info-tab no-router">Info</a></li>
|
||||
<li><a href="#logs" class="x-logs-tab no-router">Logs</a></li>
|
||||
<li><a href="#updates" class="x-updates-tab no-router">Updates</a></li>
|
||||
<li class="lifecycle-controls pull-right">
|
||||
<span class="icon-stack drone-button x-shutdown">
|
||||
<i class="icon-check-empty icon-stack-base"></i>
|
||||
<i class="icon-nd-shutdown"></i>
|
||||
</span>
|
||||
|
||||
{{#if_windows}}
|
||||
<span class="icon-stack drone-button x-restart">
|
||||
<i class="icon-check-empty icon-stack-base"></i>
|
||||
<i class="icon-nd-restart"></i>
|
||||
</span>
|
||||
{{/if_windows}}
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="tab-content">
|
||||
|
|
Loading…
Reference in New Issue