Esempio n. 1
0
        private void ShowDownloadItem()
        {
            try
            {
                for (;;)
                {
                    var informaitonDic = new Dictionary <int, Information>();

                    {
                        string[] words = null;

                        {
                            string searchText = null;

                            this.Dispatcher.Invoke(DispatcherPriority.Background, new Action(() =>
                            {
                                searchText = _searchTextBox.Text;
                            }));

                            if (!string.IsNullOrWhiteSpace(searchText))
                            {
                                words = searchText.ToLower().Split(new string[] { " ", " " }, StringSplitOptions.RemoveEmptyEntries);
                            }
                        }

                        foreach (var item in _amoebaManager.DownloadingInformation.ToArray())
                        {
                            if (words != null)
                            {
                                var text = ((string)item["Path"] ?? "").ToLower();
                                if (!words.All(n => text.Contains(n)))
                                {
                                    continue;
                                }
                            }

                            informaitonDic[(int)item["Id"]] = item;
                        }
                    }

                    var listViewModelDic = new Dictionary <int, DownloadListViewModel>();
                    var removeList       = new List <DownloadListViewModel>();

                    this.Dispatcher.Invoke(DispatcherPriority.Background, new Action(() =>
                    {
                        foreach (var item in _listViewModelCollection.ToArray())
                        {
                            listViewModelDic[item.Id] = item;

                            if (!informaitonDic.ContainsKey(item.Id))
                            {
                                removeList.Add(item);
                            }
                        }
                    }));

                    var resultList = new List <DownloadListViewModel>();
                    var updateDic  = new Dictionary <DownloadListViewModel, Information>();

                    bool clearFlag   = false;
                    var  selectItems = new List <DownloadListViewModel>();

                    if (removeList.Count > 100)
                    {
                        clearFlag = true;

                        removeList.Clear();
                        updateDic.Clear();

                        foreach (var information in informaitonDic.Values)
                        {
                            resultList.Add(new DownloadListViewModel(information));
                        }

                        var hid = new HashSet <int>();

                        this.Dispatcher.Invoke(DispatcherPriority.Background, new Action(() =>
                        {
                            hid.UnionWith(_listView.SelectedItems.OfType <DownloadListViewModel>().Select(n => n.Id));
                        }));

                        foreach (var item in resultList)
                        {
                            if (hid.Contains(item.Id))
                            {
                                selectItems.Add(item);
                            }
                        }
                    }
                    else
                    {
                        foreach (var information in informaitonDic.Values)
                        {
                            DownloadListViewModel item;

                            if (listViewModelDic.TryGetValue((int)information["Id"], out item))
                            {
                                updateDic[item] = information;
                            }
                            else
                            {
                                resultList.Add(new DownloadListViewModel(information));
                            }
                        }
                    }

                    this.Dispatcher.Invoke(DispatcherPriority.Background, new Action(() =>
                    {
                        bool sortFlag = false;

                        if (resultList.Count != 0)
                        {
                            sortFlag = true;
                        }
                        if (removeList.Count != 0)
                        {
                            sortFlag = true;
                        }
                        if (updateDic.Count != 0)
                        {
                            sortFlag = true;
                        }

                        if (clearFlag)
                        {
                            _listViewModelCollection.Clear();
                        }

                        foreach (var item in resultList)
                        {
                            _listViewModelCollection.Add(item);
                        }

                        foreach (var item in removeList)
                        {
                            _listViewModelCollection.Remove(item);
                        }

                        foreach (var item in updateDic)
                        {
                            item.Key.Information = item.Value;
                        }

                        if (clearFlag)
                        {
                            _listView.SelectedItems.Clear();
                            _listView.SetSelectedItems(selectItems);
                        }

                        if (sortFlag)
                        {
                            this.Sort();
                        }
                    }));

                    for (int i = 0; i < 10; i++)
                    {
                        Thread.Sleep(1000 * 3);
                        if (_mainWindow.SelectedTab == MainWindowTabType.Download)
                        {
                            break;
                        }
                    }
                }
            }
            catch (Exception)
            {
            }
        }
