public void UpdateGameFileTags(IEnumerable <IGameFile> gameFiles, IEnumerable <ITagData> tags) { ITagData[] changedTagsAll = new ITagData[] { }; foreach (IGameFile gameFile in gameFiles) { ITagData[] existingTags = DataCache.Instance.TagMapLookup.GetTags(gameFile); var addTags = tags.Except(existingTags); var removeTags = existingTags.Except(tags); foreach (var tag in addTags) { AddGameFileTag(new IGameFile[] { gameFile }, tag, out _); } foreach (var tag in removeTags) { RemoveGameFileTag(new IGameFile[] { gameFile }, tag); } changedTagsAll = changedTagsAll.Union(addTags.Union(removeTags)).ToArray(); } TagMapLookup.Refresh(changedTagsAll); }
private void RebuildTagToolStrip() { GameFileViewControl currentControl = GetCurrentViewControl(); if (currentControl != null) { List <ITagData> addTags = new List <ITagData>(); List <ITagData> removeTags = new List <ITagData>(); Tags = DataSourceAdapter.GetTags().OrderBy(x => x.Name).ToArray(); foreach (var gameFile in SelectedItems(currentControl)) { if (gameFile.GameFileID.HasValue) { var gameFileTags = TagMapLookup.GetTags(gameFile); var currentRemoveTags = Tags.Where(x => gameFileTags.Any(y => y.TagID == x.TagID)); var currentAddTags = Tags.Except(currentRemoveTags); addTags = addTags.Union(currentAddTags).ToList(); removeTags = removeTags.Union(currentRemoveTags).ToList(); } } ToolStripMenuItem tagToolStrip = mnuLocal.Items.Cast <ToolStripItem>().FirstOrDefault(x => x.Text == "Tag") as ToolStripMenuItem; ToolStripMenuItem removeTagToolStrip = mnuLocal.Items.Cast <ToolStripItem>().FirstOrDefault(x => x.Text == "Remove Tag") as ToolStripMenuItem; if (tagToolStrip != null) { BuildTagToolStrip(tagToolStrip, addTags, tagToolStripItem_Click); BuildTagToolStrip(removeTagToolStrip, removeTags, removeTagToolStripItem_Click); } } }
public void Init(IDataSourceAdapter adapter) { DataSourceAdapter = adapter; AppConfiguration = new AppConfiguration(adapter); TagMapLookup = new TagMapLookup(adapter); DefaultImage = Image.FromFile(Path.Combine(LauncherPath.GetDataDirectory(), "TileImages", "DoomLauncherTile.png")); UpdateTags(); }
private void SetupTabs() { List <ITabView> tabViews = new List <ITabView>(); ColumnConfig[] colConfig = GetColumnConfig(); TagMapLookup = new TagMapLookup(DataSourceAdapter); tabViews.Add(CreateTabViewRecent(colConfig)); tabViews.Add(CreateTabViewLocal(colConfig)); tabViews.Add(CreateTabViewUntagged(colConfig)); tabViews.Add(CreateTabViewIwad(colConfig)); tabViews.Add(CreateTabViewIdGames(colConfig)); tabViews.AddRange(CreateTagTabs(DefaultColumnTextFields, colConfig)); m_tabHandler = new TabHandler(tabControl); m_tabHandler.SetTabs(tabViews); }
private void SetupTabs() { List <ITabView> tabViews = new List <ITabView>(); ColumnConfig[] colConfig = GetColumnConfig(); TagMapLookup = new TagMapLookup(DataSourceAdapter); ColumnField[] columnTextFields = DefaultColumnTextFields; OptionsTabViewCtrl tabViewRecent = new OptionsTabViewCtrl(s_recentKey, s_recentKey, DataSourceAdapter, DefaultGameFileSelectFields, TagMapLookup); tabViewRecent.SetColumnConfig(columnTextFields, colConfig); tabViewRecent.GameFileViewControl.SetContextMenuStrip(mnuLocal); tabViewRecent.GameFileViewControl.AllowDrop = true; tabViewRecent.Options = new GameFileGetOptions(); tabViewRecent.Options.Limit = 10; tabViewRecent.Options.OrderBy = OrderType.Desc; tabViewRecent.Options.OrderField = GameFileFieldType.Downloaded; SetGameFileViewEvents(tabViewRecent.GameFileViewControl, true); tabViews.Add(tabViewRecent); LocalTabViewCtrl tabViewLocal = new LocalTabViewCtrl(s_localKey, s_localKey, DataSourceAdapter, DefaultGameFileSelectFields, TagMapLookup); tabViewLocal.SetColumnConfig(columnTextFields, colConfig); tabViewLocal.GameFileViewControl.SetContextMenuStrip(mnuLocal); tabViewLocal.GameFileViewControl.AllowDrop = true; SetGameFileViewEvents(tabViewLocal.GameFileViewControl, true); tabViews.Add(tabViewLocal); columnTextFields = new ColumnField[] { new ColumnField("FileName", "File"), new ColumnField("Title", "Title"), new ColumnField("LastPlayed", "Last Played") }; IWadTabViewCtrl tabViewIwads = new IWadTabViewCtrl(s_iwadKey, s_iwadKey, DataSourceAdapter, DefaultGameFileSelectFields, TagMapLookup); tabViewIwads.SetColumnConfig(columnTextFields, colConfig); tabViewIwads.GameFileViewControl.SetContextMenuStrip(mnuLocal); tabViewIwads.GameFileViewControl.AllowDrop = true; SetGameFileViewEvents(tabViewIwads.GameFileViewControl, true); tabViews.Add(tabViewIwads); columnTextFields = new ColumnField[] { new ColumnField("Title", "Title"), new ColumnField("Author", "Author"), new ColumnField("Description", "Description"), new ColumnField("Rating", "Rating"), }; IdGamesDataSourceAdapter = new IdGamesDataAdapater(AppConfiguration.IdGamesUrl, AppConfiguration.ApiPage, AppConfiguration.MirrorUrl); IdGamesTabViewCtrl tabViewIdGames = new IdGamesTabViewCtrl(s_idGamesKey, s_idGamesKey, IdGamesDataSourceAdapter, DefaultGameFileSelectFields); tabViewIdGames.SetColumnConfig(columnTextFields, colConfig); tabViewIdGames.GameFileViewControl.SetContextMenuStrip(mnuIdGames); SetGameFileViewEvents(tabViewIdGames.GameFileViewControl, false); tabViews.Add(tabViewIdGames); tabViews.AddRange(CreateTagTabs(DefaultColumnTextFields, colConfig)); m_tabHandler = new TabHandler(tabControl); m_tabHandler.SetTabs(tabViews); }