1- using System . ComponentModel ;
2- using System . Diagnostics ;
1+ using AngleSharp . Css . Values ;
2+ using AngleSharp . Html . Parser ;
33using JetBrains . Annotations ;
44using Kantan . Diagnostics ;
5+ using SmartImage . Lib . Images ;
56using SmartImage . Lib . Utilities ;
7+ using System . Collections . Concurrent ;
8+ using System . ComponentModel ;
9+ using System . Diagnostics ;
610
711namespace SmartImage . Lib . Engines . Results ;
812
@@ -42,6 +46,7 @@ public Url RawUrl
4246 [ NN ]
4347 public List < SearchResultItem > Results { get ; }
4448
49+
4550 [ CBN ]
4651 public string ErrorMessage { get ; internal set ; }
4752
@@ -86,7 +91,7 @@ public virtual void Update()
8691 }
8792
8893
89- #region
94+ #region
9095
9196 public event PropertyChangedEventHandler PropertyChanged ;
9297
@@ -105,7 +110,7 @@ private bool SetField<T>(ref T field, T value, [CMN] string propertyName = null)
105110 return true ;
106111 }
107112
108- #endregion
113+ #endregion
109114
110115 [ CBN ]
111116 public SearchResultItem GetBestResult ( )
@@ -118,6 +123,87 @@ public SearchResultItem GetBestResult()
118123 . FirstOrDefault ( ) ;
119124 }
120125
126+ /*public int Index(SearchResultItem item, SearchResultItem scn)
127+ {
128+ int root;
129+ int scKi = 0;
130+ int scKi2 = 0;
131+
132+ root = Results.IndexOf(item);
133+
134+ // scKi = ScannedResults.IndexOf(item);
135+ if (scn != null) {
136+ scKi = 1;
137+ }
138+
139+ /*foreach ((SearchResultItem key, SearchResultItem[] value) in ScannedResults) {
140+ if (key == item) {
141+ scKi2 = Array.IndexOf(value, scn);
142+
143+ /*if (scKi2==0) {
144+ scKi2++;
145+ }#2#
146+ if (scKi2==-1) {
147+ // scKi2=0;
148+ }
149+
150+ // break;
151+ }
152+ else {
153+ scKi += value.Length;
154+
155+ }
156+
157+ // scKi += value.Length;
158+
159+ }#1#
160+
161+
162+ /*if (ScannedResults.TryGetValue(sri, out SearchResultItem[] sci)) {
163+ var i = Array.IndexOf(sci, sri);
164+ root += i == -1 ? 0 : i;
165+ }
166+
167+ for (int i = 0; i < ScannedResults.Count; i++) { }#1#
168+
169+ return root + scKi + scKi2;
170+
171+ }
172+
173+ public int Index(SearchResultItem sri)
174+ {
175+ var root = Results.IndexOf(sri.Parent);
176+
177+ // var scKi = ScannedResults.IndexOf(sri);
178+ var scKi2 = 0;
179+
180+ /*if (scKi != -1) {
181+ for (int sc = 0; sc < scKi; sc++) {
182+ var scannedItems = ScannedResults[sri];
183+ var scI2 = Array.IndexOf(scannedItems, sri);
184+
185+ if (scI2 != -1) {
186+ scKi2 += scI2;
187+ }
188+ }
189+ }
190+ else {
191+ scKi = 0;
192+ }#1#
193+
194+
195+ /*if (ScannedResults.TryGetValue(sri, out SearchResultItem[] sci)) {
196+ var i = Array.IndexOf(sci, sri);
197+ root += i == -1 ? 0 : i;
198+ }
199+
200+ for (int i = 0; i < ScannedResults.Count; i++) { }#1#
201+
202+ // return root + scKi + scKi2;
203+
204+ return root + scKi2;
205+ }*/
206+
121207 public override string ToString ( )
122208 {
123209 return $ "[{ Engine . Name } ] { RawUrl } | { Results . Count } | { Status } { ErrorMessage } ";
@@ -127,10 +213,19 @@ public void Dispose()
127213 {
128214 GC . SuppressFinalize ( this ) ;
129215 Debug . WriteLine ( $ "Disposing { Engine . Name } with { Results . Count } ", LogCategories . C_VERBOSE ) ;
130-
216+
131217 foreach ( SearchResultItem item in Results ) {
218+ /*if (ScannedResults.TryGetValue(item, out var scanned)) {
219+ foreach (var sci in scanned) {
220+ sci.Dispose();
221+ }
222+ }*/
223+
132224 item . Dispose ( ) ;
133225 }
226+
227+ // ScannedResults.Clear();
228+
134229 }
135230
136231}
0 commit comments