private IEnumerator AppendingPrograms(SearchProgramParameter parameter) { ShowIndicatorView(true); yield return(null); int maxSearchCount = Constants.MaxSearchProgramCount; do { yield return(StartCoroutine(_netClient.GetPrograms(parameter, maxSearchCount))); } while(parameter.offset < parameter.metaCount && parameter.searchCount < maxSearchCount); _number = parameter.number; _offset = parameter.offset; _metaCount = parameter.metaCount; _programInfos.AddRange(parameter.programInfos); _beginOffsetIndex = Mathf.Max(0, _programInfos.Count - Constants.MaxSearchProgramBufferCount); _endOffsetIndex = _programInfos.Count; uiSearchProgramView.AppendView(parameter.programInfos); // to prevent from clicking button after appending programs. yield return(new WaitForSeconds(0.5f)); _appendingProgramsCoroutine = null; ShowIndicatorView(false); //Debug.Log("(AppendingPrograms()) - (programCount)" + _programInfos.Count + "(_beginOffset)" + _beginOffsetIndex + "(_endOffset)" + _endOffsetIndex + "(Time.time)" + Time.time); }
private IEnumerator UpdatingPrograms(SearchProgramParameter parameter) { ShowIndicatorView(true); yield return(null); int maxSearchCount = Constants.MaxSearchProgramCount; do { yield return(StartCoroutine(_netClient.GetPrograms(parameter, maxSearchCount))); } while(parameter.offset < parameter.metaCount && parameter.searchCount < maxSearchCount); _number = parameter.number; _offset = parameter.offset; _metaCount = parameter.metaCount; _programInfos.AddRange(parameter.programInfos); _beginOffsetIndex = 0; _endOffsetIndex = _programInfos.Count; uiSearchProgramView.UpdateView(_programInfos); _updatingProgramsCoroutine = null; if (parameter.searchCount != 0) { ShowIndicatorView(false); } else { ShowIndicatorView(true, UIIndicatorView.Mode.LogMessage, "No results found."); } Resources.UnloadUnusedAssets(); }
private void OnSearchProgramViewAppend() { if (_programInfos.Count == 0 || _appendingProgramsCoroutine != null) { return; } if (_endOffsetIndex == _programInfos.Count) { if (_offset == _metaCount) { return; } SearchProgramParameter parameter = new SearchProgramParameter(); parameter.number = _number; parameter.keyword = _keyword; parameter.offset = _offset; parameter.metaCount = _metaCount; _appendingProgramsCoroutine = StartCoroutine(AppendingPrograms(parameter)); } else { int count; int startIndex = _endOffsetIndex; if (_endOffsetIndex + Constants.MaxSearchProgramCount < _programInfos.Count) { _beginOffsetIndex += Constants.MaxSearchProgramCount; _endOffsetIndex += Constants.MaxSearchProgramCount; count = Constants.MaxSearchProgramCount; } else { count = _programInfos.Count - _endOffsetIndex; _endOffsetIndex = _programInfos.Count; _beginOffsetIndex += count; } _cachedProgramInfos.Clear(); for (int i = 0; i < count; ++i) { _cachedProgramInfos.Add(_programInfos[startIndex + i]); } uiSearchProgramView.AppendView(_cachedProgramInfos); //Debug.Log("(OnSearchProgramViewAppend() - (_beginOffset)" + _beginOffsetIndex + "(_endOffset)" + _endOffsetIndex); } }
private void OnSearchButtonClick(string keyword) { if (_updatingProgramsCoroutine != null) { return; } _number = 1; _keyword = keyword; _offset = 0; _metaCount = 0; _beginOffsetIndex = 0; _endOffsetIndex = 0; _programInfos.Clear(); SearchProgramParameter parameter = new SearchProgramParameter(); parameter.keyword = _keyword; parameter.number = 1; _updatingProgramsCoroutine = StartCoroutine(UpdatingPrograms(parameter)); }