private void SaveQatItems() { string text = string.Empty; if (this.QuickAccessToolBar != null && this.QuickAccessToolBar.Items != null) { List <QatItem> qatItems = this.QuickAccessToolBar.Items.Cast <object>(). Select(i => i as FrameworkElement).Where(e => e != null). Select(e => RibbonControlService.GetQuickAccessToolBarId(e)).Where(id => id != null). Select(q => new QatItem(q.GetHashCode())).ToList(); List <QatItem> remainingItems = new List <QatItem>(); remainingItems.AddRange(qatItems); // add -1 to show from application menu remainingItems.ForEach(qat => qat.ControlIndices.Add(-1)); SaveQatItems(remainingItems, this.ApplicationMenu); remainingItems.ForEach(qat => qat.ControlIndices.Clear()); SaveQatItems(remainingItems, this); text = qatItems.Aggregate("", (a, b) => a + "," + b.ControlIndices.ToString()).TrimStart(','); } Properties.Settings.Default.QuickAccessToolBar = text; Properties.Settings.Default.Save(); }
private static void AddToQATCanExecute(object sender, CanExecuteRoutedEventArgs args) { DependencyObject thatCanBeAddedToQat = MyRibbon.FindElementThatCanBeAddedToQAT(args.OriginalSource as DependencyObject); if (thatCanBeAddedToQat == null || RibbonControlService.GetQuickAccessToolBarId(thatCanBeAddedToQat) == null || RibbonHelper.ExistsInQAT(thatCanBeAddedToQat)) { return; } args.CanExecute = true; }
public static DependencyObject GetQATButton(RibbonQuickAccessToolBar qatBar, object id) { foreach (DependencyObject each in qatBar.Items) { if (RibbonControlService.GetQuickAccessToolBarId(each) == id) { return(each); } } return(null); }
private bool SaveQatItemsIfMatchesControl(List <QatItem> remainingItems, object control) { bool matched = false; if (control is FrameworkElement element) { object getQuickAccessToolBarId = RibbonControlService.GetQuickAccessToolBarId(element); if (getQuickAccessToolBarId != null) { int remove = remainingItems.RemoveAll(qat => qat.HashCode == getQuickAccessToolBarId.GetHashCode()); matched = remove > 0; } } return(matched); }
// Determine whether the QAT contains an element with the given QAT ID. internal bool ContainsId(object targetID) { foreach (object o in this.Items) { DependencyObject dependencyObject = o as DependencyObject; if (dependencyObject != null) { object currentID = RibbonControlService.GetQuickAccessToolBarId(dependencyObject); if (object.Equals(currentID, targetID)) { return(true); } } } return(false); }