aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2018-05-02 17:36:54 +0300
committerShlomo Hecht <shlomo@twine-s.com>2018-05-02 17:36:54 +0300
commitee697f7a3350d0a97bddee4de3a2ae4f9d285052 (patch)
tree2dc2e3bb811b0d89a3c4c51801c1572966fcee7c /Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels
parent73c4b814f1f28170ae72723568189096413c3564 (diff)
downloadTango-ee697f7a3350d0a97bddee4de3a2ae4f9d285052.tar.gz
Tango-ee697f7a3350d0a97bddee4de3a2ae4f9d285052.zip
merge
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels')
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/LoadingViewVM.cs8
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs84
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/ResolvedIssuesViewVM.cs61
3 files changed, 150 insertions, 3 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/LoadingViewVM.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/LoadingViewVM.cs
index 2b2b442f7..29f9102ac 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/LoadingViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/LoadingViewVM.cs
@@ -16,6 +16,7 @@ using Tango.BL;
using Tango.MachineStudio.Common.EventLogging;
using Tango.BL.Enumerations;
using Tango.MachineStudio.UI.TFS;
+using Tango.MachineStudio.Common;
namespace Tango.MachineStudio.UI.ViewModels
{
@@ -23,7 +24,7 @@ namespace Tango.MachineStudio.UI.ViewModels
/// Represents the Machine Studio loading view, view model.
/// </summary>
/// <seealso cref="Tango.SharedUI.ViewModel" />
- public class LoadingViewVM : ViewModel
+ public class LoadingViewVM : StudioViewModelInternal
{
private INotificationProvider _notificationProvider;
private TeamFoundationServiceExtendedClient _tfs;
@@ -55,6 +56,11 @@ namespace Tango.MachineStudio.UI.ViewModels
_navigationManager = navigationManager;
_studioModuleLoader = studioModuleLoader;
_notificationProvider = notificationProvider;
+ }
+
+ public override void OnApplicationStarted()
+ {
+ base.OnApplicationStarted();
Load();
}
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs
index 0882267e8..04b973f23 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs
@@ -148,6 +148,16 @@ namespace Tango.MachineStudio.UI.ViewModels
/// </summary>
public RelayCommand ReportIssueCommand { get; set; }
+ /// <summary>
+ /// Gets or sets the open resolved bugs.
+ /// </summary>
+ public RelayCommand OpenResolvedBugsCommand { get; set; }
+
+ /// <summary>
+ /// Gets or sets the open developer console command.
+ /// </summary>
+ public RelayCommand OpenDeveloperConsoleCommand { get; set; }
+
private IAuthenticationProvider _authenticationProvider;
/// <summary>
/// Gets or sets the authentication provider.
@@ -302,6 +312,8 @@ namespace Tango.MachineStudio.UI.ViewModels
ResolveMachineEventCommand = new RelayCommand<MachinesEvent>(ResolveMachineEvent);
ReportIssueCommand = new RelayCommand(ReportIssue);
+ OpenResolvedBugsCommand = new RelayCommand(OpenResolvedBugs);
+ OpenDeveloperConsoleCommand = new RelayCommand(OpenDeveloperConsole);
}
private void MachineEventsStateProvider_EventsResolved(object sender, IEnumerable<MachinesEvent> e)
@@ -321,7 +333,7 @@ namespace Tango.MachineStudio.UI.ViewModels
{
while (!DisableCheckForUpdates)
{
- Thread.Sleep(TimeSpan.FromMinutes(1));
+ Thread.Sleep(TimeSpan.FromMinutes(0.2));
try
{
@@ -649,10 +661,78 @@ namespace Tango.MachineStudio.UI.ViewModels
{
using (_notificationProvider.PushTaskItem("Uploading bug report..."))
{
- await TFSClient.UploadWorkItem(vm.WorkItem);
+ try
+ {
+ TFSClient.FinalizeBug(vm.WorkItem);
+ await TFSClient.UploadWorkItem(vm.WorkItem);
+ }
+ catch (Exception ex)
+ {
+ _notificationProvider.ShowError("An error occurred while trying to create the issue." + Environment.NewLine + ex.Message);
+ }
}
}, null);
}
+
+ private void OpenResolvedBugs()
+ {
+ ResolvedIssuesViewVM vm = null;
+
+ vm = new ResolvedIssuesViewVM(TFSClient, async (item) =>
+ {
+ //Approve
+ using (_notificationProvider.PushTaskItem("Approving issue..."))
+ {
+ vm.IsAvailable = false;
+ try
+ {
+ await TFSClient.CloseWorkItem(item);
+ }
+ catch (Exception ex)
+ {
+ _notificationProvider.ShowError("An error occurred while trying to update the issue." + Environment.NewLine + ex.Message);
+ }
+ vm.IsAvailable = true;
+
+ if (TFSClient.ResolvedWorkItems.Count == 0)
+ {
+ vm.Close();
+ }
+ }
+ }, async (item) =>
+ {
+ //Decline
+ using (_notificationProvider.PushTaskItem("Reactivating issue..."))
+ {
+ vm.IsAvailable = false;
+ try
+ {
+ await TFSClient.ReactivateWorkItem(item);
+ }
+ catch (Exception ex)
+ {
+ _notificationProvider.ShowError("An error occurred while trying to update the issue." + Environment.NewLine + ex.Message);
+ }
+
+ vm.IsAvailable = true;
+
+ if (TFSClient.ResolvedWorkItems.Count == 0)
+ {
+ vm.Close();
+ }
+ }
+ });
+
+ _notificationProvider.ShowModalDialog<ResolvedIssuesViewVM, ResolvedIssuesView>(vm, (_) => { }, null);
+ }
+
+ private void OpenDeveloperConsole()
+ {
+ Console.ConsoleWindow console = new Console.ConsoleWindow();
+ ApplicationManager.RegisterOpenedWindow(console);
+ console.Owner = MainWindow.Instance;
+ console.Show();
+ }
}
}
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/ResolvedIssuesViewVM.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/ResolvedIssuesViewVM.cs
new file mode 100644
index 000000000..552880792
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/ResolvedIssuesViewVM.cs
@@ -0,0 +1,61 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.Core.Commands;
+using Tango.MachineStudio.Common.Notifications;
+using Tango.MachineStudio.UI.TFS;
+using Tango.TFS;
+
+namespace Tango.MachineStudio.UI.ViewModels
+{
+ public class ResolvedIssuesViewVM : DialogViewVM
+ {
+ private Action<WorkItem> _onApprove;
+ private Action<WorkItem> _onDecline;
+
+ public TeamFoundationServiceExtendedClient TFSClient { get; set; }
+
+ public RelayCommand<WorkItem> ApproveCommand { get; set; }
+
+ public RelayCommand<WorkItem> DeclineCommand { get; set; }
+
+ private bool _isAvailable;
+
+ public bool IsAvailable
+ {
+ get { return _isAvailable; }
+ set { _isAvailable = value; RaisePropertyChangedAuto(); }
+ }
+
+ public ResolvedIssuesViewVM() : base()
+ {
+ IsAvailable = true;
+ ApproveCommand = new RelayCommand<WorkItem>(ApproveIssue);
+ DeclineCommand = new RelayCommand<WorkItem>(DeclineIssue);
+ }
+
+ public ResolvedIssuesViewVM(TeamFoundationServiceExtendedClient tfsClient, Action<WorkItem> onApprove, Action<WorkItem> onDecline) : this()
+ {
+ TFSClient = tfsClient;
+ _onApprove = onApprove;
+ _onDecline = onDecline;
+ }
+
+ private void DeclineIssue(WorkItem workItem)
+ {
+ _onDecline(workItem);
+ }
+
+ private void ApproveIssue(WorkItem workItem)
+ {
+ _onApprove(workItem);
+ }
+
+ public void Close()
+ {
+ Accept();
+ }
+ }
+}