seamus

commit 432a2e0d763d579ca49a8df39e3f2bab91e1998b

Author: Pedro Lucas Porcellis <porcellis@eletrotupi.com>

ui: move rendering progress bar to its own function as well

 src/ui.c | 85 +++++++++++++++++++++++++++++++++------------------------


diff --git a/src/ui.c b/src/ui.c
index 1575acd21966b194ec3ee4c6fc9fb6ae68dbedd5..e8e0d2d2ed996a6c185d9d769791d59787edfeb4 100644
--- a/src/ui.c
+++ b/src/ui.c
@@ -26,6 +26,8 @@ static int render_status_window(TickitWindow *win, TickitEventFlags flags, void *_info, void *data);
 static int render_main_window(TickitWindow *win, TickitEventFlags flags, void *_info, void *data);
 static int render_queue(struct seamus_frontend *seamus, TickitRenderBuffer *render_buffer);
 static int render_library(struct seamus_frontend *seamus, TickitRenderBuffer *render_buffer);
+static void render_progress_bar(TickitWindow *win, TickitRenderBuffer *render_buffer,
+	struct seamus_frontend *seamus);
 
 int
 tickit_init(struct seamus_frontend *s)
@@ -519,56 +521,67 @@ 	tickit_renderbuffer_goto(rb, row + 2, col);
 	tickit_renderbuffer_text(rb, "\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98");
 }
 
-static int
-render_status_window(TickitWindow *win, TickitEventFlags flags, void *_info, void *data)
+static void
+render_progress_bar(TickitWindow *win, TickitRenderBuffer *render_buffer,
+	struct seamus_frontend *seamus)
 {
-	(void)win;
-	(void)flags;
-	TickitExposeEventInfo *info = _info;
-	TickitRenderBuffer *render_buffer = info->rb;
-	struct seamus_frontend *seamus = (struct seamus_frontend*) data;
+	if (!seamus->status) return;
 
-	tickit_renderbuffer_eraserect(render_buffer, &info->rect);
+	int bar_width = tickit_window_cols(win);
 
-	int r = fetch_current_status(seamus);
+	if (bar_width > 60) {
+		bar_width = 40;
+	}
 
-	// Progress bar
-	if (seamus->status) {
-		int bar_width = tickit_window_cols(win);
-		if (bar_width > 60) bar_width = 40;
-		if (bar_width < 10) bar_width = 10;
+	if (bar_width < 10) {
+		bar_width = 10;
+	}
+
+	int filled = 0;
+	if (seamus->status->total_time > 0) {
+		filled = (int)((double)seamus->status->elapsed_time /
+			seamus->status->total_time * bar_width);
+	}
+
+	if (filled > bar_width) {
+		filled = bar_width;
+	}
 
-		int filled = 0;
+	tickit_renderbuffer_goto(render_buffer, 1, 0);
 
-		if (seamus->status->total_time > 0) {
-			filled = (int) ((double)seamus->status->elapsed_time /
-				seamus->status->total_time * bar_width);
-		}
+	tickit_renderbuffer_savepen(render_buffer);
+
+	TickitPen *bar_pen = tickit_pen_new_attrs(
+		TICKIT_PEN_FG, 6,
+		0);
 
-		if (filled > bar_width) {
-			filled = bar_width;
-		}
+	tickit_renderbuffer_setpen(render_buffer, bar_pen);
 
-		tickit_renderbuffer_goto(render_buffer, 1, 0);
+	for (int i = 0; i < filled; i++) {
+		tickit_renderbuffer_text(render_buffer, "\xe2\x96\x88");
+	}
 
-		tickit_renderbuffer_savepen(render_buffer);
+	for (int i = filled; i < bar_width; i++) {
+		tickit_renderbuffer_text(render_buffer, "\xe2\x96\x91");
+	}
 
-		TickitPen *bar_pen = tickit_pen_new_attrs(
-			TICKIT_PEN_FG, 6,
-			0);
+	tickit_renderbuffer_restore(render_buffer);
+}
 
-		tickit_renderbuffer_setpen(render_buffer, bar_pen);
+static int
+render_status_window(TickitWindow *win, TickitEventFlags flags, void *_info, void *data)
+{
+	(void)win;
+	(void)flags;
+	TickitExposeEventInfo *info = _info;
+	TickitRenderBuffer *render_buffer = info->rb;
+	struct seamus_frontend *seamus = (struct seamus_frontend*) data;
 
-		for (int i = 0; i < filled; i++) {
-			tickit_renderbuffer_text(render_buffer, "\xe2\x96\x88");
-		}
+	tickit_renderbuffer_eraserect(render_buffer, &info->rect);
 
-		for (int i = filled; i < bar_width; i++) {
-			tickit_renderbuffer_text(render_buffer, "\xe2\x96\x91");
-		}
+	int r = fetch_current_status(seamus);
 
-		tickit_renderbuffer_restore(render_buffer);
-	}
+	render_progress_bar(win, render_buffer, seamus);
 
 	const char *pause_desc =
 		seamus->status->state == MPD_STATE_PLAY ? "Pause" : "Play";