private RadialMenuItem GetSettingsButton(OneLauncherViewModel vm) { var settingsButton = new RadialMenuItem { Header = "Settings", Icon = new Image() { Source = Resources.Settings.ToImageSource(), Width = 25, Height = 25 } }; settingsButton.Click += (s, e) => vm.OpenSettingsCommand.Execute(null); return(settingsButton); }
public IEnumerable <RadialMenuItem> BuildMenuItems(IEnumerable <LaunchersNode> launchers, OneLauncherViewModel vm) { var items = new List <RadialMenuItem>(); if (launchers != null) { foreach (var item in launchers) { items.Add(GetNodeMenuItem(item)); } } var settingsButton = GetSettingsButton(vm); items.Add(settingsButton); return(items); }
public void ShouldInitializeLaunchersWhenLoaded(bool defaultSettings) { var settings = new Mock <ISettingsView>(MockBehavior.Strict); // When the settings are the default ones, it means it's the first time the app is launched // We'll open the settings view, before the load is completed, to let the user defines his repositories location if (defaultSettings) { settings .Setup(mock => mock.ShowDialog()) .Returns(true) .Verifiable(); } var containerBuilder = new ContainerBuilder(); containerBuilder.RegisterInstance(settings.Object).As <ISettingsView>(); using (ContainerOverrider.Override(containerBuilder.Build())) { var launchersNodes = new[] { new LaunchersNode() { Header = "Header1" } }; var loader = new Mock <IConfigurationLoader>(MockBehavior.Strict); loader .Setup(mock => mock.LoadConfiguration(Environment.CurrentDirectory)) .Returns(launchersNodes) .Verifiable(); var context = new OneLaunchContextMock().WithUserSettings(new UserSettings() { IsDefaultSettings = defaultSettings }); var vm = new OneLauncherViewModel() { ConfigurationLoader = loader.Object, Context = context }; var builder = new Mock <IRadialMenuItemBuilder>(MockBehavior.Strict); var menuItem = new RadialMenuItem(); builder .Setup(mock => mock.BuildMenuItems(It.IsIn <IEnumerable <LaunchersNode> >(launchersNodes), It.IsIn(vm))) .Returns(new[] { menuItem }) .Verifiable(); vm.RadialMenuItemBuilder = builder.Object; // As long as the load is not completed, the VM should maintain the view closed Assert.That(vm.IsOpened, Is.False); var initialLaunchers = vm.Launchers; Assert.That(initialLaunchers, Has.Count.EqualTo(0)); vm.LoadedCommand.Execute(null); WaitUtils.WaitFor(() => vm.IsOpened, 10, 1); Assert.That(vm.Launchers, Has.Count.EqualTo(1)); Assert.That(vm.Launchers[0], Is.SameAs(menuItem)); // Now it should be opened Assert.That(vm.IsOpened, Is.True); loader.VerifyAll(); builder.VerifyAll(); settings.VerifyAll(); } }