コード例 #1
0
        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);
        }
コード例 #2
0
        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;
        }
コード例 #3
0
        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;
        }