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)); }
void RefreshHelpers () { if (HelpersTileview == null) return; HelpersTileview.Clear (); List<Helper> helpers = DockServices.Helpers.Helpers; foreach (HelperTile tileobject in helpertiles.Where (to => !helpers.Contains (to.Helper))) { helpertiles.Remove (tileobject); tileobject.Dispose (); } helpertiles = helpers.Where (helper => !helpertiles.Exists (to => helper == to.Helper)) .Select (h => new HelperTile (h)) .Union (helpertiles).ToList (); string query = HelperSearch.InnerEntry.Text.ToLower (); IEnumerable<HelperTile> showinghelpertiles = helpertiles .Where (hto => hto.Name.ToLower ().Contains (query) || hto.Description.ToLower ().Contains (query)) .OrderBy (hto => hto.Name); if (helper_show_cmb.Active == (uint) HelperShowStates.Usable) showinghelpertiles = showinghelpertiles.Where (hto => hto.Helper.IsAppAvailable); else if (helper_show_cmb.Active == (uint) HelperShowStates.Enabled) showinghelpertiles = showinghelpertiles.Where (hto => hto.Enabled); else if (helper_show_cmb.Active == (uint) HelperShowStates.Disabled) showinghelpertiles = showinghelpertiles.Where (hto => !hto.Enabled); foreach (HelperTile tileobject in showinghelpertiles) HelpersTileview.AppendTile (tileobject); SetupHelperAlignment (); }