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; }
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); } }
internal void CloseAllSearches() { GuiSearch[] values = new GuiSearch[_searches.Count]; _searches.Values.CopyTo(values, 0); foreach (GuiSearch gs in values) { _b.RPC.SearchClose(gs.ID); } }
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); } }
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); } }
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); }
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(); } }
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); }
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; } }