コード例 #1
0
        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);
        }
コード例 #2
0
        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();
        }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
        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));
        }