private void Player_SongChanged(object sender, EventArgs e) { if (!InFullscreen) { Mouse.OverrideCursor = null; } CurrentTrack = Player.Metadata; Title = $"{string.Join(", ", CurrentTrack.Artists)} - {CurrentTrack.Title} | {WindowName}"; TitleLabel.Text = CurrentTrack.Title; ArtistLabel.Text = string.Join(", ", CurrentTrack.Artists) == "" ? Properties.Resources.MAINWINDOW_NOARTIST : string.Join(", ", CurrentTrack.Artists); ProgressBar.Maximum = Player.CurrentBackend.TotalTime.TotalSeconds; if (Player.CurrentBackend.TotalTime.TotalSeconds != 0) { ProgressIndicator2.Text = Player.CurrentBackend.TotalTime.ToString(@"mm\:ss"); } else { ProgressIndicator2.Text = "∞"; } SetIntegrations(PlaybackStatus.Playing); UpdatePlayButtonState(); if (CurrentTrack.CoverArt is null) { CoverArtBox.Source = null; SetCoverArtVisibility(false); } else { CoverArtBox.Source = BitmapFrame.Create(new MemoryStream(CurrentTrack.CoverArt), BitmapCreateOptions.None, BitmapCacheOption.None); SetCoverArtVisibility(true); } ProgressTimer.Start(); if (PauseAfterCurrentTrack && !Player.Paused) { PlayPauseMethod(); PauseAfterCurrentTrack = false; } LoggingHandler.Log("Changing tracks!"); }
public Pomodoro(IUserInterface ui, ISettings settings) { Duration = settings.PomodoroDuration.ToString(); Begin = new DelegateCommand( canExecute: _ => !_inProgress, execute: _ => { _inProgress = true; Begin.RaiseCanExecuteChanged(); Progress.Start(); }); Progress = new ProgressTimer(ui, settings.PomodoroDuration, onComplete: () => { _inProgress = false; Begin.RaiseCanExecuteChanged(); ui.TransitionToPage <Break>(); }); }
public override void Start(object sender) { if (sender is Ellipse) { Ellipse pointShape = (Ellipse)sender; HandlePoint point = CanvasHolder.GetHandlePointByShape(pointShape); if (point is AnchorPoint) { CanvasHolder.SelectHandlePoint(point); moveAnchor = true; ProgressTimer.Start(); } } else if (sender is Shape) { Shape shape = (Shape)sender; ShapeHolder shapeHolder = CanvasHolder.GetShapeHolderByShape(shape); AnchorPoint anchorPoint = shapeHolder.AnchorPoint; Point mousePosition = Mouse.GetPosition(CanvasHolder.Canvas); if (anchorPoint == null) { anchorPoint = new AnchorPoint(mousePosition, shapeHolder); shapeHolder.AnchorPoint = anchorPoint; CanvasHolder.SelectHandlePoint(anchorPoint); moveAnchor = true; ProgressTimer.Start(); } else { position = mousePosition; oldDistance = getDistance(anchorPoint.Position, mousePosition); moveAnchor = false; ProgressTimer.Start(); } } }
protected override void WndProc(ref Message m) { //Debug.WriteLine(m); switch (m.Msg) { case 0x0201: // WM_LBUTTONDOWN case 0x0202: // WM_LBUTTONUP case 0x0207: // WM_MBUTTONDOWN case 0x0208: // WM_MBUTTONUP case 0x020b: // WM_XBUTTONDOWN case 0x020c: // WM_XBUTTONUP case 0x020A: // WM_MOUSEWHEEL case 0x0100: // WM_KEYDOWN case 0x0101: // WM_KEYUP case 0x0104: // WM_SYSKEYDOWN case 0x0105: // WM_SYSKEYUP case 0x319: // WM_APPCOMMAND if (mp.WindowHandle != IntPtr.Zero) { Native.SendMessage(mp.WindowHandle, m.Msg, m.WParam, m.LParam); } break; case 0x0200: // WM_MOUSEMOVE { Point pos = PointToClient(Cursor.Position); mp.command($"mouse {pos.X} {pos.Y}"); if (CursorHelp.IsPosDifferent(LastCursorPosChanged)) { CursorHelp.Show(); } } break; case 0x2a3: // WM_MOUSELEAVE mp.command("mouse 1 1"); // osc won't always auto hide break; case 0x203: // Native.WM.LBUTTONDBLCLK { Point pos = PointToClient(Cursor.Position); mp.command($"mouse {pos.X} {pos.Y} 0 double"); } break; case 0x02E0: // WM_DPICHANGED if (!WasShown) { break; } var r2 = Marshal.PtrToStructure <Native.RECT>(m.LParam); Native.SetWindowPos(Handle, IntPtr.Zero, r2.Left, r2.Top, r2.Width, r2.Height, 0); break; case 0x0214: // WM_SIZING var rc = Marshal.PtrToStructure <Native.RECT>(m.LParam); var r = rc; NativeHelp.SubtractWindowBorders(Handle, ref r); int c_w = r.Right - r.Left, c_h = r.Bottom - r.Top; Size s = mp.VideoSize; if (s == Size.Empty) { s = new Size(16, 9); } float aspect = s.Width / (float)s.Height; int d_w = Convert.ToInt32(c_h * aspect - c_w); int d_h = Convert.ToInt32(c_w / aspect - c_h); int[] d_corners = { d_w, d_h, -d_w, -d_h }; int[] corners = { rc.Left, rc.Top, rc.Right, rc.Bottom }; int corner = NativeHelp.GetResizeBorder(m.WParam.ToInt32()); if (corner >= 0) { corners[corner] -= d_corners[corner]; } Marshal.StructureToPtr <Native.RECT>(new Native.RECT(corners[0], corners[1], corners[2], corners[3]), m.LParam, false); m.Result = new IntPtr(1); return; case 0x004A: // WM_COPYDATA var copyData = (Native.COPYDATASTRUCT)m.GetLParam(typeof(Native.COPYDATASTRUCT)); string[] files = copyData.lpData.Split('\n'); string mode = files[0]; files = files.Skip(1).ToArray(); switch (mode) { case "single": mp.Load(files, true, Control.ModifierKeys.HasFlag(Keys.Control)); break; case "queue": foreach (string file in files) { mp.commandv("loadfile", file, "append"); } break; } Activate(); return; } if (m.Msg == TaskbarButtonCreatedMessage && mp.TaskbarProgress) { Taskbar = new Taskbar(Handle); ProgressTimer.Start(); } base.WndProc(ref m); }
protected override void WndProc(ref Message m) { //Debug.WriteLine(m); switch (m.Msg) { case 0x201: // WM_LBUTTONDOWN case 0x202: // WM_LBUTTONUP case 0x207: // WM_MBUTTONDOWN case 0x208: // WM_MBUTTONUP case 0x20b: // WM_XBUTTONDOWN case 0x20c: // WM_XBUTTONUP case 0x20A: // WM_MOUSEWHEEL case 0x100: // WM_KEYDOWN case 0x101: // WM_KEYUP case 0x104: // WM_SYSKEYDOWN case 0x105: // WM_SYSKEYUP { bool skip = m.Msg == 0x100 && LastAppCommand != 0 && (Environment.TickCount - LastAppCommand) < 1000; if (core.WindowHandle != IntPtr.Zero && !skip) { m.Result = WinAPI.SendMessage(core.WindowHandle, m.Msg, m.WParam, m.LParam); } } break; case 0x319: // WM_APPCOMMAND { string value = mpvHelp.WM_APPCOMMAND_to_mpv_key((int)(m.LParam.ToInt64() >> 16 & ~0xf000)); if (value != null) { core.command("keypress " + value); m.Result = new IntPtr(1); LastAppCommand = Environment.TickCount; return; } } break; case 0x0200: // WM_MOUSEMOVE if (Environment.TickCount - LastCycleFullscreen > 500) { Point pos = PointToClient(Cursor.Position); core.command($"mouse {pos.X} {pos.Y}"); } if (CursorHelp.IsPosDifferent(LastCursorPosition)) { CursorHelp.Show(); } break; case 0x2a3: // WM_MOUSELEAVE //osc won't auto hide after mouse left window in borderless mode core.command($"mouse {ClientSize.Width / 2} {ClientSize.Height / 3}"); break; case 0x203: // WM_LBUTTONDBLCLK { Point pos = PointToClient(Cursor.Position); core.command($"mouse {pos.X} {pos.Y} 0 double"); } break; case 0x02E0: // WM_DPICHANGED { if (!WasShown()) { break; } WinAPI.RECT rect = Marshal.PtrToStructure <WinAPI.RECT>(m.LParam); WinAPI.SetWindowPos(Handle, IntPtr.Zero, rect.Left, rect.Top, rect.Width, rect.Height, 0); } break; case 0x0214: // WM_SIZING { var rc = Marshal.PtrToStructure <WinAPI.RECT>(m.LParam); var r = rc; NativeHelp.SubtractWindowBorders(Handle, ref r); int c_w = r.Right - r.Left, c_h = r.Bottom - r.Top; Size s = core.VideoSize; if (s == Size.Empty) { s = new Size(16, 9); } float aspect = s.Width / (float)s.Height; int d_w = (int)(c_h * aspect - c_w); int d_h = (int)(c_w / aspect - c_h); Debug.WriteLine(d_w); Debug.WriteLine(d_h); int d_w2 = (int)(c_h * aspect - c_w); int d_h2 = (int)(c_w / aspect - c_h); Debug.WriteLine(d_w2); Debug.WriteLine(d_h2); int[] d_corners = { d_w, d_h, -d_w, -d_h }; int[] corners = { rc.Left, rc.Top, rc.Right, rc.Bottom }; int corner = NativeHelp.GetResizeBorder(m.WParam.ToInt32()); if (corner >= 0) { corners[corner] -= d_corners[corner]; } Marshal.StructureToPtr <WinAPI.RECT>(new WinAPI.RECT(corners[0], corners[1], corners[2], corners[3]), m.LParam, false); m.Result = new IntPtr(1); } return; case 0x004A: // WM_COPYDATA { var copyData = (WinAPI.COPYDATASTRUCT)m.GetLParam(typeof(WinAPI.COPYDATASTRUCT)); string[] files = copyData.lpData.Split('\n'); string mode = files[0]; files = files.Skip(1).ToArray(); switch (mode) { case "single": core.LoadFiles(files, true, Control.ModifierKeys.HasFlag(Keys.Control)); break; case "queue": foreach (string file in files) { core.commandv("loadfile", file, "append"); } break; } Activate(); } return; } if (m.Msg == TaskbarButtonCreatedMessage && core.TaskbarProgress) { Taskbar = new Taskbar(Handle); ProgressTimer.Start(); } // beep sound when closed using taskbar due to exception if (!IsDisposed) { base.WndProc(ref m); } }
public override void Finish() { ProgressTimer.Stop(); }
public Break(IUserInterface ui, ISettings settings) { Progress = new ProgressTimer(ui, settings.BreakDuration, () => ui.TransitionToPage <Pomodoro>()); Progress.Start(); }
public override void Finish() { ProgressTimer.Stop(); moveAnchor = false; }
public override void Finish() { ProgressTimer.Stop(); CanvasHolder.UnselectHandlePoint(); }
public void SetTimer(ProgressTimer value) { this.timer = value; }
public void StartTimer() { OnlyUpdateTime = true; ProgressTimer.Start(); }
private static async Task <ConcurrentDictionary <string, FileInfo> > GetFileSystemEntriesAsync( FileInfo pathFileInfo, ConcurrentBag <Task> tasks, IProgress <FileSystemEnumerationProgress> progress, IReadOnlyList <string> directoryExclusions = null, ConcurrentDictionary <string, FileInfo> fileSystemEntries = null, bool continueOnUnauthorizedAccessExceptions = true, bool continueOnPathTooLongExceptions = true) { #region Validation if (directoryExclusions == null) { directoryExclusions = new List <string>(); } if (fileSystemEntries == null) { fileSystemEntries = new ConcurrentDictionary <string, FileInfo>(StringComparer.OrdinalIgnoreCase); } if (pathFileInfo == null) { throw new ArgumentNullException("pathFileInfo"); } #endregion try { await Task.Run(() => { try { lock (TasksCreatedCompletedLockObject) { TasksCreated++; } if ((progress != null) && (fileSystemEntries.Count > 0)) { lock (ProgressTimer) { int progressTimerTotalSeconds = (int)ProgressTimer.Elapsed.TotalSeconds; if (progressTimerTotalSeconds == 30) { ProgressTimer.Restart(); progress.Report(new FileSystemEnumerationProgress() { FileSystemEntries = fileSystemEntries.Count, CurrentFilePath = pathFileInfo.FullName }); } } } if (!pathFileInfo.Attributes.HasFlag(FileAttributes.Directory)) { throw new ArgumentException($"Path is not a directory: {pathFileInfo.FullName}"); } foreach (var fileSystemEntryPath in Directory.EnumerateFileSystemEntries( pathFileInfo.FullName, "*", SearchOption.TopDirectoryOnly)) { FileInfo childFileInfo = null; childFileInfo = new FileInfo(fileSystemEntryPath); FileInfo placeHolder = null; fileSystemEntries.AddOrUpdate(childFileInfo.FullName, childFileInfo, (TKey, TOldValue) => placeHolder); if (childFileInfo.Attributes.HasFlag(FileAttributes.Directory) && !childFileInfo.Attributes.HasFlag(FileAttributes.ReparsePoint)) { if (directoryExclusions.Any(x => childFileInfo.FullName.IndexOf(x, StringComparison.OrdinalIgnoreCase) > -1)) { continue; } tasks.Add(Task.Run(async() => { await GetFileSystemEntriesAsync( pathFileInfo: childFileInfo, tasks: tasks, progress: progress, directoryExclusions: directoryExclusions, fileSystemEntries: fileSystemEntries, continueOnUnauthorizedAccessExceptions: continueOnUnauthorizedAccessExceptions, continueOnPathTooLongExceptions: continueOnPathTooLongExceptions); })); } // if (childFileInfo.Attributes.HasFlag() } // foreach (var fileSystemEntryPath in Directory.EnumerateFileSystemEntries( } finally { lock (TasksCreatedCompletedLockObject) { TasksCompleted++; } } }); // await Task.Run(() => { } catch (UnauthorizedAccessException e) { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine($"[ThreadId: {Thread.CurrentThread.ManagedThreadId}] {Extensions.CurrentMethodName()} pathFileInfo.FullName: {pathFileInfo.FullName} UnauthorizedAccessException: {e.Message ?? "NULL"}"); Console.ResetColor(); if (!continueOnUnauthorizedAccessExceptions) { throw; } } catch (PathTooLongException e) { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine($"[ThreadId: {Thread.CurrentThread.ManagedThreadId}] {Extensions.CurrentMethodName()} pathFileInfo.FullName: {pathFileInfo.FullName} PathTooLongException: {e.Message ?? "NULL"}"); Console.ResetColor(); if (!continueOnPathTooLongExceptions) { throw; } } catch (AggregateException ae) { Debug.WriteLine($"InnerException count: {ae.Flatten().InnerExceptions.Count}"); } catch (Exception e) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine($"[ThreadId: {Thread.CurrentThread.ManagedThreadId}] {Extensions.CurrentMethodName()} path: {pathFileInfo.FullName} child path: {pathFileInfo.FullName} Exception: {e.VerboseExceptionString()}"); Console.ResetColor(); throw; } return(fileSystemEntries); }
void Start() { progressTimer = FindObjectOfType <ProgressTimer>(); }
private void StopTimers() { RefreshTimer?.Stop(); ProgressTimer?.Stop(); RefreshProgress = 0; }
private void ProgressBar_DragStarted(object sender, System.Windows.Controls.Primitives.DragStartedEventArgs e) { isDragging = true; ProgressTimer.Stop(); }