forked from pisilinux-rs/yali-rs
fix(execution): kopyalama başlayınca "bekleyin" uyarısını gizle
Kullanıcı isteği: "kurulum başladığında kopyalanan dosyalar
gösterilmeye başladığında kurulum devam ediyor bekleyin uyarısını
kaldır."
`install_in_progress` ("Kurulum devam ediyor, lütfen bekleyin…") İKİ
yerde çiziliyordu:
1. çubuğun yanında, `copy_active` DEĞİLSE
2. altındaki "durum etiketi"nde, `running` olduğu sürece
`running = !finished && !error && (copy_active || install_progress
> 0.0)` olduğu için kopyalama sırasında ikisi de doğruydu: aynı
uyarı ekranda iki kez görünüyordu. Üstelik birinin yanında yüzde ve
kopyalanan dosyanın adı yazılıydı — "bekleyin" demek, ne olduğunu
söyleyen çok daha fazla bilginin üstüne gereksiz bir talimat.
## Değişiklik
`show_wait_notice(running, copy_active)` saf yardımcı; kopyalama
sırasında uyarıyı bastırır.
Kopyalama bitince `CopyFinished` ile `copy_active` false olur ve
uyarı GERİ GELİR: fstab, GRUB, temizlik gibi adımlarda ilerleme
çubuğu yoktur, orada kullanıcının beklemesi gerektiğini bilmesi
doğrudur. Kullanıcı "kopyalama sırasında" dediği için bu adımlar
kapsam dışı bırakıldı.
## Testler (102 → 105)
execution.rs'de test modülü yoktu; eklendi.
- kopyalama sırasında uyarı yok
- kopyalama bitince uyarı geri geliyor
- çalışmıyorken uyarı yok
Not: `execution_description` ("Lütfen bekleyin. Bu işlem birkaç
dakika sürebilir.") başlıkta sabit duruyor. O da "bekleyin" diyor
ama kopyalamanın uzun süreceğini baştan bildiği için anlamlı;
istenirse o da kaldırılabilir.
cargo check --all-targets : 0 hata, 0 uyarı
cargo test : 105/105
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+49
-1
@@ -16,6 +16,20 @@ use crate::jobs::{self, InstallMessage, UiSender};
|
||||
use crate::ui::{ErrorScreen, Slideshow};
|
||||
use crate::ui::theme;
|
||||
|
||||
/// "Kurulum devam ediyor, lütfen bekleyin…" uyarısı gösterilmeli mi?
|
||||
///
|
||||
/// `copy_active` iken GÖSTERİLMEZ: çubuğun yanında yüzde ve kopyalanan
|
||||
/// dosyanın adı zaten yazılı, "bekleyin" demek yerine ne olduğunu
|
||||
/// söyleyen çok daha fazla bilgi var. Ek olarak bu etiket çubuğun
|
||||
/// altında ikinci kez görünüyordu.
|
||||
///
|
||||
/// Kopyalama bitince `copy_active` false olur ve uyarı geri gelir:
|
||||
/// fstab, GRUB, temizlik gibi adımlarda ilerleme çubuğu yoktur, orada
|
||||
/// kullanıcının beklemesi gerektiğini bilmesi doğrudur.
|
||||
fn show_wait_notice(running: bool, copy_active: bool) -> bool {
|
||||
running && !copy_active
|
||||
}
|
||||
|
||||
#[derive(Default)]
|
||||
pub struct ExecutionStep {
|
||||
rx: Option<mpsc::Receiver<InstallMessage>>,
|
||||
@@ -337,7 +351,7 @@ impl InstallerStep for ExecutionStep {
|
||||
ui.add_space(8.0);
|
||||
if self.finished {
|
||||
theme::success_box(ui, &t!("install_done"));
|
||||
} else if running {
|
||||
} else if show_wait_notice(running, self.copy_active) {
|
||||
ui.horizontal(|ui| {
|
||||
ui.spinner();
|
||||
ui.colored_label(theme::c_text_dim(), t!("install_in_progress"));
|
||||
@@ -390,3 +404,37 @@ impl InstallerStep for ExecutionStep {
|
||||
// egui::Color32::from_rgb(185, 185, 205)
|
||||
// }
|
||||
// }
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::show_wait_notice;
|
||||
|
||||
/// Kopyalama başlayınca "bekleyin" uyarısı KAYBOLMALI.
|
||||
///
|
||||
/// Kullanıcı isteği: kopyalanan dosyalar gösterilmeye başladığında
|
||||
/// uyarı gereksiz — çubuk zaten yüzde ve dosya adını gösteriyor.
|
||||
#[test]
|
||||
fn wait_notice_hidden_while_copying() {
|
||||
assert!(
|
||||
!show_wait_notice(true, true),
|
||||
"kopyalama sırasında uyarı gösterilmemeli"
|
||||
);
|
||||
}
|
||||
|
||||
/// Çubuk olmayan adımlarda (fstab, GRUB, temizlik) uyarı kalmalı —
|
||||
/// orada kullanıcının beklemesi gerektiğini bilmesi doğru.
|
||||
#[test]
|
||||
fn wait_notice_shown_after_copy_finishes() {
|
||||
assert!(
|
||||
show_wait_notice(true, false),
|
||||
"kopyalama bitince uyarı geri gelmeli"
|
||||
);
|
||||
}
|
||||
|
||||
/// Kurulum başlamadan / bitince uyarı olmaz.
|
||||
#[test]
|
||||
fn wait_notice_absent_when_not_running() {
|
||||
assert!(!show_wait_notice(false, false), "çalışmıyorken uyarı olmamalı");
|
||||
assert!(!show_wait_notice(false, true), "çalışmıyorken uyarı olmamalı");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user