private async void CopyAsProfileAction() { CustomDialog customDialog = new CustomDialog() { Title = LocalizationManager.GetStringByKey("String_Header_CopyProfile") }; PingProfileViewModel pingProfileViewModel = new PingProfileViewModel(instance => { dialogCoordinator.HideMetroDialogAsync(this, customDialog); PingProfileInfo pingProfileInfo = new PingProfileInfo { Name = instance.Name, Host = instance.Host, Group = instance.Group, Tags = instance.Tags }; PingProfileManager.AddProfile(pingProfileInfo); }, instance => { dialogCoordinator.HideMetroDialogAsync(this, customDialog); }, PingProfileManager.GetProfileGroups(), SelectedProfile); customDialog.Content = new PingProfileDialog { DataContext = pingProfileViewModel }; await dialogCoordinator.ShowMetroDialogAsync(this, customDialog); }
public PingHostViewModel(IDialogCoordinator instance) { dialogCoordinator = instance; InterTabClient = new DragablzInterTabClient(ApplicationViewManager.Name.Ping); TabItems = new ObservableCollection <DragablzTabItem>() { new DragablzTabItem(LocalizationManager.GetStringByKey("String_Header_NewTab"), new PingView(_tabId), _tabId) }; // Load profiles if (PingProfileManager.Profiles == null) { PingProfileManager.Load(); } _pingProfiles = CollectionViewSource.GetDefaultView(PingProfileManager.Profiles); _pingProfiles.GroupDescriptions.Add(new PropertyGroupDescription("Group")); _pingProfiles.SortDescriptions.Add(new SortDescription("Group", ListSortDirection.Ascending)); _pingProfiles.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending)); _pingProfiles.Filter = o => { if (string.IsNullOrEmpty(Search)) { return(true); } PingProfileInfo info = o as PingProfileInfo; string search = Search.Trim(); // Search by: Tag if (search.StartsWith(tagIdentifier, StringComparison.OrdinalIgnoreCase)) { if (string.IsNullOrEmpty(info.Tags)) { return(false); } else { return(info.Tags.Replace(" ", "").Split(';').Any(str => search.Substring(tagIdentifier.Length, search.Length - tagIdentifier.Length).IndexOf(str, StringComparison.OrdinalIgnoreCase) > -1)); } } else // Search by: Name, Hostname { return(info.Name.IndexOf(search, StringComparison.OrdinalIgnoreCase) > -1 || info.Host.IndexOf(search, StringComparison.OrdinalIgnoreCase) > -1); } }; LoadSettings(); _isLoading = false; }
public PingProfileViewModel(Action <PingProfileViewModel> saveCommand, Action <PingProfileViewModel> cancelHandler, List <string> groups, PingProfileInfo profileInfo = null) { _saveCommand = new RelayCommand(p => saveCommand(this)); _cancelCommand = new RelayCommand(p => cancelHandler(this)); _profileInfo = profileInfo ?? new PingProfileInfo(); Name = _profileInfo.Name; Host = _profileInfo.Host; // Get the group, if not --> get the first group (ascending), fallback --> default group Group = string.IsNullOrEmpty(_profileInfo.Group) ? (groups.Count > 0 ? groups.OrderBy(x => x).First() : LocalizationManager.GetStringByKey("String_Default")) : _profileInfo.Group; Tags = _profileInfo.Tags; _groups = CollectionViewSource.GetDefaultView(groups); _groups.SortDescriptions.Add(new SortDescription()); _isLoading = false; }