private void UpdateTagsBox(ITagsDBReadByLanguage tagsRead) { tagsBox.BeginUpdate(); tagsBox.Items.Clear(); if (m_SelectedCategoryId >= 0) { m_Tags = tagsRead.GetAllTags(m_SelectedCategoryId); } else { IList <TagInfoForLanguage> allTags = tagsRead.GetAllTags(); m_Tags = new List <TagForLanguage>(allTags.Count); foreach (TagInfoForLanguage tagInfo in allTags) { m_Tags.Add(new TagForLanguage() { Name = tagInfo.Name, Id = tagInfo.Id }); } } foreach (TagForLanguage tag in m_Tags) { tagsBox.Items.Add(tag.Name); if (m_SelectedTags.Contains(tag.Id)) { tagsBox.SetItemCheckState(tagsBox.Items.Count - 1, CheckState.Checked); } } tagsBox.EndUpdate(); }
private void UpdateTagsBox(ITagsDBReadByLanguage tagsRead) { tagsBox.BeginUpdate(); tagsBox.Items.Clear(); if (m_SelectedCategoryId >= 0) { m_Tags = tagsRead.GetAllTags(m_SelectedCategoryId); } else { IList <TagInfoForLanguage> allTags = tagsRead.GetAllTags(); m_Tags = new List <TagForLanguage>(allTags.Count); foreach (TagInfoForLanguage tagInfo in allTags) { m_Tags.Add(new TagForLanguage() { Name = tagInfo.Name, Id = tagInfo.Id }); } } try { var readIf = Ares.Tags.TagsModule.GetTagsDB().ReadInterface; foreach (TagForLanguage tag in m_Tags) { tagsBox.Items.Add(tag.Name); if (m_Files != null && m_Files.Count > 0) { HashSet <int> tagsSet = new HashSet <int>(); tagsSet.Add(tag.Id); var files = readIf.GetAllFilesWithAnyTag(tagsSet); bool allFilesHaveTag = true; bool anyFileHasTag = false; foreach (String file in m_Files) { if (files.Contains(file, StringComparer.InvariantCultureIgnoreCase)) { anyFileHasTag = true; if (!allFilesHaveTag) { break; } } else { allFilesHaveTag = false; if (anyFileHasTag) { break; } } } if (anyFileHasTag) { tagsBox.SetItemCheckState(tagsBox.Items.Count - 1, allFilesHaveTag ? CheckState.Checked : CheckState.Indeterminate); } } } } catch (Ares.Tags.TagsDbException ex) { MessageBox.Show(this, String.Format(StringResources.TagsDbError, ex.Message), StringResources.Ares, MessageBoxButtons.OK, MessageBoxIcon.Error); } tagsBox.EndUpdate(); }