From aad479a19ab832a27420b8bc011364d4b8482378 Mon Sep 17 00:00:00 2001 From: Yorhel <git@yorhel.nl> Date: Thu, 6 Sep 2012 13:16:11 +0200 Subject: [PATCH] Disallow refresh/delete after import + provide visual feedback It's kinda annoying how you need to confirm the messages. I'd prefer having some status bar where messages are automatically removed after a short timeout or something. But that's more work, and for the few cases where feedback is necessary this'll work fine, too. --- src/browser.c | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/src/browser.c b/src/browser.c index db52111..6b479a7 100644 --- a/src/browser.c +++ b/src/browser.c @@ -31,6 +31,7 @@ static int graph = 1, show_as = 0, info_show = 0, info_page = 0, info_start = 0; +static char *message = NULL; @@ -202,9 +203,16 @@ void browse_draw() { selected = i; } + /* draw message window */ + if(message) { + nccreate(6, 60, "Message"); + ncaddstr(2, 2, message); + ncaddstr(4, 34, "Press any key to continue"); + } + /* draw information window */ t = dirlist_get(0); - if(info_show && t != dirlist_parent) + if(!message && info_show && t != dirlist_parent) browse_draw_info(t); /* move cursor to selected row for accessibility */ @@ -216,6 +224,12 @@ int browse_key(int ch) { struct dir *t, *sel; int i, catch = 0; + /* message window overwrites all keys */ + if(message) { + message = NULL; + return 0; + } + sel = dirlist_get(0); /* info window overwrites a few keys */ @@ -347,6 +361,10 @@ int browse_key(int ch) { /* and other stuff */ case 'r': + if(dir_import_active) { + message = "Directory imported from file, won't refresh."; + break; + } if(sel != NULL) { dir_ui = 2; dir_mem_init(sel->parent); @@ -373,7 +391,13 @@ int browse_key(int ch) { info_show = 0; break; case 'd': - if(read_only || sel == NULL || sel == dirlist_parent) + if(read_only || dir_import_active) { + message = read_only + ? "File deletion disabled in read-only mode." + : "File deletion not available for imported directories."; + break; + } + if(sel == NULL || sel == dirlist_parent) break; info_show = 0; if((t = dirlist_get(1)) == sel) @@ -396,6 +420,7 @@ int browse_key(int ch) { void browse_init(struct dir *cur) { pstate = ST_BROWSE; + message = NULL; dirlist_open(cur); } -- GitLab