private void _listView_ContextMenuOpening(object sender, ContextMenuEventArgs e)
        {
            var selectItems = _listView.SelectedItems;

            if (!_listViewDeleteMenuItem_IsEnabled)
            {
                _listViewDeleteMenuItem.IsEnabled = false;
            }
            else
            {
                _listViewDeleteMenuItem.IsEnabled = (selectItems != null && selectItems.Count > 0);
            }

            _listViewCopyMenuItem.IsEnabled     = (selectItems != null && selectItems.Count > 0);
            _listViewCopyInfoMenuItem.IsEnabled = (selectItems != null && selectItems.Count > 0);
            _listViewResetMenuItem.IsEnabled    = (selectItems != null && selectItems.Count > 0);
            _listViewPriorityMenuItem.IsEnabled = (selectItems != null && selectItems.Count > 0);

            if (!_listViewDeleteCompleteMenuItem_IsEnabled)
            {
                _listViewDeleteCompleteMenuItem.IsEnabled = false;
            }
            else
            {
                _listViewDeleteCompleteMenuItem.IsEnabled = _listViewModelCollection.Any(n => n.State == DownloadState.Completed);
            }

            _listViewPasteMenuItem.IsEnabled = Clipboard.ContainsSeeds();
        }
Beispiel #2
0
        private void UpdateTableSettings()
        {
            Logger.Instance.Write("UpdateTableSettings");

            //remove tableSetting not exist in dbTables
            for (int i = 0; i < tableSettings.Count; i++)
            {
                if (tables.Any(p => p.TableName == tableSettings[i].TableName) == false)
                {
                    Logger.Instance.Write($"     remove {tableSettings[i].TableName}");
                    tableSettings.RemoveAt(i);
                    i--;
                }
            }

            for (int i = 0; i < tables.Count; i++)
            {
                var item         = tables[i];
                var tableSetting = tableSettings.FirstOrDefault(p => p.TableName == item.TableName);
                if (tableSetting != null)
                {
                    Logger.Instance.Write($"     update {item.TableName}");
                    tableSetting.DbTable = item;
                }
                else
                {
                    TableSettings.Insert(i, new TableSetting()
                    {
                        TableName = item.TableName, DbTable = item
                    });
                    Logger.Instance.Write($"     add    {item.TableName}");
                }
            }
        }
Beispiel #3
0
        private void _listView_ContextMenuOpening(object sender, ContextMenuEventArgs e)
        {
            var selectItems = _listView.SelectedItems;

            if (!_listViewDeleteMenuItem_IsEnabled)
            {
                _listViewDeleteMenuItem.IsEnabled = false;
            }
            else
            {
                _listViewDeleteMenuItem.IsEnabled = (selectItems == null) ? false : (selectItems.Count > 0);
            }

            _listViewCopyMenuItem.IsEnabled     = (selectItems == null) ? false : (selectItems.Count > 0);
            _listViewCopyInfoMenuItem.IsEnabled = (selectItems == null) ? false : (selectItems.Count > 0);
            _listViewResetMenuItem.IsEnabled    = (selectItems == null) ? false : (selectItems.Count > 0);
            _listViewPriorityMenuItem.IsEnabled = (selectItems == null) ? false : (selectItems.Count > 0);

            if (!_listViewDeleteCompleteMenuItem_IsEnabled)
            {
                _listViewDeleteCompleteMenuItem.IsEnabled = false;
            }
            else
            {
                _listViewDeleteCompleteMenuItem.IsEnabled = _listViewItemCollection.Any(n => n.State == UploadState.Completed);
            }
        }
        public async Task RefreshContainerAsync()
        {
            Guid token;

            lock (_tokenSyncObj)
            {
                token         = Guid.NewGuid();
                _refreshToken = token;
            }

            try
            {
                var container = await _connectionHelper.MakeRequestAsync <MediaContainer>(Method.Get,
                                                                                          PlexResources.MyPlexBaseUrl, PlexResources.MyPlexDevices, user : User);

                bool updated;

                lock (_deviceSyncObj)
                {
                    if (token != _refreshToken)
                    {
                        return;
                    }

                    updated = _devices.UpdateToMatch(container.Devices, d => d.ClientIdentifier, UpdateDevice);
                    _servers.UpdateToMatch(GetByProvides(container, "server"), d => d.ClientIdentifier);
                    _players.UpdateToMatch(GetByProvides(container, "player"), d => d.ClientIdentifier);
                }

                if (updated)
                {
                    OnDevicesUpdated();
                }
            }
            catch
            {
                var updated = false;

                lock (_deviceSyncObj)
                {
                    if (token != _refreshToken)
                    {
                        return;
                    }

                    // lost connection, so clear everything
                    if (_devices.Any())
                    {
                        _devices.Clear();
                        _servers.Clear();
                        _players.Clear();

                        updated = true;
                    }
                }

                if (updated)
                {
                    OnDevicesUpdated();
                }
            }
        }
Beispiel #5
0
        public async Task RefreshContainerAsync()
        {
            Guid token;

            lock (_tokenSyncObj)
            {
                token         = Guid.NewGuid();
                _refreshToken = token;
            }

            try
            {
                var container = await _restConnection.MakeRequestAsync <MediaContainer, string>(Method.Get,
                                                                                                ResponseType.Xml, PlexResources.MyPlexBaseUrl, PlexResources.MyPlexDevices,
                                                                                                headers : PlexHeaders.CreatePlexRequest(User));

                if (container != null && container.ResponseObject != null)
                {
                    bool updated;
                    lock (_deviceSyncObj)
                    {
                        if (token != _refreshToken)
                        {
                            return;
                        }

                        updated = _devices.UpdateToMatch(container.ResponseObject.Devices, d => d.ClientIdentifier, UpdateDevice);
                        _servers.UpdateToMatch(GetByProvides(container.ResponseObject, "server"), d => d.ClientIdentifier);
                        _players.UpdateToMatch(GetByProvides(container.ResponseObject, "player"), d => d.ClientIdentifier);
                    }

                    if (updated)
                    {
                        OnDevicesUpdated();
                    }
                }
            }
            catch
            {
                var updated = false;

                lock (_deviceSyncObj)
                {
                    if (token != _refreshToken)
                    {
                        return;
                    }

                    // lost connection, so clear everything
                    if (_devices.Any())
                    {
                        _devices.Clear();
                        _servers.Clear();
                        _players.Clear();

                        updated = true;
                    }
                }

                if (updated)
                {
                    OnDevicesUpdated();
                }
            }
        }