//private void tsmiResetTo_DropDownOpening(object sender, EventArgs e)
        //{
        //    UpdateGroupsSubmenuContents();
        //}

        public void UpdateResetSubmenuContents()
        {
            if (MyClock == null)
            {
                return;
            }

            tsmiResetTo.Items.Clear();

            var tsmiUpdateToCurrent = new MenuItem()
            {
                Header = "Update to current"
            };

            tsmiUpdateToCurrent.Click += TsmiUpdateToCurrent_Click;

            MenuItem tsmiUpdateToCustom = null;

            // TODO: optimize:
            if (
                ((from c in MyClocks
                  where c.Model is TimerData
                  select c).Count() == MyClocks.Count()) ||
                ((from c in MyClocks
                  where c.Model is AlarmData
                  select c).Count() == MyClocks.Count())
                )
            {
                tsmiUpdateToCustom = new MenuItem()
                {
                    Header = "Update to custom..."
                };
                tsmiUpdateToCustom.Click += TsmiUpdateToCustom_Click;
            }
            else
            {
                // TODO: [VISUAL] maybe just italic grayed out instead of removed from the menu?
            }

            var tsmiLockResetToValue = new MenuItem()
            {
                Header = "Lock reset-to value"
            };

            tsmiLockResetToValue.IsCheckable = true;
            tsmiLockResetToValue.Icon        = new Image()
            {
                Source = new BitmapImage(new Uri("pack://application:,,,/Resources/Oxygen-Icons.org-Oxygen-Actions-system-lock-screen.ico", UriKind.RelativeOrAbsolute)),
                Width  = 16
            };
            tsmiLockResetToValue.IsChecked = MyClock.ResetToValueLocked;
            tsmiLockResetToValue.Click    += TsmiLockResetToValue_Click;

            tsmiResetTo.Items.Add(tsmiUpdateToCurrent);
            if (tsmiUpdateToCustom != null)
            {
                tsmiResetTo.Items.Add(tsmiUpdateToCustom);
            }
            tsmiResetTo.Items.Add(tsmiLockResetToValue);
        }
        public void UpdateContents()
        {
            if (MyClocks.Count != 0)
            {
                MainWindow = MyClock.Model.MyDataFile.MainWindow;
            }

            if (MyClocks.Count >= 1)
            {
                tss4.Visibility       = System.Windows.Visibility.Visible;
                tsmiDelete.Visibility = System.Windows.Visibility.Visible;
                tsmiRename.Visibility = System.Windows.Visibility.Visible;
                tsmiActivateDezactivate.Visibility = System.Windows.Visibility.Visible;
                tsmiSetCurrentValue.Visibility     = System.Windows.Visibility.Visible;

                if (MyClock.Model is TimerData td)
                {
                    tsmiActivateDezactivate.Header = td.Running ? "_Stop" : "_Start";
                    tsmiActivateDezactivate.Icon   = td.Running ? iconStop : iconStart;
                }
                else
                {
                    var ad = MyClock.Model as AlarmData;
                    tsmiActivateDezactivate.Header = ad.Enabled ? "_Deactivate" : "_Activate";
                    tsmiActivateDezactivate.Icon   = ad.Enabled ? iconStop : iconStart;
                }

                Bitmap ico = GetFirstClockIcon();

                tsmiSaveIconAs.IsEnabled = ico != null;
            }
            else
            {
                tss4.Visibility       = System.Windows.Visibility.Collapsed;
                tsmiDelete.Visibility = System.Windows.Visibility.Collapsed;
                tsmiRename.Visibility = System.Windows.Visibility.Collapsed;
                tsmiActivateDezactivate.Visibility = System.Windows.Visibility.Collapsed;
                tsmiSetCurrentValue.Visibility     = System.Windows.Visibility.Collapsed;
            }

            //bool AlwaysShowID = true;
            //foreach (ClockM c in MyClocks)
            //{
            //    if (c.Style == ClockM.ClockStyles.ShowIcon)
            //    {
            //        AlwaysShowID = false;
            //        break;
            //    }
            //}
            //tsmiAlwaysShowID.Checked = AlwaysShowID;

            if (MyClocks.Count == 0)
            {
                tsmiResetTo.Header = $"Reset to...";
            }
            else
            {
                object rtv = MyClock.ResetToValue;
                foreach (ClockVM c in MyClocks)
                {
                    if (c.ResetToValue != rtv)
                    {
                        rtv = 0;
                    }
                }

                tsmiResetTo.Header = $"Reset to {rtv}";


                tsmiConvertToOtherType.Icon =
                    MyClocks.First().ClockType == ClockVM.ClockTypes.Alarm ?
                    new Image()
                {
                    Source = new BitmapImage(new Uri("pack://application:,,,/Resources/timers filter (clepsidra 4).ico", UriKind.RelativeOrAbsolute)),
                    Width  = 16
                } :
                new Image()
                {
                    Source = new BitmapImage(new Uri("pack://application:,,,/Resources/alarms filter (alarm clock 5).ico", UriKind.RelativeOrAbsolute)),
                    Width  = 16
                };

                tsmiConvertToOtherType.Header =
                    MyClocks.First().ClockType == ClockVM.ClockTypes.Alarm ?
                    "C_onvert to Timer" : "C_onvert to Alarm";
            }

            UpdateTimeOutBackgroundItems();

            UpdateGroupsSubmenuContents();
            UpdateResetSubmenuContents();
        }