internal BeepTimerCollection CreateBeepTimerCollection(TimerData td = null, bool startNow = false) { var btc = new BeepTimerCollection(); btc.BeepTimers = new DispatcherTimer[Count]; btc.BeepDurations = new int[Count]; btc.BeepMsBeforeRinging = new int[Count]; btc.BeepFrequecies = new int[Count]; int i = 0; foreach (Beep r in this) { var t = new DispatcherTimer(DispatcherPriority.Send); t.Tick += btc.TickHandler; btc.BeepTimers[i] = t; btc.BeepMsBeforeRinging[i] = (int)r.MsBeforeRinging; btc.BeepDurations[i] = (int)r.BeepDuration; btc.BeepFrequecies[i] = (int)r.BeepFrequency; int interval = startNow ? 1 : (int)td.CurrentTimeSpan.TotalMilliseconds - btc.BeepMsBeforeRinging[i]; if (interval > 0) { t.Interval = TimeSpan.FromMilliseconds(interval); t.Start(); } ++i; } return(btc); }
internal void ChangeTypeOfClock(ClockM cd, Type newType) { Model.PropertyChanged -= Model_PropertyChanged; if (newType == typeof(TimerData)) { if (cd.IsActive) { cd.ActivateOrDeactivate(); } var tdata = new TimerData(Model.MyDataFile, Model.MyDataFile.MultiAudioPlayer); tdata.GroupName = cd.GroupName; tdata.Icon = cd.Icon; tdata.Style = cd.Style; tdata.UserBackColor = cd.UserBackColor; tdata.Tag = cd.Tag; tdata.IsUnsaved = true; tdata.ID = cd.ID; tdata.Checkable = cd.Checkable; tdata.Checked = cd.Checked; Model = tdata; } else // AlarmData { if (cd.IsActive) { cd.ActivateOrDeactivate(); } var adata = new AlarmData(Model.MyDataFile, Model.MyDataFile.MultiAudioPlayer); adata.GroupName = cd.GroupName; adata.Icon = cd.Icon; adata.Style = cd.Style; adata.UserBackColor = cd.UserBackColor; adata.Tag = cd.Tag; adata.IsUnsaved = true; adata.ID = cd.ID; adata.Checkable = cd.Checkable; adata.Checked = cd.Checked; Model = adata; } Model.PropertyChanged += Model_PropertyChanged; RaisePropertyChanged("CurrentValue"); RaisePropertyChanged("ResetToValue"); RaisePropertyChanged("IsActive"); RaisePropertyChanged("IsUnsaved"); ClockTypeChanged?.Invoke(this, new ClockTypeChangedEventArgs() { ClockVM = this, NewClockM = Model, OldClockM = cd }); IsUnsaved = true; }