public override void Dispose() { ActiveDock = null; if (HelpersTileview != null) { HelpersTileview.Clear(); } if (DockletsTileview != null) { DockletsTileview.Clear(); } helpertiles.ForEach(to => to.Dispose()); helpertiles.Clear(); docklettiles.ForEach(to => to.Dispose()); docklettiles.Clear(); base.Dispose(); }
void RefreshDocklets() { if (DockletsTileview == null) { return; } AbstractDockItemProvider selectedProvider = null; DockletTile selectedTile = (DockletTile)DockletsTileview.CurrentTile(); if (selectedTile != null) { selectedProvider = selectedTile.Provider; } DockletsTileview.Clear(); docklettiles.ForEach(tile => tile.Dispose()); docklettiles.Clear(); if (ActiveDock == null) { return; } string query = DockletSearch.InnerEntry.Text.ToLower(); // build a list of DockletTiles, starting with the currently active tiles for the active dock, // and the available addins DockletTile currentTile = null; foreach (AbstractDockItemProvider provider in ActiveDock.Preferences.ItemProviders) { string providerID = PluginManager.AddinIDFromProvider(provider); if (string.IsNullOrEmpty(providerID)) { continue; } docklettiles.Add(new DockletTile(providerID, provider)); if (provider == selectedProvider) { currentTile = docklettiles.Last(); } } docklettiles = docklettiles.Concat(PluginManager.AvailableProviderIDs.Select(id => new DockletTile(id))).ToList(); if (docklet_show_cmb.Active == (int)DockletShowStates.Active) { docklettiles = docklettiles.Where(t => t.Enabled).ToList(); } else if (docklet_show_cmb.Active == (int)DockletShowStates.Disabled) { docklettiles = docklettiles.Where(t => !t.Enabled).ToList(); } docklettiles = docklettiles.Where(t => t.Description.ToLower().Contains(query) || t.Name.ToLower().Contains(query)).ToList(); foreach (DockletTile docklet in docklettiles) { DockletsTileview.AppendTile(docklet); } if (currentTile != null) { DockletsTileview.Select(docklettiles.IndexOf(currentTile)); } }