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::{ErrorScreen, Slideshow};
|
||||||
use crate::ui::theme;
|
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)]
|
#[derive(Default)]
|
||||||
pub struct ExecutionStep {
|
pub struct ExecutionStep {
|
||||||
rx: Option<mpsc::Receiver<InstallMessage>>,
|
rx: Option<mpsc::Receiver<InstallMessage>>,
|
||||||
@@ -337,7 +351,7 @@ impl InstallerStep for ExecutionStep {
|
|||||||
ui.add_space(8.0);
|
ui.add_space(8.0);
|
||||||
if self.finished {
|
if self.finished {
|
||||||
theme::success_box(ui, &t!("install_done"));
|
theme::success_box(ui, &t!("install_done"));
|
||||||
} else if running {
|
} else if show_wait_notice(running, self.copy_active) {
|
||||||
ui.horizontal(|ui| {
|
ui.horizontal(|ui| {
|
||||||
ui.spinner();
|
ui.spinner();
|
||||||
ui.colored_label(theme::c_text_dim(), t!("install_in_progress"));
|
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)
|
// 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