public RemoteDesktopViewModel(IDialogCoordinator instance)
        {
            dialogCoordinator = instance;

            InterTabClient = new DragablzMainInterTabClient();
            TabContents    = new ObservableCollection <DragablzTabContent>();

            // Load sessions
            if (RemoteDesktopSessionManager.Sessions == null)
            {
                RemoteDesktopSessionManager.Load();
            }

            _remoteDesktopSessions = CollectionViewSource.GetDefaultView(RemoteDesktopSessionManager.Sessions);
            _remoteDesktopSessions.GroupDescriptions.Add(new PropertyGroupDescription("Group"));
            _remoteDesktopSessions.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending));
            _remoteDesktopSessions.Filter = o =>
            {
                if (string.IsNullOrEmpty(Search))
                {
                    return(true);
                }

                RemoteDesktopSessionInfo info = o as RemoteDesktopSessionInfo;

                string search = Search.Trim();

                // Search by: Name
                return(info.Name.IndexOf(search, StringComparison.OrdinalIgnoreCase) >= 0);
            };

            LoadSettings();

            _isLoading = false;
        }
        public RemoteDesktopViewModel(IDialogCoordinator instance)
        {
            dialogCoordinator = instance;

            // Check if RDP 8.1 is available
            IsRDP8dot1Available = Models.RemoteDesktop.RemoteDesktop.IsRDP8dot1Available();

            if (IsRDP8dot1Available)
            {
                InterTabClient = new DragablzMainInterTabClient();
                TabItems       = new ObservableCollection <DragablzRemoteDesktopTabItem>();

                // Load sessions
                if (RemoteDesktopSessionManager.Sessions == null)
                {
                    RemoteDesktopSessionManager.Load();
                }

                _remoteDesktopSessions = CollectionViewSource.GetDefaultView(RemoteDesktopSessionManager.Sessions);
                _remoteDesktopSessions.GroupDescriptions.Add(new PropertyGroupDescription("Group"));
                _remoteDesktopSessions.SortDescriptions.Add(new SortDescription("Group", ListSortDirection.Ascending));
                _remoteDesktopSessions.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending));
                _remoteDesktopSessions.Filter = o =>
                {
                    if (string.IsNullOrEmpty(Search))
                    {
                        return(true);
                    }

                    RemoteDesktopSessionInfo info = o as RemoteDesktopSessionInfo;

                    string search = Search.Trim();

                    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
                    {
                        return(info.Name.IndexOf(search, StringComparison.OrdinalIgnoreCase) > -1);
                    }
                };

                LoadSettings();
            }

            _isLoading = false;
        }
        public PingHostViewModel()
        {
            ChangeTabTitleAction = ChangeTabTitle;

            InterTabClient = new DragablzMainInterTabClient();

            TabItems = new ObservableCollection <DragablzPingTabItem>()
            {
                new DragablzPingTabItem(Application.Current.Resources["String_Header_Ping"] as string, new PingView(_tabId, ChangeTabTitleAction), _tabId)
            };
        }