Пример #1
0
        internal void UpdateSearchResults(int index)
        {
            if (index == -1)
            {
                _b.GUI.lb_searchResults.Items.Clear();
                return;
            }

            GuiSearch gs = new GuiSearch();

            if (!GetSearchByIndex((ushort)index, out gs))
            {
                return;
            }
            if (gs.Results == null)
            {
                return;
            }

            _b.GUI.lb_searchResults.Items.Clear();
            foreach (SearchHit sh in gs.Results)
            {
                _b.GUI.lb_searchResults.Items.Add(sh.no_hits + " hits - " + Processor.BuildSizeString(sh.file.size) + " - " + sh.file.name);
            }

            //if (index < _b.GUI.lb_searchResults.Items.Count)
            //    _b.GUI.lb_searchResults.SelectedIndex = index;
        }
Пример #2
0
        internal void GetSearchResults(uint limit = 500)
        {
            if (_searches.Count == 0)
            {
                return;
            }

            List <uint> searchIDs = new List <uint>();

            GuiSearch[] values = new GuiSearch[_searches.Values.Count];
            _searches.Values.CopyTo(values, 0);
            foreach (GuiSearch gs in values)
            {
                if (gs.Age > 10 && gs.Age < 60)
                {
                    System.Diagnostics.Debug.WriteLineIf(DEBUG, "Search: requesting results for " + gs.ID);
                    searchIDs.Add(gs.ID);
                }
            }
            if (searchIDs.Count > 0)
            {
                //_bridge.RPC.SearchResult(searchIDs, limit); sending IDs doens't work at the moment
                _b.RPC.SearchResult(new List <uint>()
                {
                }, limit);
            }
        }
Пример #3
0
 internal void CloseAllSearches()
 {
     GuiSearch[] values = new GuiSearch[_searches.Count];
     _searches.Values.CopyTo(values, 0);
     foreach (GuiSearch gs in values)
     {
         _b.RPC.SearchClose(gs.ID);
     }
 }
Пример #4
0
        internal void RemoveSearch(int index)
        {
            GuiSearch gs = new GuiSearch();

            if (GetSearchByIndex((ushort)index, out gs))
            {
                _b.RPC.SearchClose(gs.ID);
                _searches.Remove(gs.ID);
                UpdateSearches();
                UpdateSearchResults(-1);
            }
        }
Пример #5
0
        private void bt_searchAddToDL_Click(object sender, EventArgs e)
        {
            if (lb_searchResults.SelectedIndex == -1)
            {
                return;
            }

            GuiSearch gs = new GuiSearch();

            if (_b.SearchProcessor.GetSearchByIndex((ushort)lb_searches.SelectedIndex, out gs))
            {
                _b.RPC.FilesControllDownload(RequestControlDownload.Action.ACTION_START, gs.Results[lb_searchResults.SelectedIndex].file);
            }
        }
Пример #6
0
 internal bool GetSearchByIndex(ushort index, out GuiSearch gs)
 {
     gs = new GuiSearch();
     GuiSearch[] values = new GuiSearch[_searches.Values.Count];
     _searches.Values.CopyTo(values, 0);
     foreach (GuiSearch gs2 in values)
     {
         if (gs2.Index == index)
         {
             gs = gs2;
             return(true);
         }
     }
     return(false);
 }
Пример #7
0
        internal void RegisterSearchIDs(uint ReqID, ResponseSearchIds response)
        {
            if (_pendingSearchReq.ContainsKey(ReqID))
            {
                GuiSearch gs = new GuiSearch();
                gs.KeyWords    = _pendingSearchReq[ReqID];
                gs.RequestTime = DateTime.Now;
                gs.Results     = new List <SearchHit>();
                gs.ID          = response.search_id[0]; // for now we only support one ID

                System.Diagnostics.Debug.WriteLineIf(DEBUG, "Search: Adding ID " + gs.ID);
                _searches.Add(gs.ID, gs);
                _pendingSearchReq.Remove(ReqID);

                UpdateSearches();
            }
        }
Пример #8
0
        internal void ProcessSearchResults(ResponseSearchResults response)
        {
            GuiSearch gs      = new GuiSearch();
            bool      updated = false;

            System.Diagnostics.Debug.WriteLineIf(DEBUG, "Search: Processing " + response.searches.Count + " search results");
            foreach (SearchSet ss in response.searches)
            {
                System.Diagnostics.Debug.WriteLineIf(DEBUG, "Search: Processing ID" + ss.search_id + " with " + ss.hits.Count + " hits");
                if (_searches.ContainsKey(ss.search_id))
                {
                    gs = _searches[ss.search_id];
                    System.Diagnostics.Debug.WriteLineIf(DEBUG, "Search: Updating results (ID " + gs.ID + ")");
                    if (ss.hits.Count > 0)
                    {
                        gs.Results.Clear();
                    }
                    foreach (SearchHit sh in ss.hits)
                    {
                        updated = false;
                        // update
                        for (int i = 0; i < gs.Results.Count; i++)
                        {
                            if (gs.Results[i].file.hash == sh.file.hash)
                            {
                                gs.Results[i].no_hits  += sh.no_hits;
                                gs.Results[i].file.name = (gs.Results[i].file.name.Length > sh.file.name.Length) ? gs.Results[i].file.name : sh.file.name;
                                updated = true;
                            }
                        }
                        // adding new
                        if (!updated)
                        {
                            gs.Results.Add(sh);
                        }
                    }
                    _searches[ss.search_id] = gs;
                }
            }
            UpdateSearches();
            UpdateSearchResults(_b.GUI.lb_searches.SelectedIndex);
        }
Пример #9
0
        internal void UpdateSearches()
        {
            GuiSearch gs2;
            uint      selectedID    = 0;
            ushort    selectedIndex = ushort.MaxValue;

            if (_b.GUI.lb_searches.SelectedIndex != -1)
            {
                if (GetSearchByIndex((ushort)_b.GUI.lb_searches.SelectedIndex, out gs2))
                {
                    selectedID = gs2.ID;
                }
            }


            GuiSearch[] values = new GuiSearch[_searches.Values.Count];
            _searches.Values.CopyTo(values, 0);
            Array.Sort(values, new GuiSearchComparer(GuiSearchComparer.CompareType.RequestTime));
            _b.GUI.lb_searches.Items.Clear();
            foreach (GuiSearch gs in values)
            {
                gs2              = _searches[gs.ID];
                gs2.Index        = (ushort)_b.GUI.lb_searches.Items.Count;
                _searches[gs.ID] = gs2;
                _b.GUI.lb_searches.Items.Add(((gs.Results != null) ? gs.Results.Count : 0) + " - " + gs.KeyWords);

                if (gs.ID == selectedID)
                {
                    selectedIndex = gs.Index;
                }
            }

            if (selectedIndex < _b.GUI.lb_searchResults.Items.Count)
            {
                _b.GUI.lb_searches.SelectedIndex = selectedIndex;
            }
        }