예제 #1
0
        private void _searchTimer_Tick(object sender, EventArgs e)
        {
            var oldIso    = _model.ISOCode;
            var typedText = _searchText.Text.Trim();

            if (typedText == _lastSearchedForText)
            {
                return;
            }
            _lastSearchedForText = typedText;
            _listView.SuspendLayout();

            _listView.Items.Clear();
            _listView.SelectedIndices.Clear();
            var toShow = new List <ListViewItem>();


            if (_searchText.Text == "?")
            {
                var           description      = L10NSharp.LocalizationManager.GetString("LanguageLookup.UnlistedLanguage", "Unlisted Language");
                List <string> names            = new List <string>(new string[] { description });
                LanguageInfo  unlistedLanguage = new LanguageInfo()
                {
                    Code = "qaa", Country = "", Names = names
                };
                ListViewItem item = new ListViewItem(description);
                item.SubItems.Add("qaa");
                item.Tag      = unlistedLanguage;
                item.Selected = true;
                _listView.Items.Add(item);
            }
            else
            {
                var itemSelected = false;
                foreach (LanguageInfo lang in _model.GetMatchingLanguages(typedText))
                {
                    ListViewItem item = new ListViewItem(lang.Names[0]);
                    item.SubItems.Add(lang.Code);
                    item.SubItems.Add(lang.Country);
                    item.SubItems.Add(string.Join(", ", lang.Names.Skip(1)));
                    item.SubItems.Add(lang.Country);
                    item.Tag = lang;
                    toShow.Add(item);

//					if (!itemSelected && typedText.Length > 1 &&
//					    (lang.Code.ToLower() == typedText || lang.Names[0].ToLower().StartsWith(typedText.ToLower())))
                    if (!itemSelected)
                    {
                        item.Selected = true;
                        itemSelected  = true;                        //we only want to select the first one
                    }
                }
                if (!itemSelected)
                {
                    _model.LanguageInfo = null;
                    //_desiredLanguageDisplayName.Text = _searchText.Text;
                }
                _desiredLanguageDisplayName.Enabled = itemSelected;
                _listView.Items.AddRange(toShow.ToArray());
            }
            _listView.ResumeLayout();
            //            if (_listView.Items.Count > 0)
            //            {
            //                _listView.SelectedIndices.Add(0);
            //            }			if(_model.ISOCode != oldIso)
            UpdateReadiness();
        }
예제 #2
0
        private void _searchTimer_Tick(object sender, EventArgs e)
        {
            var oldIso    = _model.ISOCode;
            var typedText = _searchText.Text.Trim();

            if (typedText == _lastSearchedForText)
            {
                return;
            }
            _lastSearchedForText = typedText;
            _listView.SuspendLayout();

            _listView.Items.Clear();
            _listView.SelectedIndices.Clear();
            var toShow = new List <ListViewItem>();

            var multipleCountriesLabel = LocalizationManager.GetString("LanguageLookup.CountryCount", "{0} Countries", "Shown when there are multiple countries and it is just confusing to list them all.");

            if (_searchText.Text == "?")
            {
                var           description      = L10NSharp.LocalizationManager.GetString("LanguageLookup.UnlistedLanguage", "Unlisted Language");
                List <string> names            = new List <string>(new string[] { description });
                LanguageInfo  unlistedLanguage = new LanguageInfo()
                {
                    Code = "qaa", Country = "", Names = names
                };
                ListViewItem item = new ListViewItem(description);
                item.SubItems.Add("qaa");
                item.Tag      = unlistedLanguage;
                item.Selected = true;
                _listView.Items.Add(item);
            }
            else
            {
                var itemSelected = false;
                foreach (LanguageInfo lang in _model.GetMatchingLanguages(typedText))
                {
                    var mainName = string.IsNullOrEmpty(lang.LocalName) ? lang.Names[0] : lang.LocalName;
                    var item     = new ListViewItem(mainName);
                    item.SubItems.Add(lang.Code);

                    // Users were having problems when they looked up things like "English" and were presented with "United Arab Emirates"
                    // and such, as these colonial languages are spoken in so many countries. So this just displays the number of countries.
                    var country = lang.Country;
                    if (lang.CountryCount > 2)                    // 3 or more was chosen because generally 2 languages fit in the space allowed
                    {
                        country = string.Format(multipleCountriesLabel, lang.CountryCount);
                    }
                    item.SubItems.Add(country);
                    var numberOfNamesAlreadyUsed = string.IsNullOrEmpty(lang.LocalName) ? 1 : 0;
                    item.SubItems.Add(string.Join(", ", lang.Names.Skip(numberOfNamesAlreadyUsed)));
                    item.Tag = lang;
                    toShow.Add(item);

                    //					if (!itemSelected && typedText.Length > 1 &&
                    //					    (lang.Code.ToLower() == typedText || lang.Names[0].ToLower().StartsWith(typedText.ToLower())))
                    if (!itemSelected)
                    {
                        item.Selected = true;
                        itemSelected  = true;                        //we only want to select the first one
                    }
                }
                if (!itemSelected)
                {
                    _model.LanguageInfo = null;
                    //_desiredLanguageDisplayName.Text = _searchText.Text;
                }
                _desiredLanguageDisplayName.Enabled = itemSelected;
                _listView.Items.AddRange(toShow.ToArray());
                //scroll down to the selected item
                if (_listView.SelectedItems.Count > 0)
                {
                    _listView.SelectedItems[0].EnsureVisible();
                }
            }
            _listView.ResumeLayout();
            //            if (_listView.Items.Count > 0)
            //            {
            //                _listView.SelectedIndices.Add(0);
            //            }			if(_model.ISOCode != oldIso)
            UpdateReadiness();
        }