/// <summary> /// Use the SEARCH_STATUS class to pass in status Data. If totalCount is zero, then progress will be indicated /// by currentTime as referenced to startTime/endTime. If totalCount is non-zero, then progress will be indicated /// by currentCount as a percentage of totalCount. /// In either case, currentTime will be indicated to the user as the current search point. /// </summary> /// <param name="status"></param> public void SetStatus(SearchLib.SEARCH_STATUS status) { if (status.totalCount == 0) { this.BeginInvoke((MethodInvoker) delegate { _SetStatus(status, status.currentTime, 0, 0, status.startTime, status.endTime, status.errorString); }); } else { this.BeginInvoke((MethodInvoker) delegate { _SetStatus(status, status.currentTime, status.currentCount, status.totalCount, default(DateTime), default(DateTime), status.errorString); }); } }
/// <summary> /// Set Current Status /// </summary> /// void _SetStatus(SearchLib.SEARCH_STATUS status, DateTime currentSearchTime, int count, int totalCount, DateTime startTime, DateTime endTime, string errors) { switch (status.phase) { case SearchLib.SEARCH_PHASE.COMPARING_STRINGS: labelSearchPhase.Text = "Searching Plate Strings"; labelCurrentlyAt.Text = currentSearchTime.ToString(m_AppData.TimeFormatStringForDisplay); textBoxErrorText.Text = (errors == null) ? m_lastError : errors; SetProgressIndicator(count, totalCount); break; case SearchLib.SEARCH_PHASE.FINDING_ITEMS_IN_TIME_RANGE: labelSearchPhase.Text = "Finding Items In Time Range"; labelCurrentlyAt.Text = currentSearchTime.ToString(m_AppData.TimeFormatStringForDisplay); textBoxErrorText.Text = (errors == null) ? m_lastError : errors; SetProgressIndicator(currentSearchTime, startTime, endTime); break; case SearchLib.SEARCH_PHASE.COMPLETE: labelSearchPhase.Text = "Search Complete"; labelCurrentlyAt.Text = currentSearchTime.ToString(m_AppData.TimeFormatStringForDisplay); textBoxErrorText.Text = (errors == null) ? m_lastError : errors; if (totalCount == 0) { SetProgressIndicator(currentSearchTime, startTime, endTime); } else { SetProgressIndicator(count, totalCount); } ShowSearchCompleteIndicator(); break; case SearchLib.SEARCH_PHASE.LOADING_RESULTS: labelSearchPhase.Text = "Loading Results"; labelCurrentlyAt.Text = currentSearchTime.ToString(m_AppData.TimeFormatStringForDisplay); textBoxErrorText.Text = (errors == null) ? m_lastError : errors; SetProgressIndicator(count, totalCount); break; } if (errors != null) { m_lastError = errors; } }
void SearchProgressCB(SearchLib.SEARCH_STATUS status) { try { // just send this to the display m_SearchStatusDisplay.SetStatus(status); switch (status.errorCode) { case SearchLib.SEARCH_ERROR_CODES.TOO_MANY_ENTRIES: m_SearchTool.StopSearch(); break; } } catch (Exception ex) { m_Log.Trace(ex, ErrorLog.LOG_TYPE.INFORMATIONAL); } }
void _SearchCompleteCB(List <SearchLib.SEARCH_RESULT> results) { SearchLib.SEARCH_STATUS status = new SearchLib.SEARCH_STATUS(); status.phase = SearchLib.SEARCH_PHASE.LOADING_RESULTS; status.totalCount = (results == null) ? 0 : results.Count; status.currentCount = 0; m_SearchStatusDisplay.SetStatus(status); if (results == null) { // there was an error or no data found status.phase = SearchLib.SEARCH_PHASE.COMPLETE; status.totalCount = 0; status.currentCount = 0; m_SearchStatusDisplay.SetStatus(status); m_SearchInProgress = false; return; } // do work here m_LastSearchResults = results; numItemsFoundLabel.Text = results.Count.ToString(); int loopCount = 0; m_AddingRowsToDataGrid = true; foreach (SearchLib.SEARCH_RESULT r in results) { loopCount++; Bitmap flag = m_NullImage; string GPSLocation = r.plateData.GPSLatitude + "," + r.plateData.GPSLongitude; string gpsTest = GPSLocation.ToLower(); if (gpsTest.Contains("no position")) { flag = m_LittleRedFlag; } else { flag = m_LittleGreenFlag; } dataGridView1.Rows.Add(r.percentMatch, r.matchedString, r.plateData.timeStamp, r.plateData.PSSName, r.plateData.sourceChannelName, r.plateData.jpegRelativeFilePath, flag, GPSLocation); Application.DoEvents();// process windows thread messages in this very long loop if (loopCount % 100 == 0) { status.currentCount = loopCount; status.currentTime = r.plateData.timeStamp; m_SearchStatusDisplay.SetStatus(status); } } if (m_SearchByNumber) { dataGridView1.Sort(dataGridView1.Columns["SearchMatchLikelyhood"], ListSortDirection.Descending); } else { dataGridView1.Sort(new RowComparer(SortOrder.Ascending)); } status.phase = SearchLib.SEARCH_PHASE.COMPLETE; status.totalCount = results.Count; status.currentCount = results.Count; m_SearchStatusDisplay.SetStatus(status); m_SearchInProgress = false; m_AddingRowsToDataGrid = false; }
void _SearchCompleteCB(List<SearchLib.SEARCH_RESULT> results) { SearchLib.SEARCH_STATUS status = new SearchLib.SEARCH_STATUS(); status.phase = SearchLib.SEARCH_PHASE.LOADING_RESULTS; status.totalCount = (results == null ) ? 0 : results.Count; status.currentCount = 0; m_SearchStatusDisplay.SetStatus(status); if (results == null) { // there was an error or no data found status.phase = SearchLib.SEARCH_PHASE.COMPLETE; status.totalCount = 0; status.currentCount = 0; m_SearchStatusDisplay.SetStatus(status); m_SearchInProgress = false; return; } // do work here m_LastSearchResults = results; numItemsFoundLabel.Text = results.Count.ToString(); int loopCount = 0; m_AddingRowsToDataGrid = true; foreach (SearchLib.SEARCH_RESULT r in results) { loopCount++; Bitmap flag = m_NullImage; string GPSLocation = r.plateData.GPSLatitude + "," + r.plateData.GPSLongitude; string gpsTest = GPSLocation.ToLower(); if (gpsTest.Contains("no position")) { flag = m_LittleRedFlag; } else { flag = m_LittleGreenFlag; } dataGridView1.Rows.Add(r.percentMatch, r.matchedString, r.plateData.timeStamp, r.plateData.PSSName, r.plateData.sourceChannelName, r.plateData.jpegRelativeFilePath, flag, GPSLocation); Application.DoEvents();// process windows thread messages in this very long loop if (loopCount % 100 == 0) { status.currentCount = loopCount; status.currentTime = r.plateData.timeStamp; m_SearchStatusDisplay.SetStatus(status); } } if (m_SearchByNumber) dataGridView1.Sort(dataGridView1.Columns["SearchMatchLikelyhood"], ListSortDirection.Descending); else dataGridView1.Sort(new RowComparer(SortOrder.Ascending)); status.phase = SearchLib.SEARCH_PHASE.COMPLETE; status.totalCount = results.Count; status.currentCount = results.Count; m_SearchStatusDisplay.SetStatus(status); m_SearchInProgress = false; m_AddingRowsToDataGrid = false; }