Commit Diff


commit - 3b5f459ef42c1d975ca5f15ed6402b5658f779f4
commit + 1577540cfba6ba170eb61e67601af3c8fde3b9e6
blob - a0b1ce16d95d70b3bc36ff9a2e5d943fe5aaa938
blob + fbeff6d3abbfb029a41926db3f3c1c74b8450203
--- defaults.c
+++ defaults.c
@@ -63,6 +63,10 @@ struct lineprefix line_prefixes[] = {
 	[LINE_COMPL_CURRENT] =	{"", ""},
 
 	[LINE_HELP] =		{"", ""},
+
+	[LINE_DOWNLOAD] =	{" Fetching ", "          "},
+	[LINE_DOWNLOAD_DONE] =	{" Done     ", "          "},
+	[LINE_DOWNLOAD_INFO] =	{" ", " "},
 };
 
 struct line_face line_faces[] = {
@@ -169,6 +173,23 @@ struct line_face line_faces[] = {
 		.pair = PHELP,
 		.trail_pair = PHELP_TRAIL,
 	},
+
+	/* download */
+	[LINE_DOWNLOAD] = {
+		.prfx_pair = PDOWNLOAD_PRFX,
+		.pair = PDOWNLOAD,
+		.trail_pair = PDOWNLOAD_TRAIL
+	},
+	[LINE_DOWNLOAD_DONE] = {
+		.prfx_pair = PDOWNLOAD_DONE_PRFX,
+		.pair = PDOWNLOAD_DONE,
+		.trail_pair = PDOWNLOAD_DONE_TRAIL
+	},
+	[LINE_DOWNLOAD_INFO] = {
+		.prfx_pair = PDOWNLOAD_INFO_PRFX,
+		.pair = PDOWNLOAD_INFO,
+		.trail_pair = PDOWNLOAD_INFO_TRAIL
+	},
 };
 
 struct tab_face tab_face = {
@@ -189,6 +210,12 @@ struct body_face body_face = {
 	.lbg = -1, .lfg = -1,
 	.bg  = -1, .fg  = -1,
 	.rbg = -1, .rfg = -1,
+};
+
+struct download_face download_face = {
+	.bg = -1,
+	.fg = -1,
+	.attr = A_NORMAL,
 };
 
 struct modeline_face modeline_face = {
@@ -231,6 +258,11 @@ struct mapping {
 
 	/* help */
 	{"help",	LINE_HELP},
+
+	/* download */
+	{"download.ongoing",	LINE_DOWNLOAD},
+	{"download.done",	LINE_DOWNLOAD_DONE},
+	{"download.info",	LINE_DOWNLOAD_INFO},
 };
 
 static struct mapping *
@@ -246,7 +278,6 @@ mapping_by_name(const char *name)
 	return NULL;
 }
 
-
 static inline void
 global_set_key(const char *key, void (*fn)(struct buffer*))
 {
@@ -595,6 +626,11 @@ config_setcolor(int bg, const char *name, int prfx, in
 			body_face.fg = line;
 			body_face.rfg = trail;
 		}
+	} else if (!strcmp(name, "download")) {
+		if (bg)
+			download_face.bg = prfx;
+		else
+			download_face.fg = prfx;
 	} else if (!strcmp(name, "minibuffer")) {
 		if (bg)
 			minibuffer_face.bg = prfx;
@@ -640,6 +676,8 @@ config_setattr(const char *name, int prfx, int line, i
 		f->prfx_attr = prfx;
 		f->attr = line;
 		f->trail_attr = trail;
+	} else if (!strcmp(name, "download")) {
+		download_face.attr = prfx;
 	} else if (!strcmp(name, "minibuffer")) {
 		minibuffer_face.attr = prfx;
 	} else if (!strcmp(name, "modeline")) {
@@ -703,6 +741,10 @@ config_apply_style(void)
 	tl_init_pair(colors, PBRIGHT, body_face.rfg, body_face.rbg);
 	body_face.right = COLOR_PAIR(PBRIGHT);
 
+	/* download */
+	tl_init_pair(colors, PDOWNLOAD_WIN, download_face.fg, download_face.bg);
+	download_face.background = COLOR_PAIR(PDOWNLOAD_WIN) | download_face.attr;
+
 	/* modeline */
 	tl_init_pair(colors, PMODELINE, modeline_face.fg, modeline_face.bg);
 	modeline_face.background = COLOR_PAIR(PMODELINE) | modeline_face.attr;
blob - 3cba5204c6090a919e9696a2f3e47017b27aa334
blob + d6f309f1e81cbc284fc8df38ac3bbe09c1926ad1
--- defaults.h
+++ defaults.h
@@ -66,6 +66,12 @@ struct body_face {
 };
 extern struct body_face body_face;
 
+struct download_face {
+	int bg, fg, attr;
+	int background;
+};
+extern struct download_face download_face;
+
 struct modeline_face {
 	int bg, fg, attr;
 	int background;
blob - 63410a1f03f784a88dde11a6efcbba36c07f66d6
blob + 9d708132fdd258da8fa1edb5c800afb742f9f820
--- downloads.c
+++ downloads.c
@@ -32,7 +32,7 @@ no_downloads()
 	if ((l = calloc(1, sizeof(*l))) == NULL)
 		abort();
 
-	l->type = LINE_HELP;
+	l->type = LINE_DOWNLOAD_INFO;
 	l->line = strdup("No downloads");
 
 	TAILQ_INSERT_TAIL(&downloadwin.page.head, l, lines);
@@ -59,7 +59,10 @@ recompute_downloads(void)
 
 		fmt_scaled(d->bytes, buf);
 
-		l->type = LINE_HELP;
+		l->type = LINE_DOWNLOAD;
+		if (d->fd == -1)
+			l->type = LINE_DOWNLOAD_DONE;
+
 		l->line = strdup(d->path);
 		l->alt = strdup(buf);
 
blob - c8af1bde86cf787c02f3005817bfb3a87a78a7ee
blob + 9dfc3ba2b2baaef7923eb1b8ab8420ff58c01bb3
--- telescope.h
+++ telescope.h
@@ -97,6 +97,11 @@ enum line_type {
 
 	/* help */
 	LINE_HELP,
+
+	/* download */
+	LINE_DOWNLOAD,
+	LINE_DOWNLOAD_DONE,
+	LINE_DOWNLOAD_INFO,
 };
 
 /* for lines: mark as hidden */
blob - 7b27a983d7361174f628a5f797108e126415826c
blob + 301dbc78589b9db6f31e69ef46ca1dc759430288
--- ui.c
+++ ui.c
@@ -437,7 +437,10 @@ print_vline_descr(int width, WINDOW *window, struct vl
 
 	if (vl->parent->type != LINE_COMPL &&
 	    vl->parent->type != LINE_COMPL_CURRENT &&
-	    vl->parent->type != LINE_HELP)
+	    vl->parent->type != LINE_HELP &&
+	    vl->parent->type != LINE_DOWNLOAD &&
+	    vl->parent->type != LINE_DOWNLOAD_DONE &&
+	    vl->parent->type != LINE_DOWNLOAD_INFO)
 		return;
 
 	if (vl->parent->alt == NULL)
@@ -446,10 +449,16 @@ print_vline_descr(int width, WINDOW *window, struct vl
 	(void)y;
 	getyx(window, y, x);
 
-	if (vl->parent->type == LINE_HELP)
-		goal = 8;
-	else
+	switch (vl->parent->type) {
+	case LINE_HELP:
+	case LINE_DOWNLOAD:
+	case LINE_DOWNLOAD_DONE:
+	case LINE_DOWNLOAD_INFO:
+		goal = 8;
+		break;
+	default:
 		goal = width/2;
+	}
 
 	if (goal <= x)
 		wprintw(window, " ");
@@ -1110,6 +1119,7 @@ ui_init()
 		return 0;
 
 	wbkgd(body, body_face.body);
+	wbkgd(download, download_face.background);
 	wbkgd(echoarea, minibuffer_face.background);
 
 	update_x_offset();
blob - 145069e54bea933d47bcd2dca0bb2c984bfd151c
blob + 85ce1c100a10ea58bde4ef9f458428f4452f0ed3
--- ui.h
+++ ui.h
@@ -100,6 +100,20 @@ enum pairs {
 	PHELP,
 	PHELP_TRAIL,
 
+	PDOWNLOAD_PRFX,
+	PDOWNLOAD,
+	PDOWNLOAD_TRAIL,
+
+	PDOWNLOAD_DONE_PRFX,
+	PDOWNLOAD_DONE,
+	PDOWNLOAD_DONE_TRAIL,
+
+	PDOWNLOAD_INFO_PRFX,
+	PDOWNLOAD_INFO,
+	PDOWNLOAD_INFO_TRAIL,
+
+	PDOWNLOAD_WIN,
+
 	PMODELINE,
 
 	PMINIBUF,
blob - 6fd7a38bb0ef087bbca6a041f93fb5abbdefc022
blob + 7cf9b8af5ba28dda0dbf628cf0c5cdc7a7491f40
--- wrap.c
+++ wrap.c
@@ -278,6 +278,9 @@ wrap_page(struct buffer *buffer, int width)
 		case LINE_COMPL:
 		case LINE_COMPL_CURRENT:
 		case LINE_HELP:
+		case LINE_DOWNLOAD:
+		case LINE_DOWNLOAD_DONE:
+		case LINE_DOWNLOAD_INFO:
 			wrap_one(buffer, prfx, l, width);
 			break;
 		}