mirror of
https://git.jabber.space/devs/cproof.git
synced 2026-07-28 08:06:22 +00:00
feat: Implement color coded status messages for file transfers
Introduce meaningful color feedback for background tasks like file downloads and uploads. Progress is displayed in a neutral color, while successful completions turn green and failures turn red. We reuse the existing THEME colors for now. Add new UI flags ENTRY_COMPLETED and ENTRY_ERROR to the buffer entry system. So we don't misuse delivery receipts anymore. Fixes: https://github.com/profanity-im/profanity/issues/1758 Signed-off-by: Michael Vetter <jubalh@iodoru.org>
This commit is contained in:
@@ -60,10 +60,12 @@ _xferinfo(void* userdata, curl_off_t dltotal, curl_off_t dlnow, curl_off_t ultot
|
||||
if (!download->silent) {
|
||||
const char* url = download->display_url ? download->display_url : download->url;
|
||||
if (dlnow == dltotal && dltotal > 0) {
|
||||
http_print_transfer_update(download->window, download->id,
|
||||
"Downloading '%s': done", url);
|
||||
if (!download->silent_done) {
|
||||
http_print_transfer_update(download->window, download->id, THEME_ONLINE, ENTRY_COMPLETED,
|
||||
"Downloading '%s': done", url);
|
||||
}
|
||||
} else {
|
||||
http_print_transfer_update(download->window, download->id,
|
||||
http_print_transfer_update(download->window, download->id, THEME_DEFAULT, 0,
|
||||
"Downloading '%s': %d%%", url, dlperc);
|
||||
}
|
||||
}
|
||||
@@ -98,13 +100,13 @@ http_file_get(void* userdata)
|
||||
pthread_mutex_lock(&lock);
|
||||
const char* display_url = download->display_url ? download->display_url : download->url;
|
||||
if (!download->silent) {
|
||||
http_print_transfer(download->window, download->id,
|
||||
http_print_transfer(download->window, download->id, THEME_DEFAULT,
|
||||
"Downloading '%s': 0%%", display_url);
|
||||
}
|
||||
|
||||
FILE* outfh = fopen(download->filename, "wb");
|
||||
if (outfh == NULL) {
|
||||
http_print_transfer_update(download->window, download->id,
|
||||
http_print_transfer_update(download->window, download->id, THEME_ERROR, ENTRY_ERROR,
|
||||
"Downloading '%s' failed: Unable to open "
|
||||
"output file at '%s' for writing (%s).",
|
||||
download->url, download->filename,
|
||||
@@ -175,22 +177,24 @@ http_file_get(void* userdata)
|
||||
g_free(cert_path);
|
||||
if (err) {
|
||||
if (download->cancel) {
|
||||
http_print_transfer_update(download->window, download->id,
|
||||
http_print_transfer_update(download->window, download->id, THEME_ERROR, ENTRY_ERROR,
|
||||
"Downloading '%s' failed: "
|
||||
"Download was canceled",
|
||||
display_url);
|
||||
} else {
|
||||
http_print_transfer_update(download->window, download->id,
|
||||
http_print_transfer_update(download->window, download->id, THEME_ERROR, ENTRY_ERROR,
|
||||
"Downloading '%s' failed: %s",
|
||||
display_url, err);
|
||||
}
|
||||
free(err);
|
||||
} else {
|
||||
if (!download->cancel && !download->silent && !download->silent_done) {
|
||||
http_print_transfer_update(download->window, download->id,
|
||||
"Downloading '%s': done\nSaved to '%s'",
|
||||
display_url, download->filename);
|
||||
win_mark_received(download->window, download->id);
|
||||
if (!download->cancel) {
|
||||
if (!download->silent && !download->silent_done) {
|
||||
http_print_transfer_update(download->window, download->id, THEME_ONLINE, ENTRY_COMPLETED,
|
||||
"Downloading '%s': done\nSaved to '%s'",
|
||||
display_url, download->filename);
|
||||
win_mark_received(download->window, download->id);
|
||||
}
|
||||
if (download->return_bytes_received) {
|
||||
ret = malloc(sizeof(*ret));
|
||||
if (ret) {
|
||||
@@ -207,7 +211,7 @@ http_file_get(void* userdata)
|
||||
|
||||
// TODO: Log the error.
|
||||
if (!call_external(argv)) {
|
||||
http_print_transfer_update(download->window, download->id,
|
||||
http_print_transfer_update(download->window, download->id, THEME_ERROR, ENTRY_ERROR,
|
||||
"Downloading '%s' failed: Unable to call "
|
||||
"command '%s' with file at '%s' (%s).",
|
||||
display_url,
|
||||
|
||||
Reference in New Issue
Block a user