internal void RefreshSyncControl(SyncControlGridItemSet scgis_previous, SyncControl sync_control) { WPFDoEvents.SetHourglassCursor(); SafeThreadPool.QueueUserWorkItem(o => { // // Explicitly instruct the sync info collector to perform a swift scan, which DOES NOT include // collecting the precise size of every document in every Qiqqa library (which itself is a *significant* // file system load when you have any reasonably large libraries like I do. [GHo] // // TODO: fetch and cache document filesizes in the background, so we can improve on the accuracy of // our numbers in a future call to this method. // GlobalSyncDetail global_sync_detail = GenerateGlobalSyncDetail(tally_library_storage_size: false); WPFDoEvents.InvokeInUIThread(() => { WPFDoEvents.ResetHourglassCursor(); SyncControlGridItemSet scgis = new SyncControlGridItemSet(scgis_previous.sync_request, global_sync_detail); scgis.AutoTick(); sync_control.SetSyncParameters(scgis); }); }); }
public void RequestSync(SyncRequest sync_request) { bool user_wants_intervention = KeyboardTools.IsCTRLDown() || !ConfigurationManager.Instance.ConfigurationRecord.SyncTermsAccepted; WPFDoEvents.SetHourglassCursor(); SafeThreadPool.QueueUserWorkItem(o => { GlobalSyncDetail global_sync_detail = GenerateGlobalSyncDetail(); WPFDoEvents.InvokeInUIThread(() => { WPFDoEvents.ResetHourglassCursor(); SyncControlGridItemSet scgis = new SyncControlGridItemSet(sync_request, global_sync_detail); scgis.AutoTick(); if (scgis.CanRunWithoutIntervention() && !user_wants_intervention) { Sync(scgis); } else { SyncControl sync_control = new SyncControl(); sync_control.SetSyncParameters(scgis); sync_control.Show(); } }); }); }
internal void RefreshSyncControl(SyncControlGridItemSet scgis_previous, SyncControl sync_control) { GlobalSyncDetail global_sync_detail = GenerateGlobalSyncDetail(); SyncControlGridItemSet scgis = new SyncControlGridItemSet(scgis_previous.sync_request, global_sync_detail); scgis.AutoTick(); sync_control.SetSyncParameters(scgis); }
void ShowSyncScreen(bool autoStart = false) { ShowMessage("Synchronize Transaction Logs to Server"); SyncControl control = new SyncControl(autoStart); control.StateNotifyer = _ApplicationStateChangeNotifyer; control.MessageNotifyer = _ApplicationMessageNotifyer; AddControl(control, ApplicationController.State.SyncTool); }
private void SetSizeAndPosition(double size, double position) { this.ChartAreas[0].AxisX.ScaleView.Size = size; this.ChartAreas[0].AxisX.ScaleView.Position = position; CalculateAutoScrollSize(); foreach (TimeValueChart SyncControl in m_SynchronizeXAxisWith) { SyncControl.SetSizeAndPosition(this.ChartAreas[0].AxisX.ScaleView.Size, this.ChartAreas[0].AxisX.ScaleView.Position); } }
internal void RefreshSyncControl(SyncControlGridItemSet scgis_previous, SyncControl sync_control) { WPFDoEvents.SetHourglassCursor(); SafeThreadPool.QueueUserWorkItem(o => { GlobalSyncDetail global_sync_detail = GenerateGlobalSyncDetail(); WPFDoEvents.InvokeInUIThread(() => { WPFDoEvents.ResetHourglassCursor(); SyncControlGridItemSet scgis = new SyncControlGridItemSet(scgis_previous.sync_request, global_sync_detail); scgis.AutoTick(); sync_control.SetSyncParameters(scgis); }); }); }
public void RequestSync(SyncRequest sync_request) { bool user_wants_intervention = KeyboardTools.IsCTRLDown() || !ConfigurationManager.Instance.ConfigurationRecord.SyncTermsAccepted; GlobalSyncDetail global_sync_detail = GenerateGlobalSyncDetail(); SyncControlGridItemSet scgis = new SyncControlGridItemSet(sync_request, global_sync_detail); scgis.AutoTick(); if (scgis.CanRunWithoutIntervention() && !user_wants_intervention) { Sync(scgis); } else { SyncControl sync_control = new SyncControl(); sync_control.SetSyncParameters(scgis); sync_control.Show(); } }
public void RequestSync(SyncRequest sync_request) { WPFDoEvents.AssertThisCodeIsRunningInTheUIThread(); bool user_wants_intervention = KeyboardTools.IsCTRLDown() || !ConfigurationManager.Instance.ConfigurationRecord.SyncTermsAccepted; WPFDoEvents.SetHourglassCursor(); SafeThreadPool.QueueUserWorkItem(o => { // // Explicitly instruct the sync info collector to perform a swift scan, which DOES NOT include // collecting the precise size of every document in every Qiqqa library (which itself is a *significant* // file system load when you have any reasonably large libraries like I do. [GHo] // // TODO: fetch and cache document filesizes in the background, so we can improve on the accuracy // of our numbers in a future call to this method. // GlobalSyncDetail global_sync_detail = GenerateGlobalSyncDetail(tally_library_storage_size: false); WPFDoEvents.InvokeInUIThread(() => { WPFDoEvents.ResetHourglassCursor(); SyncControlGridItemSet scgis = new SyncControlGridItemSet(sync_request, global_sync_detail); scgis.AutoTick(); if (scgis.CanRunWithoutIntervention() && !user_wants_intervention) { Sync(scgis); } else { SyncControl sync_control = new SyncControl(); sync_control.SetSyncParameters(scgis); sync_control.Show(); } }); }); }
public bool Start(ISoundPreviewContext context, int startTick) { if (Playing) { throw new InvalidOperationException(); } if (context == null) { throw new ArgumentNullException("context"); } PreviewContext = context; SoundManager.Register(context.ClapSource.FilePath); SoundManager.Register(context.MusicSource.FilePath); var timeCalculator = new TimeCalculator(context.TicksPerBeat, context.BpmDefinitions); var ticks = new SortedSet <int>(context.GetGuideTicks()).ToList(); TickElement = new LinkedList <int?>(ticks.Where(p => p >= startTick).OrderBy(p => p).Select(p => new int?(p))).First; BpmElement = new LinkedList <BpmChangeEvent>(context.BpmDefinitions.OrderBy(p => p.Tick)).First; EndTick = IsStopAtLastNote ? ticks[ticks.Count - 1] : timeCalculator.GetTickFromTime(SoundManager.GetDuration(context.MusicSource.FilePath)); if (EndTick < startTick) { return(false); } // スタート時まで進める while (TickElement != null && TickElement.Value < startTick) { TickElement = TickElement.Next; } while (BpmElement.Next != null && BpmElement.Next.Value.Tick <= startTick) { BpmElement = BpmElement.Next; } int clapLatencyTick = GetLatencyTick(context.ClapSource.Latency, BpmElement.Value.Bpm); InitialTick = startTick - clapLatencyTick; CurrentTick = InitialTick; StartTick = startTick; double startTime = timeCalculator.GetTimeFromTick(startTick); double headGap = Math.Max(-context.MusicSource.Latency - startTime, 0); elapsedTick = 0; Task.Run(() => { LastSystemTick = Environment.TickCount; SyncControl.Invoke((MethodInvoker)(() => Timer.Start())); System.Threading.Thread.Sleep(TimeSpan.FromSeconds(Math.Max((context.ClapSource.Latency + headGap) / context.Speed, 0))); if (!Playing) { return; } SoundManager.Play(context.MusicSource.FilePath, startTime + context.MusicSource.Latency, context.MusicSource.Volume, context.Speed); }) .ContinueWith(p => { if (p.Exception != null) { Program.DumpExceptionTo(p.Exception, "sound_exception.json"); ExceptionThrown?.Invoke(this, EventArgs.Empty); } }); Playing = true; Started?.Invoke(this, EventArgs.Empty); return(true); }