Files
AX-Copilot-Codex/.decompiledproj/AxCopilot/Views/ReminderPopupWindow.cs

191 lines
4.9 KiB
C#

using System;
using System.CodeDom.Compiler;
using System.ComponentModel;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Interop;
using System.Windows.Markup;
using System.Windows.Media.Animation;
using System.Windows.Threading;
using AxCopilot.Models;
using AxCopilot.Services;
namespace AxCopilot.Views;
public class ReminderPopupWindow : Window, IComponentConnector
{
private const int GWL_EXSTYLE = -20;
private const int WS_EX_NOACTIVATE = 134217728;
private const int WS_EX_TOOLWINDOW = 128;
private readonly DispatcherTimer _timer;
private readonly EventHandler _tickHandler;
private int _remaining;
internal Border PopupBorder;
internal TextBlock UsageText;
internal Button CloseBtn;
internal TextBlock QuoteText;
internal TextBlock AuthorText;
internal ProgressBar CountdownBar;
private bool _contentLoaded;
[DllImport("user32.dll")]
private static extern nint GetWindowLongPtr(nint hwnd, int nIndex);
[DllImport("user32.dll")]
private static extern nint SetWindowLongPtr(nint hwnd, int nIndex, nint dwNewLong);
public ReminderPopupWindow(string quoteText, string? author, TimeSpan todayUsage, SettingsService settings)
{
//IL_017d: Unknown result type (might be due to invalid IL or missing references)
//IL_0182: Unknown result type (might be due to invalid IL or missing references)
//IL_019c: Expected O, but got Unknown
InitializeComponent();
ReminderSettings cfg = settings.Settings.Reminder;
QuoteText.Text = quoteText;
if (!string.IsNullOrWhiteSpace(author))
{
AuthorText.Text = "— " + author;
AuthorText.Visibility = Visibility.Visible;
}
int num = (int)todayUsage.TotalHours;
int minutes = todayUsage.Minutes;
UsageText.Text = ((num > 0) ? $"오늘 총 {num}시간 {minutes}분 근무 중" : ((minutes >= 1) ? $"오늘 총 {minutes}분 근무 중" : "오늘 방금 시작했습니다"));
_remaining = Math.Max(3, cfg.DisplaySeconds);
CountdownBar.Maximum = _remaining;
CountdownBar.Value = _remaining;
base.Loaded += delegate
{
SetNoActivate();
PositionWindow(cfg.Corner);
AnimateIn();
};
_tickHandler = delegate
{
_remaining--;
CountdownBar.Value = _remaining;
if (_remaining <= 0)
{
Close();
}
};
_timer = new DispatcherTimer
{
Interval = TimeSpan.FromSeconds(1.0)
};
_timer.Tick += _tickHandler;
_timer.Start();
base.KeyDown += delegate(object _, KeyEventArgs e)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0009: Invalid comparison between Unknown and I4
if ((int)e.Key == 13)
{
Close();
}
};
}
protected override void OnSourceInitialized(EventArgs e)
{
base.OnSourceInitialized(e);
SetNoActivate();
}
private void SetNoActivate()
{
nint handle = new WindowInteropHelper(this).Handle;
if (handle != IntPtr.Zero)
{
long num = GetWindowLongPtr(handle, -20);
SetWindowLongPtr(handle, -20, (nint)(num | 0x8000000 | 0x80));
}
}
private void PositionWindow(string corner)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
Rect workArea = SystemParameters.WorkArea;
base.Left = (corner.Contains("left") ? (((Rect)(ref workArea)).Left + 20.0) : (((Rect)(ref workArea)).Right - base.ActualWidth - 20.0));
base.Top = (corner.Contains("top") ? (((Rect)(ref workArea)).Top + 20.0) : (((Rect)(ref workArea)).Bottom - base.ActualHeight - 20.0));
}
private void AnimateIn()
{
base.Opacity = 0.0;
DoubleAnimation animation = new DoubleAnimation(0.0, 1.0, TimeSpan.FromMilliseconds(280.0));
BeginAnimation(UIElement.OpacityProperty, animation);
}
private void CloseBtn_Click(object sender, RoutedEventArgs e)
{
Close();
}
protected override void OnClosed(EventArgs e)
{
_timer.Stop();
_timer.Tick -= _tickHandler;
base.OnClosed(e);
}
[DebuggerNonUserCode]
[GeneratedCode("PresentationBuildTasks", "10.0.5.0")]
public void InitializeComponent()
{
if (!_contentLoaded)
{
_contentLoaded = true;
Uri resourceLocator = new Uri("/AxCopilot;component/views/reminderpopupwindow.xaml", UriKind.Relative);
Application.LoadComponent(this, resourceLocator);
}
}
[DebuggerNonUserCode]
[GeneratedCode("PresentationBuildTasks", "10.0.5.0")]
[EditorBrowsable(EditorBrowsableState.Never)]
void IComponentConnector.Connect(int connectionId, object target)
{
switch (connectionId)
{
case 1:
PopupBorder = (Border)target;
break;
case 2:
UsageText = (TextBlock)target;
break;
case 3:
CloseBtn = (Button)target;
CloseBtn.Click += CloseBtn_Click;
break;
case 4:
QuoteText = (TextBlock)target;
break;
case 5:
AuthorText = (TextBlock)target;
break;
case 6:
CountdownBar = (ProgressBar)target;
break;
default:
_contentLoaded = true;
break;
}
}
}