Esempio n. 2
0
 public PointM[] GetLinePoints()
 {
     return(_Points.ToArray());
 }
Esempio n. 3
0
        private void ShowDownloadItem()
        {
            try
            {
                for (; ;)
                {
                    Thread.Sleep(100);
                    if (_mainWindow.SelectedTab != MainWindowTabType.Download)
                    {
                        continue;
                    }

                    var downloadingInformation        = _amoebaManager.DownloadingInformation.ToArray();
                    Dictionary <int, Information> dic = new Dictionary <int, Information>();

                    foreach (var item in downloadingInformation.ToArray())
                    {
                        dic[(int)item["Id"]] = item;
                    }

                    Dictionary <int, DownloadListViewItem> dic2 = new Dictionary <int, DownloadListViewItem>();

                    this.Dispatcher.Invoke(DispatcherPriority.ContextIdle, new Action(() =>
                    {
                        foreach (var item in _listViewItemCollection.ToArray())
                        {
                            dic2[item.Id] = item;
                        }
                    }));

                    List <DownloadListViewItem> removeList = new List <DownloadListViewItem>();

                    this.Dispatcher.Invoke(DispatcherPriority.ContextIdle, new Action(() =>
                    {
                        foreach (var item in _listViewItemCollection.ToArray())
                        {
                            if (!dic.ContainsKey(item.Id))
                            {
                                removeList.Add(item);
                            }
                        }
                    }));

                    List <DownloadListViewItem> newList = new List <DownloadListViewItem>();
                    Dictionary <DownloadListViewItem, Information> updateDic = new Dictionary <DownloadListViewItem, Information>();

                    bool clearFlag   = false;
                    var  selectItems = new List <DownloadListViewItem>();

                    if (removeList.Count > 100)
                    {
                        clearFlag = true;
                        removeList.Clear();
                        updateDic.Clear();

                        foreach (var information in downloadingInformation)
                        {
                            newList.Add(new DownloadListViewItem(information));
                        }

                        HashSet <int> hid = new HashSet <int>();

                        this.Dispatcher.Invoke(DispatcherPriority.ContextIdle, new Action(() =>
                        {
                            hid.UnionWith(_listView.SelectedItems.OfType <DownloadListViewItem>().Select(n => n.Id));
                        }));

                        foreach (var item in newList)
                        {
                            if (hid.Contains(item.Id))
                            {
                                selectItems.Add(item);
                            }
                        }
                    }
                    else
                    {
                        foreach (var information in downloadingInformation)
                        {
                            DownloadListViewItem item = null;

                            if (dic2.ContainsKey((int)information["Id"]))
                            {
                                item = dic2[(int)information["Id"]];
                            }

                            if (item != null)
                            {
                                if (!CollectionUtilities.Equals(item.Information, information))
                                {
                                    updateDic[item] = information;
                                }
                            }
                            else
                            {
                                newList.Add(new DownloadListViewItem(information));
                            }
                        }
                    }

                    this.Dispatcher.Invoke(DispatcherPriority.ContextIdle, new Action(() =>
                    {
                        bool sortFlag = false;

                        if (newList.Count != 0)
                        {
                            sortFlag = true;
                        }
                        if (removeList.Count != 0)
                        {
                            sortFlag = true;
                        }
                        if (updateDic.Count != 0)
                        {
                            sortFlag = true;
                        }

                        if (clearFlag)
                        {
                            _listViewItemCollection.Clear();
                        }

                        foreach (var item in newList)
                        {
                            _listViewItemCollection.Add(item);
                        }

                        foreach (var item in removeList)
                        {
                            _listViewItemCollection.Remove(item);
                        }

                        foreach (var item in updateDic)
                        {
                            item.Key.Information = item.Value;
                        }

                        if (clearFlag)
                        {
                            _listView.SelectedItems.Clear();
                            _listView.SetSelectedItems(selectItems);
                        }

                        if (sortFlag)
                        {
                            this.Sort();
                        }
                    }));

                    Thread.Sleep(1000 * 3);
                }
            }
            catch (Exception)
            {
            }
        }
