Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
877d59bb26 | ||
|
|
8a69e740ee |
@@ -33,7 +33,7 @@ public partial class PopupWindow : Window
|
|||||||
VM.PropertyChanged += (_, e) => Dispatcher.InvokeAsync(() => OnVmChanged(e.PropertyName));
|
VM.PropertyChanged += (_, e) => Dispatcher.InvokeAsync(() => OnVmChanged(e.PropertyName));
|
||||||
Updater.PropertyChanged += (_, e) => Dispatcher.InvokeAsync(() => OnUpdaterChanged(e.PropertyName));
|
Updater.PropertyChanged += (_, e) => Dispatcher.InvokeAsync(() => OnUpdaterChanged(e.PropertyName));
|
||||||
|
|
||||||
_clockTimer = new DispatcherTimer { Interval = TimeSpan.FromSeconds(5) };
|
_clockTimer = new DispatcherTimer { Interval = TimeSpan.FromSeconds(1) };
|
||||||
_clockTimer.Tick += (_, _) => UpdateFooter();
|
_clockTimer.Tick += (_, _) => UpdateFooter();
|
||||||
_clockTimer.Start();
|
_clockTimer.Start();
|
||||||
|
|
||||||
@@ -97,7 +97,7 @@ public partial class PopupWindow : Window
|
|||||||
badgeStack.Children.Add(usageBadge);
|
badgeStack.Children.Add(usageBadge);
|
||||||
|
|
||||||
var nameStack = new StackPanel { Orientation = Orientation.Horizontal, VerticalAlignment = VerticalAlignment.Center };
|
var nameStack = new StackPanel { Orientation = Orientation.Horizontal, VerticalAlignment = VerticalAlignment.Center };
|
||||||
nameStack.Children.Add(new TextBlock { Text = "✦", FontSize = 11, Foreground = accent, VerticalAlignment = VerticalAlignment.Center });
|
nameStack.Children.Add(new TextBlock { Text = "✶", FontSize = 11, Foreground = accent, VerticalAlignment = VerticalAlignment.Center });
|
||||||
nameStack.Children.Add(new TextBlock { Text = "Claude", FontSize = 13, FontWeight = FontWeights.SemiBold,
|
nameStack.Children.Add(new TextBlock { Text = "Claude", FontSize = 13, FontWeight = FontWeights.SemiBold,
|
||||||
Foreground = text, Margin = new Thickness(6, 0, 0, 0), VerticalAlignment = VerticalAlignment.Center });
|
Foreground = text, Margin = new Thickness(6, 0, 0, 0), VerticalAlignment = VerticalAlignment.Center });
|
||||||
nameStack.Children.Add(new TextBlock { Text = $"· {VM.PlanLabel}", FontSize = 11,
|
nameStack.Children.Add(new TextBlock { Text = $"· {VM.PlanLabel}", FontSize = 11,
|
||||||
@@ -208,7 +208,6 @@ public partial class PopupWindow : Window
|
|||||||
var secondary = (SolidColorBrush)Application.Current.Resources["SecondaryBrush"];
|
var secondary = (SolidColorBrush)Application.Current.Resources["SecondaryBrush"];
|
||||||
var border = (SolidColorBrush)Application.Current.Resources["BorderBrush"];
|
var border = (SolidColorBrush)Application.Current.Resources["BorderBrush"];
|
||||||
|
|
||||||
// Stats row inside the card (mirrors macOS layout without the Claude icon/header)
|
|
||||||
var statsRow = new Grid { Margin = new Thickness(12, 10, 12, 6) };
|
var statsRow = new Grid { Margin = new Thickness(12, 10, 12, 6) };
|
||||||
statsRow.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) });
|
statsRow.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) });
|
||||||
statsRow.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });
|
statsRow.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });
|
||||||
@@ -273,7 +272,6 @@ public partial class PopupWindow : Window
|
|||||||
var prepaid = VM.Prepaid;
|
var prepaid = VM.Prepaid;
|
||||||
var currency = VM.ExtraUsage?.Currency ?? overage?.Currency ?? "$";
|
var currency = VM.ExtraUsage?.Currency ?? overage?.Currency ?? "$";
|
||||||
|
|
||||||
// All credit values from the API are in cents — divide by 100.
|
|
||||||
var spent = (overage?.UsedCredits / 100.0) ?? (VM.ExtraUsage?.UsedCredits / 100.0) ?? 0;
|
var spent = (overage?.UsedCredits / 100.0) ?? (VM.ExtraUsage?.UsedCredits / 100.0) ?? 0;
|
||||||
var limit = (overage?.MonthlyCreditLimit / 100.0) ?? (VM.ExtraUsage?.MonthlyLimit / 100.0) ?? 0;
|
var limit = (overage?.MonthlyCreditLimit / 100.0) ?? (VM.ExtraUsage?.MonthlyLimit / 100.0) ?? 0;
|
||||||
var balance = (prepaid?.Amount / 100.0) ?? 0;
|
var balance = (prepaid?.Amount / 100.0) ?? 0;
|
||||||
@@ -396,8 +394,14 @@ public partial class PopupWindow : Window
|
|||||||
if (VM.LastUpdated.HasValue)
|
if (VM.LastUpdated.HasValue)
|
||||||
{
|
{
|
||||||
var diff = DateTime.Now - VM.LastUpdated.Value;
|
var diff = DateTime.Now - VM.LastUpdated.Value;
|
||||||
LastUpdatedText.Text = diff.TotalSeconds < 10 ? "Updated just now"
|
string age;
|
||||||
: $"Updated {(int)diff.TotalSeconds}s ago";
|
if (diff.TotalSeconds < 10)
|
||||||
|
age = "just now";
|
||||||
|
else if (diff.TotalMinutes < 1)
|
||||||
|
age = $"{(int)diff.TotalSeconds} sec ago";
|
||||||
|
else
|
||||||
|
age = $"{(int)diff.TotalMinutes} min, {diff.Seconds} sec ago";
|
||||||
|
LastUpdatedText.Text = $"Updated {age}";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -424,11 +428,9 @@ public partial class PopupWindow : Window
|
|||||||
BetaToggle.IsChecked = Updater.BetaChannel;
|
BetaToggle.IsChecked = Updater.BetaChannel;
|
||||||
UpdateAboutSection();
|
UpdateAboutSection();
|
||||||
|
|
||||||
// Populate ComboBox with ComboBoxItem — DisplayMemberPath doesn't bind reliably
|
|
||||||
// on ValueTuple at runtime so we build items explicitly.
|
|
||||||
RefreshPicker.SelectionChanged -= RefreshPicker_Changed;
|
RefreshPicker.SelectionChanged -= RefreshPicker_Changed;
|
||||||
RefreshPicker.Items.Clear();
|
RefreshPicker.Items.Clear();
|
||||||
int selectIdx = 1; // default: 2 min
|
int selectIdx = 1;
|
||||||
for (int i = 0; i < RefreshIntervals.Length; i++)
|
for (int i = 0; i < RefreshIntervals.Length; i++)
|
||||||
{
|
{
|
||||||
var (label, seconds) = RefreshIntervals[i];
|
var (label, seconds) = RefreshIntervals[i];
|
||||||
|
|||||||
Reference in New Issue
Block a user