private void ProjectContextMenu_Opened(object sender, RoutedEventArgs e)
        {
            ContextMenu projectContextMenu = (ContextMenu)sender;

            MenuItem webMenuItem = projectContextMenu.Items.Cast <MenuItem>().Last();

            webMenuItem.Items.Clear();

            ObservableProject selectedProject = (ObservableProject)projectsDataGrid.SelectedItem;

            if (projectsDataGrid.SelectedItems.Count != 1 || selectedProject.RpcProject.GuiUrls.Count == 0)
            {
                webMenuItem.Visibility = Visibility.Collapsed;
                return;
            }

            foreach (BoincRpc.GuiUrl guiUrl in selectedProject.RpcProject.GuiUrls)
            {
                MenuItem urlMenuItem = new MenuItem
                {
                    Header  = guiUrl.Name,
                    ToolTip = guiUrl.Description,
                    Tag     = guiUrl.Url
                };
                urlMenuItem.Click += delegate(object s, RoutedEventArgs a) { Process.Start((string)((MenuItem)s).Tag); };

                webMenuItem.Items.Add(urlMenuItem);
            }

            webMenuItem.Visibility = Visibility.Visible;
        }
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            // Constructor is too early for setting these properties.

            // The live sorting/grouping/filtering feature is a very expensive one so be careful to activate it only if needed
            // and only the one you actually need. It may be a good idea too to de-activate it when it’s no more needed.
            computersDataGrid.Items.IsLiveFiltering = true;
            foreach (string propertie in ObservableHost.GetLiveFilteringProperties())
            {
                computersDataGrid.Items.LiveFilteringProperties.Add(propertie);
            }

            projectsDataGrid.Items.IsLiveFiltering = true;
            foreach (string propertie in ObservableProject.GetLiveFilteringProperties())
            {
                projectsDataGrid.Items.LiveFilteringProperties.Add(propertie);
            }

            tasksDataGrid.Items.IsLiveFiltering = true;
            foreach (string propertie in ObservableTask.GetLiveFilteringProperties())
            {
                tasksDataGrid.Items.LiveFilteringProperties.Add(propertie);
            }

            transfersDataGrid.Items.IsLiveFiltering = true;
            foreach (string propertie in ObservableTransfer.GetLiveFilteringProperties())
            {
                transfersDataGrid.Items.LiveFilteringProperties.Add(propertie);
            }
        }
        public ProjectDetailViewModel(ObservableProject project, INavigation navigation)
        {
            Title   = project.Name;
            Project = project;

            _navigation = navigation;

            RemoveProjectCommand = new RelayCommand(async() => await ExecuteRemoveProjectCommand(), CanExecuteRemoveProjectCommand);
        }
Exemple #4
0
        private async Task UpdateProjects(HostState hostState)
        {
            await hostState.BoincState.UpdateProjects();

            if (!_useObservableCollections)
            {
                return;
            }

            foreach (var rpcProject in hostState.BoincState.Projects)
            {
                ObservableProject project = Projects.FirstOrDefault(pvm => pvm.HostId == hostState.Id && pvm.Name == rpcProject.ProjectName);
                if (project == null)
                {
                    project = new ObservableProject(hostState, rpcProject);
                    if (string.IsNullOrEmpty(SearchString))
                    {
                        Projects.Add(project);
                    }
                    else
                    {
                        foreach (var content in project.GetContentsForFiltering())
                        {
                            if (content != null && content.IndexOf(SearchString, StringComparison.InvariantCultureIgnoreCase) != -1)
                            {
                                // The search string is found in any of the VM's property
                                Projects.Add(project);
                                break;
                            }
                        }
                    }
                }
                else
                {
                    project.Update(rpcProject);
                }
            }
        }