mirror of
https://github.com/CodeZeno/Claude-Code-Usage-Monitor.git
synced 2026-06-20 10:19:27 +08:00
feat: add Show ETD toggle and wire ETD into usage cells
This commit is contained in:
parent
1d4502bf8b
commit
97d26b080a
@ -124,6 +124,7 @@ const IDM_LANG_RUSSIAN: u16 = 49;
|
||||
const IDM_LANG_PORTUGUESE_BRAZIL: u16 = 50;
|
||||
const IDM_MODEL_CLAUDE_CODE: u16 = 60;
|
||||
const IDM_MODEL_CODEX: u16 = 61;
|
||||
const IDM_SHOW_ETD: u16 = 74;
|
||||
|
||||
const DIVIDER_HIT_ZONE: i32 = 13; // LEFT_DIVIDER_W + DIVIDER_RIGHT_MARGIN
|
||||
|
||||
@ -427,6 +428,18 @@ fn refresh_usage_texts(state: &mut AppState) {
|
||||
if let Some(claude_code) = data.claude_code.as_ref() {
|
||||
state.session_text = poller::format_line(&claude_code.session, strings);
|
||||
state.weekly_text = poller::format_line(&claude_code.weekly, strings);
|
||||
if state.show_etd {
|
||||
if let Some(s) =
|
||||
poller::etd_suffix(&claude_code.session, poller::SESSION_WINDOW_SECS, strings)
|
||||
{
|
||||
state.session_text.push_str(&s);
|
||||
}
|
||||
if let Some(s) =
|
||||
poller::etd_suffix(&claude_code.weekly, poller::WEEKLY_WINDOW_SECS, strings)
|
||||
{
|
||||
state.weekly_text.push_str(&s);
|
||||
}
|
||||
}
|
||||
} else if state.show_claude_code {
|
||||
state.session_text = "!".to_string();
|
||||
state.weekly_text = "!".to_string();
|
||||
@ -435,6 +448,18 @@ fn refresh_usage_texts(state: &mut AppState) {
|
||||
if let Some(codex) = data.codex.as_ref() {
|
||||
state.codex_session_text = poller::format_line(&codex.session, strings);
|
||||
state.codex_weekly_text = poller::format_line(&codex.weekly, strings);
|
||||
if state.show_etd {
|
||||
if let Some(s) =
|
||||
poller::etd_suffix(&codex.session, poller::SESSION_WINDOW_SECS, strings)
|
||||
{
|
||||
state.codex_session_text.push_str(&s);
|
||||
}
|
||||
if let Some(s) =
|
||||
poller::etd_suffix(&codex.weekly, poller::WEEKLY_WINDOW_SECS, strings)
|
||||
{
|
||||
state.codex_weekly_text.push_str(&s);
|
||||
}
|
||||
}
|
||||
} else if state.show_codex {
|
||||
state.codex_session_text = "!".to_string();
|
||||
state.codex_weekly_text = "!".to_string();
|
||||
@ -2258,6 +2283,17 @@ unsafe extern "system" fn wnd_proc(
|
||||
do_poll(sh);
|
||||
});
|
||||
}
|
||||
IDM_SHOW_ETD => {
|
||||
{
|
||||
let mut state = lock_state();
|
||||
if let Some(s) = state.as_mut() {
|
||||
s.show_etd = !s.show_etd;
|
||||
refresh_usage_texts(s);
|
||||
}
|
||||
}
|
||||
save_state_settings();
|
||||
render_layered();
|
||||
}
|
||||
IDM_LANG_SYSTEM
|
||||
| IDM_LANG_ENGLISH
|
||||
| IDM_LANG_DUTCH
|
||||
@ -2339,6 +2375,7 @@ fn show_context_menu(hwnd: HWND) {
|
||||
widget_visible,
|
||||
show_claude_code,
|
||||
show_codex,
|
||||
show_etd,
|
||||
) = {
|
||||
let state = lock_state();
|
||||
match state.as_ref() {
|
||||
@ -2352,6 +2389,7 @@ fn show_context_menu(hwnd: HWND) {
|
||||
s.widget_visible,
|
||||
s.show_claude_code,
|
||||
s.show_codex,
|
||||
s.show_etd,
|
||||
),
|
||||
None => (
|
||||
POLL_15_MIN,
|
||||
@ -2363,6 +2401,7 @@ fn show_context_menu(hwnd: HWND) {
|
||||
true,
|
||||
true,
|
||||
false,
|
||||
false,
|
||||
),
|
||||
}
|
||||
};
|
||||
@ -2468,6 +2507,19 @@ fn show_context_menu(hwnd: HWND) {
|
||||
PCWSTR::from_raw(reset_pos_str.as_ptr()),
|
||||
);
|
||||
|
||||
let etd_str = native_interop::wide_str(strings.show_etd);
|
||||
let etd_flags = if show_etd {
|
||||
MF_CHECKED
|
||||
} else {
|
||||
MENU_ITEM_FLAGS(0)
|
||||
};
|
||||
let _ = AppendMenuW(
|
||||
settings_menu,
|
||||
etd_flags,
|
||||
IDM_SHOW_ETD as usize,
|
||||
PCWSTR::from_raw(etd_str.as_ptr()),
|
||||
);
|
||||
|
||||
let language_menu = CreatePopupMenu().unwrap();
|
||||
let system_label = native_interop::wide_str(strings.system_default);
|
||||
let system_flags = if language_override.is_none() {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user