Esempio n. 4
0
        private void ShowConnectionInfomation()
        {
            try
            {
                for (;;)
                {
                    var connectionInformation = _amoebaManager.ConnectionInformation.ToArray();
                    var dic = new Dictionary <int, Information>();

                    foreach (var item in connectionInformation.ToArray())
                    {
                        dic[(int)item["Id"]] = item;
                    }

                    var dic2 = new Dictionary <int, ConnectionListViewModel>();

                    this.Dispatcher.Invoke(DispatcherPriority.Background, new Action(() =>
                    {
                        foreach (var item in _listViewModelCollection.ToArray())
                        {
                            dic2[item.Id] = item;
                        }
                    }));

                    var removeList = new List <ConnectionListViewModel>();

                    this.Dispatcher.Invoke(DispatcherPriority.Background, new Action(() =>
                    {
                        foreach (var item in _listViewModelCollection.ToArray())
                        {
                            if (!dic.ContainsKey(item.Id))
                            {
                                removeList.Add(item);
                            }
                        }
                    }));

                    var newList   = new List <ConnectionListViewModel>();
                    var updateDic = new Dictionary <ConnectionListViewModel, Information>();

                    bool clearFlag   = false;
                    var  selectItems = new List <ConnectionListViewModel>();

                    if (removeList.Count > 100)
                    {
                        clearFlag = true;
                        removeList.Clear();
                        updateDic.Clear();

                        foreach (var information in connectionInformation)
                        {
                            newList.Add(new ConnectionListViewModel(information));
                        }

                        var hid = new HashSet <int>();

                        this.Dispatcher.Invoke(DispatcherPriority.Background, new Action(() =>
                        {
                            hid.UnionWith(_listView.SelectedItems.OfType <ConnectionListViewModel>().Select(n => n.Id));
                        }));

                        foreach (var item in newList)
                        {
                            if (hid.Contains(item.Id))
                            {
                                selectItems.Add(item);
                            }
                        }
                    }
                    else
                    {
                        foreach (var information in connectionInformation)
                        {
                            ConnectionListViewModel item = null;

                            if (dic2.ContainsKey((int)information["Id"]))
                            {
                                item = dic2[(int)information["Id"]];
                            }

                            if (item != null)
                            {
                                updateDic[item] = information;
                            }
                            else
                            {
                                newList.Add(new ConnectionListViewModel(information));
                            }
                        }
                    }

                    this.Dispatcher.Invoke(DispatcherPriority.Background, new Action(() =>
                    {
                        bool sortFlag = false;

                        if (newList.Count != 0)
                        {
                            sortFlag = true;
                        }
                        if (removeList.Count != 0)
                        {
                            sortFlag = true;
                        }
                        if (updateDic.Count != 0)
                        {
                            sortFlag = true;
                        }

                        if (clearFlag)
                        {
                            _listViewModelCollection.Clear();
                        }

                        foreach (var item in newList)
                        {
                            _listViewModelCollection.Add(item);
                        }

                        foreach (var item in removeList)
                        {
                            _listViewModelCollection.Remove(item);
                        }

                        foreach (var item in updateDic)
                        {
                            item.Key.Information = item.Value;
                        }

                        if (clearFlag)
                        {
                            _listView.SelectedItems.Clear();
                            _listView.SetSelectedItems(selectItems);
                        }

                        if (sortFlag)
                        {
                            this.Sort();
                        }
                    }));

                    Thread.Sleep(1000 * 3);
                }
            }
            catch (Exception)
            {
            }
        }