private void broadcastStateChange(Interval interval, PluginBase.StateChangeType state, DateTime timestamp) { foreach (IPlugin plugin in _subscribers) { plugin.OnIntervalStateChange(interval.Id, state, timestamp, interval.Elapsed); } }
public static Icon GetIconForState(PluginBase.IntervalType type, PluginBase.StateChangeType state, bool heartbeat) { int frame = 0; if (type == PluginBase.IntervalType.Rest) { frame = 8; } if (state == PluginBase.StateChangeType.Start) { frame |= 4; } if (state == PluginBase.StateChangeType.Pause) { frame |= 2; } if (heartbeat) { frame |= 1; } return(_icons[frame]); }
public void OnIntervalStateChange(string id, PluginBase.StateChangeType change, DateTime timestamp, TimeSpan elapsed) { if (_knownState.Id != id) { if (_idsSeen.Contains(id)) { // This is a modification to an old interval. Ignore it. return; } else { // This is a new interval. Capture it. _idsSeen.Add(id); _knownState.Id = id; _knownState.Reset(); if (change == PluginBase.StateChangeType.Start) { _knownState.Begun = timestamp; } } } if (change == PluginBase.StateChangeType.Unpause) { _knownState.State = PluginBase.StateChangeType.Start; } else { _knownState.State = change; } _knownState.Elapsed = elapsed; refreshButtonsForState(); refreshIconForState(); }
public static Bitmap GetBitmapForState(int size, PluginBase.IntervalType type, PluginBase.StateChangeType state, bool heartbeat) { return(GetBitmapForIcon(GetIconForState(type, state, heartbeat), size)); }
public void RequestModifyIntervalState(PluginManager.Plugin caller, string id, PluginBase.StateChangeType state) { // Can't change state of old intervals if (id != _currentIntervalId) { return; } Interval current = getInterval(_currentIntervalId); if (current.State == PluginBase.StateChangeType.End) { return; } if (current.State == state) { return; } switch (state) { case PluginBase.StateChangeType.Unpause: if (current.State != PluginBase.StateChangeType.Pause) { return; } current.State = PluginBase.StateChangeType.Start; broadcastStateChange(current, PluginBase.StateChangeType.Unpause, DateTime.Now); break; case PluginBase.StateChangeType.Pause: if (current.State != PluginBase.StateChangeType.Start) { return; } current.State = PluginBase.StateChangeType.Pause; broadcastStateChange(current, PluginBase.StateChangeType.Pause, DateTime.Now); break; case PluginBase.StateChangeType.End: endInterval(current, true); break; case PluginBase.StateChangeType.Start: // Invalid break; default: // Shouldn't happen! break; } }
public void OnClockTick(string id, PluginBase.StateChangeType lastStateChange, DateTime timestamp, TimeSpan elapsed) { _heartbeat = !_heartbeat; refreshIconForState(); }
public void RequestModifyIntervalState(string id, PluginBase.StateChangeType state) { _api.RequestModifyIntervalState(_instance, id, state); }