diff --git a/deltachat-ffi/deltachat.h b/deltachat-ffi/deltachat.h index 65a2a3d1d..de4842eb7 100644 --- a/deltachat-ffi/deltachat.h +++ b/deltachat-ffi/deltachat.h @@ -6020,6 +6020,11 @@ void dc_event_unref(dc_event_t* event); /// Used as the default name for broadcast lists; a number may be added. #define DC_STR_BROADCAST_LIST 115 +/// "%1$s of %2$s used" +/// +/// Used for describing resource usage, resulting string will be eg. "1.2 GiB of 3 GiB used". +#define DC_STR_PART_OF_TOTAL_USED 116 + /** * @} */ diff --git a/src/scheduler/connectivity.rs b/src/scheduler/connectivity.rs index be96bbf3e..8b534215d 100644 --- a/src/scheduler/connectivity.rs +++ b/src/scheduler/connectivity.rs @@ -460,18 +460,26 @@ impl Context { ret += &match &resource.name { Atom(resource_name) => { format!( - "{}: {} of {} used", + "{}: {}", &*escaper::encode_minimal(resource_name), - resource.usage.to_string(), - resource.limit.to_string(), + stock_str::part_of_total_used( + self, + resource.usage.to_string(), + resource.limit.to_string() + ) + .await, ) } Message => { format!( - "{}: {} of {} used", + "{}: {}", stock_str::messages(self).await, - resource.usage.to_string(), - resource.limit.to_string(), + stock_str::part_of_total_used( + self, + resource.usage.to_string(), + resource.limit.to_string() + ) + .await, ) } Storage => { @@ -487,7 +495,7 @@ impl Context { let limit = (resource.limit * 1024) .file_size(file_size_opts::BINARY) .unwrap_or_default(); - format!("{} of {} used", usage, limit) + stock_str::part_of_total_used(self, usage, limit).await } }; diff --git a/src/stock_str.rs b/src/stock_str.rs index e9fd1e621..4d554613b 100644 --- a/src/stock_str.rs +++ b/src/stock_str.rs @@ -314,6 +314,9 @@ pub enum StockMessage { #[strum(props(fallback = "Broadcast List"))] BroadcastList = 115, + + #[strum(props(fallback = "%1$s of %2$s used"))] + PartOfTotallUsed = 116, } impl StockMessage { @@ -988,6 +991,18 @@ pub(crate) async fn messages(context: &Context) -> String { translated(context, StockMessage::Messages).await } +/// Stock string: `%1$s of %2$s used`. +pub(crate) async fn part_of_total_used( + context: &Context, + part: impl AsRef, + total: impl AsRef, +) -> String { + translated(context, StockMessage::PartOfTotallUsed) + .await + .replace1(part) + .replace2(total) +} + /// Stock string: `Broadcast List`. /// Used as the default name for broadcast lists; a number may be added. pub(crate) async fn broadcast_list(context: &Context) -> String {